Infograb logo
데스크톱에 대한 역할 기반 액세스 제어

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}}"]
Active Directory 구성

Teleport의 RBAC 시스템은 적절한 Active Directory 관리를 대체할 수 없습니다. Teleport에서 발급한 Windows 인증서는 유효 기간이 짧지만 전체 도메인에 적용됩니다. 각 Teleport 사용자의 역할이 필요한 Windows 로그인을 반영하도록 하며, 이러한 Windows 사용자가 제대로 보호되도록 주의해야 합니다.

Teleport에서 internalexternal 특성의 확장 방법에 대한 정보를 비롯한 전체 Teleport 역할 참조는 Teleport 액세스 제어 참조를 참조하세요.

레이블 지정

allowdeny 규칙 모두 windows_desktop_labels 선택기를 지원합니다. 이러한 선택기는 데스크톱에 설정된 레이블과 일치합니다. 모든 데스크톱 레이블에 일치시키기 위해 와일드 카드("*")를 사용할 수 있습니다.

Windows 데스크톱은 두 가지 방법으로 레이블을 획득합니다:

  • Teleport 구성 파일의 windows_desktop_service 섹션에 정의된 host_labels 규칙 사용.
  • LDAP 사용 (LDAP를 통해 발견된 데스크톱에 한함).

host_labels 사용

다음 host_labels 구성은 Windows 데스크톱 이름 test.dev.example.comenvironment: dev 레이블을 적용하고 desktop.prod.example.comenvironment: 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_namenameWIN-I5G06B8RT33
teleport.dev/dns_host_namedNSHostNameWIN-I5G06B8RT33.example.com
teleport.dev/osoperatingSystemWindows Server 2012
teleport.dev/os_versionosVersion4.0
teleport.dev/windows_domain구성에서 제공됨example.com
teleport.dev/is_domain_controllerprimaryGroupIDtrue
teleport.dev/oudistinguishedName에서 파생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,DBUserwindows_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.yamlauth_service.session_recording에 있으며, 클러스터의 session_recording_config 리소스를 통해 동적으로 구성할 수도 있습니다.
  • 사용자의 역할이 데스크톱 세션 기록을 활성화해야 합니다.

기본적으로 데스크톱 세션 기록은 Teleport 역할에서 비활성화되지 않는 한 활성화된 것으로 간주됩니다:

record_session:
  desktop: false

사용자에 대해 데스크톱 세션 기록을 비활성화하려면 사용자의 모든 역할이 이를 비활성화해야 합니다. 즉, 녹음을 활성화하는 단일 역할이 존재하는 것만으로도 세션 기록이 가능해집니다.

Teleport 원문 보기