SAML 애플리케이션 접근 제어
이 페이지에서는 Teleport에서 SAML IdP 서비스 프로바이더 리소스(SAML 애플리케이션)에 대한 접근을 관리하는 방법을 설명합니다. Teleport SAML IdP를 처음 사용하신다면, 먼저 Teleport를 SAML IdP로 설정하는 방법을 알아보시기 바랍니다.
이 페이지에서는 Teleport에서 SAML IdP 서비스 프로바이더 리소스(SAML 애플리케이션)에 대한 접근을 관리하는 방법을 설명합니다.
Teleport SAML IdP를 처음 사용하신다면, 먼저 Teleport를 SAML IdP로 설정하는 방법을 알아보시기 바랍니다.
작동 방식#
SAML IdP 서비스 프로바이더 리소스에 대한 사용자 접근은 두 가지 사용 사례로 분류할 수 있습니다:
- SAML IdP 서비스 프로바이더 리소스 관리. 예를 들어, Teleport 관리자가 SAML IdP 서비스 프로바이더 리소스를 생성하거나 업데이트하려는 경우.
- SAML 서비스 프로바이더에 로그인. 예를 들어, Teleport 사용자가 Teleport로 인증하여 SAML IdP 서비스 프로바이더에 로그인하려는 경우.
두 경우 모두, saml_idp_service_provider 리소스를 대상으로 하는 허용/거부 규칙과 역할 app_labels와 saml_idp_service_provider 리소스 레이블을 매칭하는 레이블 매처를 가진 Teleport 역할을 사용하여 접근을 설정할 수 있습니다.
다른 Teleport 역할 버전 간의 RBAC 동작#
Teleport SAML IdP는 역할 버전 8과 역할 버전 7 이하에서 서비스 프로바이더 리소스에 다른 RBAC 로직을 적용합니다.
역할 버전 7 이하에서는 saml_idp_service_provider 리소스 접근에 다음과 같은 접근 제어가 적용됩니다:
- IdP를 활성화하는 역할 옵션:
spec.options.idp.saml.enabled: true/false. - IdP를 활성화하는 클러스터 인증 기본 설정:
spec.idp.saml.enabled: true/false. - 리소스 규칙
spec.allow/deny.rules.resources.saml_idp_service_provider. 관리자 작업에만 적용됩니다.read,list동사를 가진 허용 규칙이 암묵적으로 적용됩니다.read,list동사를 가진 거부 규칙이 암묵적 허용보다 우선합니다.
- 세션별 MFA:
spec.options.require_session_mfa: true/false.
Teleport 역할 버전 8(Teleport 버전 18.0과 함께 릴리즈)에서는 다음 RBAC 변경 사항이 도입되었습니다:
app_labels를 기반으로 한 레이블 매처.saml_idp_service_provider를 대상으로 하는 동사가 있는 리소스 규칙이 이제 리소스 접근과 관리자 작업 모두에 적용됩니다.- SAML IdP 세션에 대한 디바이스 신뢰(Device Trust).
역할 옵션 spec.options.idp.saml.enabled: true/false는 역할 버전 8부터 더 이상 지원되지 않습니다.
세션별 MFA는 모든 역할 버전에서 지원됩니다.
RBAC 우선순위#
사용자에게 최신 역할(버전 8)과 이전 버전 역할(버전 7 이하)이 동시에 할당될 수 있습니다. 사용자에게 역할 버전 7과 8이 모두 할당된 경우, 버전 8의 거부 규칙이 우선합니다.
예를 들어:
- 역할 버전 7이 접근을 거부하면, 접근이 거부됩니다.
- 역할 버전 7이 접근을 허용하지만 역할 버전 8이 접근을 거부하면, 접근이 거부됩니다.
- 역할 버전 7이 접근을 허용하지만 역할 버전 8이 명시적으로 접근을 허용하지 않으면(앱 레이블 매칭을 통해), 접근이 거부됩니다.
- 역할 버전 7이 접근을 허용하고 역할 버전 8도 접근을 허용하면, 접근이 허용됩니다.
아래 표는 버전 7과 8의 두 역할이 각각 사용자에게 할당된 경우의 적용 가능한 RBAC 예제를 몇 가지 더 보여줍니다.
| 역할 v7 | 역할 v8 | 결과 |
|---|---|---|
options: |
allow: |
❌ 접근 불가. |
options: |
deny: |
❌ 접근 불가 |
options: |
allow: |
❌ 접근 불가 |
options: |
allow: |
✅ 전체 접근 |
| 사용자에게 할당된 버전 7 역할 없음 | allow: |
✅ 전체 접근 |
options: |
allow: |
✅ env:dev 리소스 레이블과 일치하는 SAML 앱 접근 |
options: |
사용자에게 할당된 버전 8 역할 없음 | ✅ 전체 접근 |
중요 - 관리자 작업:
saml_idp_service_provider리소스는 아직 관리자 작업에 대한 MFA 및 디바이스 신뢰를 지원하지 않습니다.
역할 예제#
SAML IdP 서비스 프로바이더 리소스에 접근하거나 관리할 수 있는 권한을 부여하는 Teleport 역할 예제입니다.
SAML IdP 서비스 프로바이더 리소스 관리 역할#
이 경우, 역할은 필요에 따라 create,update,read,list,delete 중 하나 또는 전부를 사용하여 saml_idp_service_provider 리소스를 대상으로 해야 합니다.
역할은 또한 saml_idp_service_provider 리소스에 설정된 리소스 레이블과 일치하는 app_labels에 대한 접근도 부여해야 합니다.
saml_idp_service_provider 리소스 접근 동사:
kind: role
version: v8
metadata:
name: saml-resource-manager
spec:
allow:
app_labels:
'env': 'dev' # 이 레이블은 saml_idp_service_provider 리소스 레이블과 일치해야 합니다
rules:
- resources:
- saml_idp_service_provider
verbs:
- read
- list
- create
- update
- delete
사용자가 SAML IdP 서비스 프로바이더에 로그인할 수 있도록 하는 역할#
이 경우, 최소한 사용자는 saml_idp_service_provider 리소스에 대한 read,list 접근 권한이 필요하며, saml_idp_service_provider 리소스에 정의된 리소스 레이블과 일치하는 app_labels 값이 있어야 합니다.
리소스 레이블이 역할 app_labels와 일치하는 경우:
kind: role
version: v8
metadata:
name: saml-access
spec:
allow:
app_labels:
'env': 'dev' # 이 레이블은 saml_idp_service_provider 리소스 레이블과 일치해야 합니다
rules:
- resources:
- saml_idp_service_provider
verbs:
- read
- list
options:
device_trust_mode: required
require_session_mfa: true
클러스터 수준에서 SAML ID 공급자 비활성화#
클러스터 수준에서 ID 공급자에 대한 접근을 비활성화하려면, 다음 설정으로 cluster_auth_preference 객체를 생성하거나 업데이트합니다:
kind: cluster_auth_preference
metadata:
name: cluster-auth-preference
spec:
...
idp:
saml:
enabled: false
...
version: v2
이렇게 하면 역할 수준 권한에 관계없이 모든 사용자에 대해 SAML ID 공급자 접근이 비활성화됩니다.
