InfoGrab DocsInfoGrab Docs

Device Trust 적용

요약

Device Trust는 클러스터 전체 또는 역할 기반 적용을 사용하여 SSH, 데이터베이스 및 Kubernetes 리소스를 완전히 지원합니다. 앱과 데스크톱은 역할 기반 적용을 통해 신뢰할 수 있는 디바이스를 적용할 수 있습니다.

지원 리소스

Device Trust는 클러스터 전체 또는 역할 기반 적용을 사용하여 SSH, 데이터베이스 및 Kubernetes 리소스를 완전히 지원합니다.

앱과 데스크톱은 역할 기반 적용을 통해 신뢰할 수 있는 디바이스를 적용할 수 있습니다. 자세한 내용은 웹 애플리케이션 지원데스크톱 지원 섹션을 참조하세요.

디바이스 모드 "required"로 보호된 리소스는 사용자의 신원을 확인하고 필요한 역할을 적용하는 것 외에도 신뢰할 수 있는 디바이스의 사용을 강제합니다. 또한, 신뢰할 수 있는 디바이스를 사용하는 사용자는 디바이스 정보가 포함된 감사 기록을 남깁니다.

Device Trust 적용은 device_trust_mode 인증 설정으로 표현되는 다음 세 가지 작동 모드로 구성할 수 있습니다:

  • off - Device Trust를 비활성화합니다. 디바이스 인증이 수행되지 않으며 디바이스 인식 감사 로그가 없습니다.
  • optional - 디바이스 인증 및 디바이스 인식 감사를 활성화하지만, 리소스에 액세스하기 위해 신뢰할 수 있는 디바이스를 요구하지 않습니다.
  • required - 디바이스 인증 및 디바이스 인식 감사를 활성화합니다. 또한 모든 SSH, 데이터베이스 및 Kubernetes 연결에 신뢰할 수 있는 디바이스를 요구합니다.
  • required-for-humans - 디바이스 인증 및 디바이스 인식 감사를 활성화합니다. 또한 인간 사용자에 한해 모든 SSH, 데이터베이스 및 Kubernetes 연결에 신뢰할 수 있는 디바이스를 요구합니다(봇은 제외됨).

사전 요구 사항#

  • 실행 중인 Teleport Enterprise 클러스터. Teleport를 시작하려면 무료 체험판에 가입하거나 데모 환경을 구성하세요.

  • tctl and tsh clients.

    Installing `tctl` and `tsh` clients
    1. Teleport 클러스터의 버전을 확인합니다. tctl and tsh clients는 Teleport 클러스터 버전보다 최대 한 개의 메이저 버전까지만 뒤처질 수 있습니다. Proxy Service의 /v1/webapi/find로 GET 요청을 보내고 JSON 쿼리 도구를 사용하여 클러스터 버전을 확인합니다. teleport.example.com:443를 Teleport Proxy Service의 웹 주소로 바꿉니다:

      $ TELEPORT_DOMAIN=teleport.example.com:443
      $ TELEPORT_VERSION="$(curl -s https://$TELEPORT_DOMAIN/v1/webapi/find | jq -r '.server_version')"
      
    2. 사용 중인 플랫폼에 대한 지침에 따라 tctl and tsh clients를 설치합니다:

Mac

     `tctl` and `tsh` clients가 포함된, 서명된 Teleport macOS .pkg 설치 프로그램을 다운로드합니다:
 
     ```code
     $ curl -O https://cdn.teleport.dev/teleport-${TELEPORT_VERSION?}.pkg
     ```

     Finder에서 `pkg` 파일을 더블 클릭하여 설치를 시작합니다.
 
     
Warning
       Homebrew를 사용하여 Teleport를 설치하는 것은 지원되지 않습니다. Homebrew의
       Teleport 패키지는 Teleport에서 유지 관리하지 않으므로 신뢰성이나 보안을
       보장할 수 없습니다.
     

Windows - Powershell

     ```code
     $ curl.exe -O https://cdn.teleport.dev/teleport-v${TELEPORT_VERSION?}-windows-amd64-bin.zip
     # Unzip the archive and move the `tctl` and `tsh` clients to your %PATH%
     # NOTE: Do not place the `tctl` and `tsh` clients in the System32 directory, as this can cause issues when using WinSCP.
     # Use %SystemRoot% (C:\Windows) or %USERPROFILE% (C:\Users\<username>) instead.
     ```
 
   

 
   

