SAML 애플리케이션 접근 제어
Teleport v18.9이 페이지에서는 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 공급자 접근이 비활성화됩니다.