Teleport의 RBAC는 관리자가 Teleport에 연결된 Windows 데스크톱에 대한 세분화된 액세스 정책을 설정할 수 있도록 합니다.
Teleport의 role
리소스는 데스크톱 액세스를 제어하기 위한 다음 옵션을 제공합니다:
kind: role
version: v4
metadata:
name: developer
spec:
options:
# 사용자의 데스크톱 세션을 기록할지 여부를 지정합니다.
# 사용자의 역할 중 하나 이상이 기록을 활성화하면 데스크톱 세션 기록이 활성화됩니다. 지정하지 않으면 기본값은 true입니다.
# auth_service.session_recording이 teleport.yaml에서 'off'로 설정되거나 클러스터의 session_recording_config
# 리소스가 'mode: off'로 설정된 경우 데스크톱 세션은 절대 기록되지 않습니다.
record_session:
desktop: true
# 원격 데스크톱과 클립보드 공유를 허용해야 하는지 여부를 지정합니다.
# (지원되는 브라우저가 필요합니다). 지정하지 않으면 기본값은 true입니다.
# 사용자의 역할 중 하나 이상이 클립보드를 비활성화하면 클립보드가 비활성화됩니다.
desktop_clipboard: true
# 연결 시 로컬 사용자 생성 여부를 지정합니다.
# 기본적으로 이 기능은 비활성화되어 있으며 사용자는 이미 존재해야 합니다.
# 참고: 이는 로컬 사용자에게만 적용되며 Active Directory 환경에서는 지원되지 않습니다.
create_desktop_user: true
allow:
# 이 역할이 액세스할 수 있는 데스크톱을 위한 레이블 선택기입니다.
windows_desktop_labels:
environment: ["dev", "stage"]
# 이 역할로 연결할 수 있는 Windows 사용자 계정입니다.
windows_desktop_logins: ["Administrator", "{{internal.windows_logins}}"]
Teleport의 RBAC 시스템은 적절한 Active Directory 관리를 대체할 수 없습니다. Teleport에서 발급한 Windows 인증서는 유효 기간이 짧지만 전체 도메인에 적용됩니다. 각 Teleport 사용자의 역할이 필요한 Windows 로그인을 반영하도록 하며, 이러한 Windows 사용자가 제대로 보호되도록 주의해야 합니다.
Teleport에서 internal
및 external
특성의 확장 방법에 대한 정보를 비롯한 전체 Teleport 역할 참조는 Teleport 액세스 제어 참조를 참조하세요.
레이블 지정
allow
및 deny
규칙 모두 windows_desktop_labels
선택기를 지원합니다. 이러한 선택기는 데스크톱에 설정된 레이블과 일치합니다. 모든 데스크톱 레이블에 일치시키기 위해 와일드 카드("*"
)를 사용할 수 있습니다.
Windows 데스크톱은 두 가지 방법으로 레이블을 획득합니다:
- Teleport 구성 파일의
windows_desktop_service
섹션에 정의된host_labels
규칙 사용. - LDAP 사용 (LDAP를 통해 발견된 데스크톱에 한함).
host_labels
사용
다음 host_labels
구성은 Windows 데스크톱 이름 test.dev.example.com
에 environment: dev
레이블을 적용하고
desktop.prod.example.com
에 environment: prod
레이블을 적용합니다:
host_labels:
- match: '^.*\.dev\.example\.com'
labels:
environment: dev
- match: '^.*\.prod\.example\.com'
labels:
environment: prod
위의 match
규칙에 제공된 정규 표현식은 LDAP를 통해 발견된 데스크톱의 이름에 적용됩니다. 정적으로 정의된 호스트(구성의 static_hosts
섹션에 있음)는 자동 생성된 이름을 받으므로 이러한 경우 호스트 레이블 일치가 데스크톱의 addr
에 대해 적용됩니다.
정적 호스트
192.168.1.105
의 정적 호스트 정의는 다음 리소스를 생성합니다:
kind: windows_desktop
metadata:
expires: "2023-05-01T15:47:21.564561Z"
id: 1682955441565783000
labels:
teleport.dev/ad: "true"
teleport.dev/origin: config-file
name: 3362ad10b55d-static-192-168-1-105
spec:
addr: 192.68.1.105:3389
domain: example.com
host_id: 307e091b-7f6b-42e0-b78d-3362ad10b55d
non_ad: false
version: v3
이 경우 정규 표현식은 192.68.1.105:3389
에 대해 평가됩니다.
발견된 호스트
LDAP를 통해 발견된 호스트(또는 API에 의해 생성된 호스트)의 경우 정규 표현식은 이름에 대해 평가됩니다.
kind: windows_desktop
metadata:
expires: "2023-05-01T15:47:36.677008Z"
id: 1682955456680526000
labels:
teleport.dev/computer_name: EC2AMAZ-37TSM4L
teleport.dev/dns_host_name: EC2AMAZ-37TSM4L.example.com
teleport.dev/is_domain_controller: "true"
teleport.dev/origin: dynamic
teleport.dev/os: Windows Server 2019 Datacenter
teleport.dev/os_version: 10.0 (17763)
teleport.dev/ou: OU=Domain Controllers,DC=example,DC=com
teleport.dev/windows_domain: example.com
name: EC2AMAZ-37TSM4L-example-com
spec:
addr: 172.31.9.146:3389
domain: example.com
host_id: 307e091b-7f6b-42e0-b78d-3362ad10b55d
non_ad: false
version: v3
이 경우 정규 표현식은 EC2AMAZ-37TSM4L-example-com
에 대해 평가됩니다.
LDAP 사용
Teleport 데스크톱 서비스는 Windows 데스크톱을 자동으로 발견하고 LDAP 서버를 주기적으로 쿼리하여 Teleport 클러스터에 등록할 수 있습니다. 이러한 데스크톱에 레이블을 지정하는 여러 방법이 있습니다:
Teleport는 LDAP를 통해 발견된 모든 데스크톱에 다음 레이블을 자동으로 적용합니다:
레이블 | LDAP 속성 | 예시 |
---|---|---|
teleport.dev/computer_name | name | WIN-I5G06B8RT33 |
teleport.dev/dns_host_name | dNSHostName | WIN-I5G06B8RT33.example.com |
teleport.dev/os | operatingSystem | Windows Server 2012 |
teleport.dev/os_version | osVersion | 4.0 |
teleport.dev/windows_domain | 구성에서 제공됨 | example.com |
teleport.dev/is_domain_controller | primaryGroupID | true |
teleport.dev/ou | distinguishedName 에서 파생 | OU=IT,DC=goteleport,DC=com |
추가적으로 사용자는 LDAP 속성 을 구성할 수 있으며 이는 Teleport 레이블로 변환됩니다. 예를 들어 다음과 같은 데스크톱 서비스 구성을 고려하십시오:
discovery:
label_attributes:
- location
location
속성이 Oakland
인 데스크톱의 경우, Teleport는 키가 ldap/location
이고 값이 Oakland
인 레이블을 적용합니다.
로그인
windows_desktop_logins
역할 설정은 역할이 허용하는 Windows 사용자 계정을 나열합니다. 로컬 사용자의 경우 {{internal.windows_logins}}
변수를 사용하여 사용자의 windows_logins
특성에 대한 자리 표시자로 사용할 수 있습니다. 사용자가 생성될 때 tctl users add alice --windows-logins=Administrator,DBUser
로 windows_logins
특성을 지정할 수 있습니다.
새 클러스터는 기본적으로 다음과 같이 미리 설정된 access
역할을 자동으로 채웁니다:
allow:
windows_desktop_logins: ["{{internal.windows_logins}}"]
클립보드 액세스
사용자가 원격 데스크톱과 로컬 워크스테이션 간에 복사 및 붙여넣기를 하려면 클립보드 공유가 사용자를 위해 활성화되어야 합니다. desktop_clipboard
역할 옵션은 지정하지 않으면 기본적으로 활성화됩니다. Teleport 사용자에 대해 클립보드 공유를 비활성화하려면 클립보드 공유를 명시적으로 비활성화하는 역할을 적어도 하나 이상 할당해야 합니다:
desktop_clipboard: false
디렉터리 공유
Teleport 사용자는 디렉터리 공유를 사용하여 로컬 워크스테이션의 디렉터리를 원격 데스크톱과 공유할 수 있습니다.
Teleport 역할은 기본적으로 디렉터리 공유를 활성화합니다. 사용자의 Teleport 역할 중 하나라도 디렉터리 공유를 비활성화하면 해당 사용자에 대해 디렉터리 공유가 비활성화됩니다.
Teleport 사용자에 대해 디렉터리 공유를 비활성화하려면 role.yaml
이라는 파일에 다음과 유사한 역할을 정의합니다:
kind: role
version: v5
metadata:
name: "no-sharing"
spec:
options:
desktop_directory_sharing: false
세션 기록
Teleport 사용자의 데스크톱 세션을 기록하려면 다음 두 가지가 모두 참이어야 합니다:
- 세션 기록이 활성화되어야 합니다(즉,
off
로 설정되지 않아야 함). 이 설정은teleport.yaml
의auth_service.session_recording
에 있으며, 클러스터의session_recording_config
리소스를 통해 동적으로 구성할 수도 있습니다. - 사용자의 역할이 데스크톱 세션 기록을 활성화해야 합니다.
기본적으로 데스크톱 세션 기록은 Teleport 역할에서 비활성화되지 않는 한 활성화된 것으로 간주됩니다:
record_session:
desktop: false
사용자에 대해 데스크톱 세션 기록을 비활성화하려면 사용자의 모든 역할이 이를 비활성화해야 합니다. 즉, 녹음을 활성화하는 단일 역할이 존재하는 것만으로도 세션 기록이 가능해집니다.