Linux

     Linux 설치판의 모든 Teleport 바이너리에는 `tctl` and `tsh` clients가 포함되어 있습니다.  RPM/DEB
     패키지 및 i386/ARM/ARM64용 다운로드를 포함한 더 많은 옵션은
     [설치 페이지](../installation/installation.mdx)를 참조하세요.
 
     ```code
     $ curl -O https://cdn.teleport.dev/teleport-v${TELEPORT_VERSION?}-linux-amd64-bin.tar.gz
     $ tar -xzf teleport-v${TELEPORT_VERSION?}-linux-amd64-bin.tar.gz
     $ cd teleport
     $ sudo ./install
     # Teleport binaries have been copied to /usr/local/bin
     ```
   

 

이 가이드는 이나 데스크톱에 대해 신뢰할 수 있는 디바이스 사용을 적용하지 않는 사전 설정된 require-trusted-device 역할을 사용합니다. 해당 지침은 각 섹션을 참조하세요.

역할 기반 신뢰할 수 있는 디바이스 적용#

역할 기반 구성은 역할 수준에서 신뢰할 수 있는 디바이스 액세스를 적용합니다. spec.options.device_trust_mode 옵션으로 구성할 수 있으며 allow 규칙의 리소스에 적용됩니다. require_session_mfa와 유사하게 작동합니다.

사용자가 Teleport로 데이터베이스, Kubernetes 클러스터 및 서버에 액세스할 때 특정 역할에 대해 인증된 디바이스 검사를 적용하려면 device_trust_mode 필드를 "required" 또는 "required-for-humans"로 설정하여 역할을 업데이트하세요. 다음 예시는 사전 설정된 require-trusted-device 역할을 업데이트합니다:

kind: role
version: v7
metadata:
  name: require-trusted-device
spec:
  options:
    device_trust_mode: "required"
  allow:
    db_labels:
      '*': '*'
    db_names:
    - '*'
    db_users:
    - '*'
    kubernetes_groups:
    - '{{internal.kubernetes_groups}}'
    - system:masters
    - developers
    - viewers
    kubernetes_labels:
      '*': '*'
    logins:
    - '{{internal.logins}}'
    node_labels:
      '*': '*'

역할 업데이트:

$ tctl create -f device-enforcement.yaml
Tip

Web UI를 사용하여 역할을 생성하고 편집할 수도 있습니다. Access -> Roles로 이동하여 Create New Role을 클릭하거나 편집할 기존 역할을 선택하십시오.

클러스터 전체 신뢰할 수 있는 디바이스 적용#

클러스터 전체 구성은 클러스터 수준에서 신뢰할 수 있는 디바이스 액세스를 적용합니다. Enterprise 클러스터는 기본적으로 optional 모드로 실행됩니다. 모드를 required로 변경하면 모든 SSH, 데이터베이스 및 Kubernetes 액세스에 신뢰할 수 있는 디바이스가 요구됩니다.

디바이스 모드 required를 활성화하려면 다음과 같이 구성을 업데이트하세요:

다음 명령어를 사용하여 클러스터 인증 기본 설정을 편집하세요:

$ tctl edit cluster_auth_preference

다음 변경 사항을 적용하세요:

kind: cluster_auth_preference
version: v2
metadata:
  name: cluster-auth-preference
spec:
  type: local
  second_factors: ["webauthn"]
  webauthn:
    rp_id: (=clusterDefaults.clusterName=)
  device_trust:
+   mode: "required" # add this line

편집기를 저장하고 닫아 변경 사항을 적용하세요.

구성이 업데이트되면 신뢰할 수 있는 디바이스 없이 SSH, 데이터베이스 및 Kubernetes에 액세스하는 것이 금지됩니다. 예를 들어, 신뢰할 수 있는 디바이스 없이 SSH 액세스를 시도하면 다음 오류가 발생합니다:

$ tsh ssh (=clusterDefaults.nodeIP=)
ERROR: ssh: rejected: administratively prohibited (unauthorized device)
신뢰할 수 있는 클러스터

신뢰할 수 있는 클러스터를 사용하여 디바이스 모드 required의 영향을 제한할 수 있습니다. required 모드의 리프 클러스터는 루트 클러스터에 동일한 제한을 적용하지 않고 모든 리소스에 대한 액세스를 적용합니다. 마찬가지로 루트 클러스터는 리프 클러스터의 리소스에 Device Trust를 적용하지 않습니다.

웹 애플리케이션 지원#

Teleport 앱 서비스는 역할 기반 적용을 통해 Device Trust를 적용할 수 있습니다.

웹 UI(Teleport v16 이상)를 사용하여 Device Trust로 보호된 앱에 액세스하려면 디바이스가 등록 및 등록되어 있는지 확인하고, Teleport Connect를 설치한 후 로그인 중 표시되는 지침을 따르세요.

또는 tsh proxy app이나 tsh app login에서 발급한 인증서를 사용할 수 있습니다.

