InfoGrab Docs

데스크톱을 위한 역할 기반 접근 제어

요약

Teleport의 RBAC를 통해 관리자는 Teleport에 연결된 Windows 데스크톱에 대한 세분화된 접근 정책을 설정할 수 있습니다. Teleport의 role 리소스는 데스크톱 접근 제어를 위한 다음 옵션을 제공합니다:

Teleport의 RBAC를 통해 관리자는 Teleport에 연결된 Windows 데스크톱에 대한 세분화된 접근 정책을 설정할 수 있습니다.

Teleport의 role 리소스는 데스크톱 접근 제어를 위한 다음 옵션을 제공합니다:

kind: role
version: v5
metadata:
  name: developer
spec:
  options:
    # 사용자의 데스크톱 세션 녹화 여부를 지정합니다.
    # 사용자의 역할 중 하나 이상이 녹화를 활성화한 경우 데스크톱 세션 녹화가 활성화됩니다.
    # 지정하지 않으면 기본적으로 true입니다.
    # auth_service.session_recording이 teleport.yaml에서 'off'로 설정되거나
    # 클러스터의 session_recording_config 리소스가 'mode: off'로 설정된 경우
    # 데스크톱 세션은 절대 녹화되지 않습니다.
    record_session:
      desktop: true

    # 원격 데스크톱과의 클립보드 공유 허용 여부를 지정합니다
    # (지원되는 브라우저 또는 Teleport Connect 필요).
    # 지정하지 않으면 기본적으로 true입니다.
    # 사용자의 역할 중 하나 이상이 클립보드를 비활성화한 경우 비활성화됩니다.
    desktop_clipboard: true

    # 로컬 머신에서 원격 데스크톱으로 디렉터리 공유 허용 여부를 지정합니다
    # (지원되는 브라우저 또는 Teleport Connect 필요).
    # 지정하지 않으면 기본적으로 true입니다.
    # 사용자의 역할 중 하나 이상이 디렉터리 공유를 비활성화한 경우 비활성화됩니다.
    desktop_directory_sharing: 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 구성은 test.dev.example.com이라는 Windows 데스크톱에 environment: 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.168.1.105:3389
  domain: example.com
  host_id: 307e091b-7f6b-42e0-b78d-3362ad10b55d
  non_ad: false
version: v3

이 경우, 정규 표현식은 192.168.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 Desktop Service는 주기적으로 LDAP 서버를 쿼리하여 Windows 데스크톱을 자동으로 검색하고 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

또한, 사용자는 Teleport 레이블로 변환될 LDAP 속성을 구성할 수 있습니다. 예를 들어, 다음 Desktop Service 구성을 고려하세요:

discovery:
  label_attributes:
    - location

location 속성 값이 Oakland인 데스크톱의 경우, Teleport는 ldap/location 키와 Oakland 값을 가진 레이블을 적용합니다.

이 정책을 통해 검색된 모든 호스트에 적용되는 정적 레이블 세트를 지정할 수도 있습니다:

windows_desktop_service:
  enabled: true
  discovery_configs:
    - base_dn: 'OU=Engineering,OU=Servers,DC=example,DC=com'
      labels:
        team: engineering
    - base_dn: 'OU=Sales,OU=Servers,DC=example,DC=com'
      labels:
         team: sales

이 예시에서, Engineering OU의 모든 호스트에는 team: engineering이 있고 Sales OU의 호스트에는 team: sales가 있습니다.

로그인#

windows_desktop_logins 역할 설정은 역할이 접근을 허용하는 Windows 사용자 계정 목록입니다. 로컬 사용자의 경우, {{internal.windows_logins}} 변수를 사용자의 windows_logins 트레이트의 플레이스홀더로 사용할 수 있습니다. windows_logins 트레이트는 사용자가 tctl users add alice --windows-logins=Administrator,DBUser로 생성될 때 지정할 수 있습니다.