예를 들어, 모든 env:production 앱에 Device Trust를 적용하려면 아래 역할을 require-trusted-device-apps.yaml로 저장하세요:

kind: role
version: v7
metadata:
  name: require-trusted-device-apps
spec:
  options:
    device_trust_mode: "required"
  allow:
    app_labels:
      env: production

역할을 생성하고 사용자에게 할당하세요:

$ tctl create require-trusted-device-apps.yaml
$ tctl edit users/alice
kind: user
metadata:
  name: alice
  # (...)
spec:
  roles:
  - access
  - editor
+ - require-trusted-device-apps
  # (...)
version: v2

이제 alice 사용자는 신뢰할 수 있는 디바이스를 사용해서만 env:production 앱에 액세스할 수 있습니다.

데스크톱 지원#

Teleport 데스크톱 서비스는 역할 기반 적용을 통해 Device Trust를 적용할 수 있습니다.

Device Trust로 보호된 데스크톱에 액세스하려면 디바이스가 등록 및 등록되어 있는지 확인하고, Teleport Connect를 설치한 후 로그인 중 표시되는 지침을 따르세요.

예를 들어, 모든 env:production 데스크톱에 Device Trust를 적용하려면 아래 역할을 require-trusted-device-desktops.yaml로 저장하세요:

kind: role
version: v7
metadata:
  name: require-trusted-device-desktops
spec:
  options:
    device_trust_mode: "required"
  allow:
    windows_desktop_labels:
      env: "production"
    windows_desktop_logins: ["Administrator", "alice"]

역할을 생성하고 사용자에게 할당하세요:

$ tctl create require-trusted-device-desktops.yaml
$ tctl edit users/alice
kind: user
metadata:
  name: alice
  # (...)
spec:
  roles:
  - access
  - editor
+ - require-trusted-device-desktops
  # (...)
version: v2

이제 alice 사용자는 신뢰할 수 있는 디바이스를 사용해서만 env:production 데스크톱에 액세스할 수 있습니다.

디바이스 잠금#

세션 및 신원 잠금과 유사하게, 디바이스를 tctl lock을 사용하여 잠글 수 있습니다.

잠금은 잠긴 디바이스에서 발생하는 인증서 발급 및 진행 중이거나 향후의 액세스를 차단합니다. 디바이스 잠금은 Device Trust가 활성화되어 있고 디바이스가 Teleport에 등록된 경우에만 작동합니다.

잠글 디바이스 ID 찾기:

$ tctl devices ls
Asset Tag    OS    Source Enroll Status Owner Device ID
------------ ----- ------ ------------- ----- ------------------------------------
(=devicetrust.asset_tag=) macOS        enrolled      alice (=devicetrust.device_id=)

디바이스 잠금:

$ tctl lock --device=(=devicetrust.device_id=) --ttl=12h
Created a lock with name "5444970a-39a0-4814-968d-e58b4a8fa686".

이제 해당 디바이스의 사용자가 예를 들어 SSH 서버에 액세스하려고 하면 Teleport가 액세스를 거부합니다:

$ tsh ssh (=clusterDefaults.nodeIP=)
ERROR: ssh: rejected: administratively prohibited (lock targeting Device:"(=devicetrust.device_id=)" is in force)

문제 해결#

tsh device enroll 실행 시 "binary missing signature or entitlements"#

신뢰할 수 있는 디바이스를 등록하고 사용하려면 서명 및 노터라이즈된 tsh 바이너리가 필요합니다. 이 문제를 해결하려면 macOS tsh 설치 프로그램을 다운로드하세요.

신뢰할 수 있는 디바이스 사용 시 "unauthorized device" 오류#

신뢰할 수 있는 디바이스는 Teleport가 이를 인식하기 전에 먼저 등록(register)과 enrollment 과정을 거쳐야 합니다. 등록enrollment 단계를 따르고, enrollment가 완료된 후 반드시 tsh logouttsh login을 수행하세요.

Linux에서 "Failed to open the TPM device"#

Linux 사용자는 TPM 디바이스인 /dev/tpmrm0에 대한 읽기 및 쓰기 권한이 필요합니다. 이러한 권한이 없으면 tsh는 대부분의 작업에서 sudo 프롬프트를 요구하게 됩니다.

가장 간단한 해결 방법은 사용 중인 배포판에 tss 그룹이 포함되어 있는지 확인하고 이를 OS 사용자에게 할당하는 것입니다. 이것이 불가능하거나 다른 해결책을 찾고 있다면, TPM2 Software Stack에서 제공하는 것과 유사한 udev 규칙을 생성하는 것을 권장합니다.

자동 enrollment이 작동하지 않음#

자동 enrollment 절차는 그 자동화된 특성상 일반 enrollment보다 더 엄격합니다. 추가적인 자동 enrollment 검사에는 다음이 포함됩니다:

  1. MDM 서비스에서 유래한 데이터 등 디바이스 프로필 데이터를 실제 디바이스와 대조하여 검증
  2. 디바이스가 다른 사용자에 의해 enroll되지 않았는지 검증(자동 enroll은 이미 enroll된 디바이스를 가져올 수 없습니다)

감사 로그에서 단서를 확인하세요: 실패한 "Device Enroll Token Created" 이벤트를 찾아 세부 정보의 "message" 필드를 살펴보세요.

(1)이 문제라고 의심된다면, 실제 디바이스를 해당 인벤토리 정의와 비교하세요(실제 디바이스에서 실행한 tsh device collecttctl get device/<asset_tag>). 디바이스 프로필을 조정하거나, 수동 enrollment을 수행하거나, 다음 MDM 동기화를 기다리면 문제가 해결될 수 있습니다.

(2)가 의심된다면, tctl edit device/<asset_tag>로 디바이스의 "enroll_status" 필드를 "not_enrolled"로 변경하여 디바이스를 unenroll할 수 있습니다.

App access와 "access to this app requires a trusted device"#

아래의 Web UI 문제 해결 섹션의 안내를 따르세요(Teleport v16 이상).

또는 App Access 지원에서 설명하는 tsh 명령 중 하나를 사용할 수 있습니다. 예를 들어 myapp라는 앱의 경우 tsh proxy app myapp -p 8888을 실행한 다음, 브라우저에서 http://localhost:8888을 여세요.

이미 tsh proxy app을 실행 중이거나 tsh app login으로 획득한 인증서를 사용하고 있다면, 디바이스가 등록되지 않았거나 enroll되지 않았을 가능성이 높습니다. 이 경우 위의 unauthorized device 섹션의 조언을 따르세요.

Desktop access와 "access to this app requires a trusted device"#

아래의 Web UI 문제 해결 섹션의 안내를 따르세요.

Web UI에서 신뢰할 수 있는 디바이스 인증에 실패함#

Web UI는 로그인 시 Teleport Connect를 사용하여 디바이스를 인증하려고 시도합니다. 로그인 직후 디바이스 인증을 요청받지 못했다면 아래 단계를 따르세요:

  1. 디바이스가 등록 및 enroll되었는지 확인하세요
  2. Teleport Connect를 설치하세요. Linux에서는 DEB 또는 RPM 패키지를 사용하세요(tarball은 사용자 지정 URL 핸들러를 등록하지 않습니다).
  3. Teleport Connect가 Web에서 접근하려는 것과 동일한 리소스에 접근할 수 있는지 확인하세요
  4. 클러스터 관리자에게 Device Trust가 활성화되어 있는지 문의하세요(클러스터 모드 "optional" 이상)

위 단계를 완료한 후 Web UI에서 로그아웃했다가 다시 로그인해 보세요. 오류가 지속되면 감사 로그에서 실패한 "device authenticated" 또는 "device web" 이벤트를 확인하고 이벤트 내의 실패 세부 정보를 살펴보세요.

"device web authentication IP mismatch" 오류#

감사 로그의 "IP mismatch" 오류는 디바이스 웹 인증 절차에서 수행하는 IP 검사가 실패했음을 나타냅니다. 이 경우 최종 사용자의 IP가 Teleport 배포에 올바르게 전파되지 않았을 가능성이 높습니다.

웹 UI에서 Device Trust 인가 상태 확인#

웹 UI에서 Device Trust 사용이 성공적으로 인가되면, 사용자는 화면 오른쪽 상단의 로그인된 사용자 이름 옆에 녹색 방패 아이콘을 보게 됩니다. 또한 사용자 이름을 클릭하여 사용자 메뉴를 표시하면 해당 세션이 Device Trust로 인가되었음을 나타냅니다.

사용자가 웹 UI에서 Device Trust 사용을 인가받지 못했지만 클러스터 전역 구성 또는 할당된 역할이 신뢰할 수 있는 디바이스 사용을 요구하는 경우, 사용자는 화면 오른쪽 상단의 로그인된 사용자 이름 옆에 노란색 경고 방패를 보게 됩니다. 또한 사용자 이름을 클릭하여 사용자 메뉴를 표시하면 해당 세션이 Device Trust로 인가되지 않았으며 사용자의 접근이 제한됨을 나타냅니다.

테마 Device Trust로 인가된 세션 Device Trust로 인가되지 않은 세션
라이트 device-trust-trusted-shield-light-success.png device-trust-trusted-shield-light-failure.png
다크 device-trust-trusted-shield-dark-success.png device-trust-trusted-shield-dark-failure.png

다음 단계#