새 클러스터는 자동으로 미리 설정된 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의 RBAC를 통해 관리자는 Teleport에 연결된 Windows 데스크톱에 대한 세분화된 접근 정책을 설정할 수 있습니다. Teleport의 role 리소스는 데스크톱 접근 제어를 위한 다음 옵션을 제공합니다:

Teleport의 RBAC를 통해 관리자는 Teleport에 연결된 Windows 데스크톱에 대한 세분화된 접근 정책을 설정할 수 있습니다.

Teleport의 role 리소스는 데스크톱 접근 제어를 위한 다음 옵션을 제공합니다:

kind: role
version: v5
metadata:
  name: developer
spec:
  options:
    # 사용자의 데스크톱 세션 녹화 여부를 지정합니다.
    # 사용자의 역할 중 하나 이상이 녹화를 활성화한 경우 데스크톱 세션 녹화가 활성화됩니다.
    # 지정하지 않으면 기본적으로 true입니다.
    # auth_service.session_recording이 teleport.yaml에서 'off'로 설정되거나
    # 클러스터의 session_recording_config 리소스가 'mode: off'로 설정된 경우
    # 데스크톱 세션은 절대 녹화되지 않습니다.
    record_session:
      desktop: true

    # 원격 데스크톱과의 클립보드 공유 허용 여부를 지정합니다
    # (지원되는 브라우저 또는 Teleport Connect 필요).
    # 지정하지 않으면 기본적으로 true입니다.
    # 사용자의 역할 중 하나 이상이 클립보드를 비활성화한 경우 비활성화됩니다.
    desktop_clipboard: true

    # 로컬 머신에서 원격 데스크톱으로 디렉터리 공유 허용 여부를 지정합니다
    # (지원되는 브라우저 또는 Teleport Connect 필요).
    # 지정하지 않으면 기본적으로 true입니다.
    # 사용자의 역할 중 하나 이상이 디렉터리 공유를 비활성화한 경우 비활성화됩니다.
    desktop_directory_sharing: 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 구성은 test.dev.example.com이라는 Windows 데스크톱에 environment: 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.168.1.105:3389
  domain: example.com
  host_id: 307e091b-7f6b-42e0-b78d-3362ad10b55d
  non_ad: false
version: v3

이 경우, 정규 표현식은 192.168.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 Desktop Service는 주기적으로 LDAP 서버를 쿼리하여 Windows 데스크톱을 자동으로 검색하고 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

또한, 사용자는 Teleport 레이블로 변환될 LDAP 속성을 구성할 수 있습니다. 예를 들어, 다음 Desktop Service 구성을 고려하세요:

discovery:
  label_attributes:
    - location

location 속성 값이 Oakland인 데스크톱의 경우, Teleport는 ldap/location 키와 Oakland 값을 가진 레이블을 적용합니다.

이 정책을 통해 검색된 모든 호스트에 적용되는 정적 레이블 세트를 지정할 수도 있습니다:

windows_desktop_service:
  enabled: true
  discovery_configs:
    - base_dn: 'OU=Engineering,OU=Servers,DC=example,DC=com'
      labels:
        team: engineering
    - base_dn: 'OU=Sales,OU=Servers,DC=example,DC=com'
      labels:
         team: sales

이 예시에서, Engineering OU의 모든 호스트에는 team: engineering이 있고 Sales OU의 호스트에는 team: sales가 있습니다.

로그인#

windows_desktop_logins 역할 설정은 역할이 접근을 허용하는 Windows 사용자 계정 목록입니다. 로컬 사용자의 경우, {{internal.windows_logins}} 변수를 사용자의 windows_logins 트레이트의 플레이스홀더로 사용할 수 있습니다. windows_logins 트레이트는 사용자가 tctl users add alice --windows-logins=Administrator,DBUser로 생성될 때 지정할 수 있습니다.

새 클러스터는 자동으로 미리 설정된 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

사용자에 대한 데스크톱 세션 녹화를 비활성화하려면, 사용자의 모든 역할이 녹화를 비활성화해야 합니다. 즉, 녹화를 활성화하는 단일 역할만 있어도 세션이 녹화됩니다.