Device Trust 적용

Teleport v18.9
원문 보기
요약

Device Trust는 클러스터 전체 또는 역할 기반 적용을 사용하여 SSH, 데이터베이스 및 Kubernetes 리소스를 완전히 지원합니다. 앱과 데스크톱은 역할 기반 적용을 통해 신뢰할 수 있는 디바이스를 적용할 수 있습니다.

지원 리소스

Device Trust는 클러스터 전체 또는 역할 기반 적용을 사용하여 SSH, 데이터베이스 및 Kubernetes 리소스를 완전히 지원합니다.

앱과 데스크톱은 역할 기반 적용을 통해 신뢰할 수 있는 디바이스를 적용할 수 있습니다. 자세한 내용은 웹 애플리케이션 지원데스크톱 지원 섹션을 참조하세요.

디바이스 모드 "required"로 보호된 리소스는 사용자의 신원을 확인하고 필요한 역할을 적용하는 것 외에도 신뢰할 수 있는 디바이스의 사용을 강제합니다. 또한, 신뢰할 수 있는 디바이스를 사용하는 사용자는 디바이스 정보가 포함된 감사 기록을 남깁니다.

Device Trust 적용은 device_trust_mode 인증 설정으로 표현되는 다음 세 가지 작동 모드로 구성할 수 있습니다:

  • off - Device Trust를 비활성화합니다. 디바이스 인증이 수행되지 않으며 디바이스 인식 감사 로그가 없습니다.
  • optional - 디바이스 인증 및 디바이스 인식 감사를 활성화하지만, 리소스에 액세스하기 위해 신뢰할 수 있는 디바이스를 요구하지 않습니다.
  • required - 디바이스 인증 및 디바이스 인식 감사를 활성화합니다. 또한 모든 SSH, 데이터베이스 및 Kubernetes 연결에 신뢰할 수 있는 디바이스를 요구합니다.
  • required-for-humans - 디바이스 인증 및 디바이스 인식 감사를 활성화합니다. 또한 인간 사용자에 한해 모든 SSH, 데이터베이스 및 Kubernetes 연결에 신뢰할 수 있는 디바이스를 요구합니다(봇은 제외됨).

사전 요구 사항#

  • 실행 중인 Teleport Enterprise 클러스터. Teleport를 시작하려면 무료 체험판에 가입하거나 데모 환경을 구성하세요.

  • tctl and tsh clients.

    Installing `tctl` and `tsh` clients
    1. Teleport 클러스터의 버전을 확인합니다. tctl and tsh clients는 Teleport 클러스터 버전보다 최대 한 개의 메이저 버전까지만 뒤처질 수 있습니다. Proxy Service의 /v1/webapi/find로 GET 요청을 보내고 JSON 쿼리 도구를 사용하여 클러스터 버전을 확인합니다. teleport.example.com:443를 Teleport Proxy Service의 웹 주소로 바꿉니다:

      $ TELEPORT_DOMAIN=teleport.example.com:443
      $ TELEPORT_VERSION="$(curl -s https://$TELEPORT_DOMAIN/v1/webapi/find | jq -r '.server_version')"
      
    2. 사용 중인 플랫폼에 대한 지침에 따라 tctl and tsh clients를 설치합니다:

Mac

     `tctl` and `tsh` clients가 포함된, 서명된 Teleport macOS .pkg 설치 프로그램을 다운로드합니다:
 
     ```code
     $ curl -O https://cdn.teleport.dev/teleport-${TELEPORT_VERSION?}.pkg
     ```

     Finder에서 `pkg` 파일을 더블 클릭하여 설치를 시작합니다.
 
     
Warning
       Homebrew를 사용하여 Teleport를 설치하는 것은 지원되지 않습니다. Homebrew의
       Teleport 패키지는 Teleport에서 유지 관리하지 않으므로 신뢰성이나 보안을
       보장할 수 없습니다.
     

Windows - Powershell

     ```code
     $ curl.exe -O https://cdn.teleport.dev/teleport-v${TELEPORT_VERSION?}-windows-amd64-bin.zip
     # Unzip the archive and move the `tctl` and `tsh` clients to your %PATH%
     # NOTE: Do not place the `tctl` and `tsh` clients in the System32 directory, as this can cause issues when using WinSCP.
     # Use %SystemRoot% (C:\Windows) or %USERPROFILE% (C:\Users\<username>) instead.
     ```
 
   

 
   

Linux

     Linux 설치판의 모든 Teleport 바이너리에는 `tctl` and `tsh` clients가 포함되어 있습니다.  RPM/DEB
     패키지 및 i386/ARM/ARM64용 다운로드를 포함한 더 많은 옵션은
     [설치 페이지](../installation/installation.mdx)를 참조하세요.
 
     ```code
     $ curl -O https://cdn.teleport.dev/teleport-v${TELEPORT_VERSION?}-linux-amd64-bin.tar.gz
     $ tar -xzf teleport-v${TELEPORT_VERSION?}-linux-amd64-bin.tar.gz
     $ cd teleport
     $ sudo ./install
     # Teleport binaries have been copied to /usr/local/bin
     ```
   

 

이 가이드는 이나 데스크톱에 대해 신뢰할 수 있는 디바이스 사용을 적용하지 않는 사전 설정된 require-trusted-device 역할을 사용합니다. 해당 지침은 각 섹션을 참조하세요.

역할 기반 신뢰할 수 있는 디바이스 적용#

역할 기반 구성은 역할 수준에서 신뢰할 수 있는 디바이스 액세스를 적용합니다. spec.options.device_trust_mode 옵션으로 구성할 수 있으며 allow 규칙의 리소스에 적용됩니다. require_session_mfa와 유사하게 작동합니다.

사용자가 Teleport로 데이터베이스, Kubernetes 클러스터 및 서버에 액세스할 때 특정 역할에 대해 인증된 디바이스 검사를 적용하려면 device_trust_mode 필드를 "required" 또는 "required-for-humans"로 설정하여 역할을 업데이트하세요. 다음 예시는 사전 설정된 require-trusted-device 역할을 업데이트합니다:

kind: role
version: v7
metadata:
  name: require-trusted-device
spec:
  options:
    device_trust_mode: "required"
  allow:
    db_labels:
      '*': '*'
    db_names:
    - '*'
    db_users:
    - '*'
    kubernetes_groups:
    - '{{internal.kubernetes_groups}}'
    - system:masters
    - developers
    - viewers
    kubernetes_labels:
      '*': '*'
    logins:
    - '{{internal.logins}}'
    node_labels:
      '*': '*'

역할 업데이트:

$ tctl create -f device-enforcement.yaml
Tip

Web UI를 사용하여 역할을 생성하고 편집할 수도 있습니다. Access -> Roles로 이동하여 Create New Role을 클릭하거나 편집할 기존 역할을 선택하십시오.

클러스터 전체 신뢰할 수 있는 디바이스 적용#

클러스터 전체 구성은 클러스터 수준에서 신뢰할 수 있는 디바이스 액세스를 적용합니다. Enterprise 클러스터는 기본적으로 optional 모드로 실행됩니다. 모드를 required로 변경하면 모든 SSH, 데이터베이스 및 Kubernetes 액세스에 신뢰할 수 있는 디바이스가 요구됩니다.

디바이스 모드 required를 활성화하려면 다음과 같이 구성을 업데이트하세요:

다음 명령어를 사용하여 클러스터 인증 기본 설정을 편집하세요:

$ tctl edit cluster_auth_preference

다음 변경 사항을 적용하세요:

kind: cluster_auth_preference
version: v2
metadata:
  name: cluster-auth-preference
spec:
  type: local
  second_factors: ["webauthn"]
  webauthn:
    rp_id: (=clusterDefaults.clusterName=)
  device_trust:
+   mode: "required" # add this line

편집기를 저장하고 닫아 변경 사항을 적용하세요.

구성이 업데이트되면 신뢰할 수 있는 디바이스 없이 SSH, 데이터베이스 및 Kubernetes에 액세스하는 것이 금지됩니다. 예를 들어, 신뢰할 수 있는 디바이스 없이 SSH 액세스를 시도하면 다음 오류가 발생합니다:

$ tsh ssh (=clusterDefaults.nodeIP=)
ERROR: ssh: rejected: administratively prohibited (unauthorized device)
신뢰할 수 있는 클러스터

신뢰할 수 있는 클러스터를 사용하여 디바이스 모드 required의 영향을 제한할 수 있습니다. required 모드의 리프 클러스터는 루트 클러스터에 동일한 제한을 적용하지 않고 모든 리소스에 대한 액세스를 적용합니다. 마찬가지로 루트 클러스터는 리프 클러스터의 리소스에 Device Trust를 적용하지 않습니다.

웹 애플리케이션 지원#

Teleport 앱 서비스는 역할 기반 적용을 통해 Device Trust를 적용할 수 있습니다.

웹 UI(Teleport v16 이상)를 사용하여 Device Trust로 보호된 앱에 액세스하려면 디바이스가 등록 및 등록되어 있는지 확인하고, Teleport Connect를 설치한 후 로그인 중 표시되는 지침을 따르세요.

또는 tsh proxy app이나 tsh app login에서 발급한 인증서를 사용할 수 있습니다.

예를 들어, 모든 env:production 앱에 Device Trust를 적용하려면 아래 역할을 require-trusted-device-apps.yaml로 저장하세요:

kind: role
version: v7
metadata:
  name: require-trusted-device-apps
spec:
  options:
    device_trust_mode: "required"
  allow:
    app_labels:
      env: production

역할을 생성하고 사용자에게 할당하세요:

$ tctl create require-trusted-device-apps.yaml
$ tctl edit users/alice
kind: user
metadata:
  name: alice
  # (...)
spec:
  roles:
  - access
  - editor
+ - require-trusted-device-apps
  # (...)
version: v2

이제 alice 사용자는 신뢰할 수 있는 디바이스를 사용해서만 env:production 앱에 액세스할 수 있습니다.

데스크톱 지원#

Teleport 데스크톱 서비스는 역할 기반 적용을 통해 Device Trust를 적용할 수 있습니다.

Device Trust로 보호된 데스크톱에 액세스하려면 디바이스가 등록 및 등록되어 있는지 확인하고, Teleport Connect를 설치한 후 로그인 중 표시되는 지침을 따르세요.

예를 들어, 모든 env:production 데스크톱에 Device Trust를 적용하려면 아래 역할을 require-trusted-device-desktops.yaml로 저장하세요:

kind: role
version: v7
metadata:
  name: require-trusted-device-desktops
spec:
  options:
    device_trust_mode: "required"
  allow:
    windows_desktop_labels:
      env: "production"
    windows_desktop_logins: ["Administrator", "alice"]

역할을 생성하고 사용자에게 할당하세요:

$ tctl create require-trusted-device-desktops.yaml
$ tctl edit users/alice
kind: user
metadata:
  name: alice
  # (...)
spec:
  roles:
  - access
  - editor
+ - require-trusted-device-desktops
  # (...)
version: v2

이제 alice 사용자는 신뢰할 수 있는 디바이스를 사용해서만 env:production 데스크톱에 액세스할 수 있습니다.

디바이스 잠금#

세션 및 신원 잠금과 유사하게, 디바이스를 tctl lock을 사용하여 잠글 수 있습니다.

잠금은 잠긴 디바이스에서 발생하는 인증서 발급 및 진행 중이거나 향후의 액세스를 차단합니다. 디바이스 잠금은 Device Trust가 활성화되어 있고 디바이스가 Teleport에 등록된 경우에만 작동합니다.

잠글 디바이스 ID 찾기:

$ tctl devices ls
Asset Tag    OS    Source Enroll Status Owner Device ID
------------ ----- ------ ------------- ----- ------------------------------------
(=devicetrust.asset_tag=) macOS        enrolled      alice (=devicetrust.device_id=)

디바이스 잠금:

$ tctl lock --device=(=devicetrust.device_id=) --ttl=12h
Created a lock with name "5444970a-39a0-4814-968d-e58b4a8fa686".

이제 해당 디바이스의 사용자가 예를 들어 SSH 서버에 액세스하려고 하면 Teleport가 액세스를 거부합니다:

$ tsh ssh (=clusterDefaults.nodeIP=)
ERROR: ssh: rejected: administratively prohibited (lock targeting Device:"(=devicetrust.device_id=)" is in force)

문제 해결#

tsh device enroll 실행 시 "binary missing signature or entitlements"#

신뢰할 수 있는 디바이스를 등록하고 사용하려면 서명 및 노터라이즈된 tsh 바이너리가 필요합니다. 이 문제를 해결하려면 macOS tsh 설치 프로그램을 다운로드하세요.

신뢰할 수 있는 디바이스 사용 시 "unauthorized device" 오류#

신뢰할 수 있는 디바이스는 Teleport가 이를 인식하기 전에 먼저 등록(register)과 enrollment 과정을 거쳐야 합니다. 등록enrollment 단계를 따르고, enrollment가 완료된 후 반드시 tsh logouttsh login을 수행하세요.

Linux에서 "Failed to open the TPM device"#

Linux 사용자는 TPM 디바이스인 /dev/tpmrm0에 대한 읽기 및 쓰기 권한이 필요합니다. 이러한 권한이 없으면 tsh는 대부분의 작업에서 sudo 프롬프트를 요구하게 됩니다.

가장 간단한 해결 방법은 사용 중인 배포판에 tss 그룹이 포함되어 있는지 확인하고 이를 OS 사용자에게 할당하는 것입니다. 이것이 불가능하거나 다른 해결책을 찾고 있다면, TPM2 Software Stack에서 제공하는 것과 유사한 udev 규칙을 생성하는 것을 권장합니다.

자동 enrollment이 작동하지 않음#

자동 enrollment 절차는 그 자동화된 특성상 일반 enrollment보다 더 엄격합니다. 추가적인 자동 enrollment 검사에는 다음이 포함됩니다:

  1. MDM 서비스에서 유래한 데이터 등 디바이스 프로필 데이터를 실제 디바이스와 대조하여 검증
  2. 디바이스가 다른 사용자에 의해 enroll되지 않았는지 검증(자동 enroll은 이미 enroll된 디바이스를 가져올 수 없습니다)

감사 로그에서 단서를 확인하세요: 실패한 "Device Enroll Token Created" 이벤트를 찾아 세부 정보의 "message" 필드를 살펴보세요.

(1)이 문제라고 의심된다면, 실제 디바이스를 해당 인벤토리 정의와 비교하세요(실제 디바이스에서 실행한 tsh device collecttctl get device/<asset_tag>). 디바이스 프로필을 조정하거나, 수동 enrollment을 수행하거나, 다음 MDM 동기화를 기다리면 문제가 해결될 수 있습니다.

(2)가 의심된다면, tctl edit device/<asset_tag>로 디바이스의 "enroll_status" 필드를 "not_enrolled"로 변경하여 디바이스를 unenroll할 수 있습니다.

App access와 "access to this app requires a trusted device"#

아래의 Web UI 문제 해결 섹션의 안내를 따르세요(Teleport v16 이상).

또는 App Access 지원에서 설명하는 tsh 명령 중 하나를 사용할 수 있습니다. 예를 들어 myapp라는 앱의 경우 tsh proxy app myapp -p 8888을 실행한 다음, 브라우저에서 http://localhost:8888을 여세요.

이미 tsh proxy app을 실행 중이거나 tsh app login으로 획득한 인증서를 사용하고 있다면, 디바이스가 등록되지 않았거나 enroll되지 않았을 가능성이 높습니다. 이 경우 위의 unauthorized device 섹션의 조언을 따르세요.

Desktop access와 "access to this app requires a trusted device"#

아래의 Web UI 문제 해결 섹션의 안내를 따르세요.

Web UI에서 신뢰할 수 있는 디바이스 인증에 실패함#

Web UI는 로그인 시 Teleport Connect를 사용하여 디바이스를 인증하려고 시도합니다. 로그인 직후 디바이스 인증을 요청받지 못했다면 아래 단계를 따르세요:

  1. 디바이스가 등록 및 enroll되었는지 확인하세요
  2. Teleport Connect를 설치하세요. Linux에서는 DEB 또는 RPM 패키지를 사용하세요(tarball은 사용자 지정 URL 핸들러를 등록하지 않습니다).
  3. Teleport Connect가 Web에서 접근하려는 것과 동일한 리소스에 접근할 수 있는지 확인하세요
  4. 클러스터 관리자에게 Device Trust가 활성화되어 있는지 문의하세요(클러스터 모드 "optional" 이상)

위 단계를 완료한 후 Web UI에서 로그아웃했다가 다시 로그인해 보세요. 오류가 지속되면 감사 로그에서 실패한 "device authenticated" 또는 "device web" 이벤트를 확인하고 이벤트 내의 실패 세부 정보를 살펴보세요.

"device web authentication IP mismatch" 오류#

감사 로그의 "IP mismatch" 오류는 디바이스 웹 인증 절차에서 수행하는 IP 검사가 실패했음을 나타냅니다. 이 경우 최종 사용자의 IP가 Teleport 배포에 올바르게 전파되지 않았을 가능성이 높습니다.

웹 UI에서 Device Trust 인가 상태 확인#

웹 UI에서 Device Trust 사용이 성공적으로 인가되면, 사용자는 화면 오른쪽 상단의 로그인된 사용자 이름 옆에 녹색 방패 아이콘을 보게 됩니다. 또한 사용자 이름을 클릭하여 사용자 메뉴를 표시하면 해당 세션이 Device Trust로 인가되었음을 나타냅니다.

사용자가 웹 UI에서 Device Trust 사용을 인가받지 못했지만 클러스터 전역 구성 또는 할당된 역할이 신뢰할 수 있는 디바이스 사용을 요구하는 경우, 사용자는 화면 오른쪽 상단의 로그인된 사용자 이름 옆에 노란색 경고 방패를 보게 됩니다. 또한 사용자 이름을 클릭하여 사용자 메뉴를 표시하면 해당 세션이 Device Trust로 인가되지 않았으며 사용자의 접근이 제한됨을 나타냅니다.

테마 Device Trust로 인가된 세션 Device Trust로 인가되지 않은 세션
라이트 device-trust-trusted-shield-light-success.png device-trust-trusted-shield-light-failure.png
다크 device-trust-trusted-shield-dark-success.png device-trust-trusted-shield-dark-failure.png

다음 단계#