InfoGrab DocsInfoGrab Docs

Device Trust 시작하기

요약

Device Trust는 tsh, Teleport Connect, Web UI(Teleport Connect 설치 필요)를 포함한 모든 플랫폼과 클라이언트를 지원합니다. 다음 리소스가 Device Trust로 보호됩니다:

Note

Device Trust는 tsh, Teleport Connect, Web UI(Teleport Connect 설치 필요)를 포함한 모든 플랫폼과 클라이언트를 지원합니다.

다음 리소스가 Device Trust로 보호됩니다:

  • 역할 기반 적용만 가능: 앱 및 데스크톱
  • 클러스터 및 역할 기반 적용: SSH 노드, 데이터베이스, Kubernetes 클러스터

Device Trust는 다음 두 가지 단계가 구성되어 있어야 합니다:

  • 역할 또는 클러스터 전체 구성을 통해 디바이스 적용 모드가 구성되어 있어야 합니다.
  • 신뢰할 수 있는 디바이스가 Teleport에 등록 및 등록되어 있어야 합니다.

이 가이드에서는 기존 사용자 프로필을 업데이트하여 사전 설정된 require-trusted-device 역할을 할당하고, Teleport로 보호된 리소스(테스트 Linux 서버)에 액세스하기 위해 신뢰할 수 있는 디바이스를 Teleport에 등록합니다.

사전 요구 사항#

  • 실행 중인 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
     ```
   

 
  • macOS 디바이스를 등록하려면 다음이 필요합니다:

  • Windows 디바이스를 등록하려면 다음이 필요합니다:

  • Linux 디바이스를 등록하려면 다음이 필요합니다:

    • TPM 2.0을 갖춘 디바이스.

    • /dev/tpmrm0 디바이스를 사용할 권한을 가진 사용자(일반적으로 사용자에게 tss 그룹을 할당하여 처리).

    • tsh 클라이언트. Linux용 tsh 설치.

      WSL 사용자는 대신 Windows 바이너리를 사용해야 합니다. Windows tsh 설치 프로그램 다운로드.

  • Web UI 세션을 인증하려면 Teleport Connect가 필요합니다

  • Teleport 배포로의 올바른 최종 사용자 IP 전파: X-Forwarded-For 헤더(L7 로드 밸런서) 또는 PROXY 프로토콜(L4 로드 밸런서)

  • editor 역할을 가진 사용자.

    $ tsh status
    > Profile URL:      (=clusterDefaults.clusterName=):443
    Logged in as:       (=clusterDefaults.username=)
    Cluster:            (=clusterDefaults.clusterName=)
    Roles:              access, auditor, editor
    Logins:             root, ubuntu, ec2-user
    Kubernetes:         disabled
    Valid until:        2023-08-22 03:30:24 -0400 EDT [valid for 11h52m0s]
    Extensions:         login-ip, permit-agent-forwarding, permit-port-forwarding, permit-pty, private-key-policy
    
  • Linux 서버에 대한 액세스 (tsh ssh로 액세스할 수 있는 Linux 서버면 됩니다).

    $ tsh ls
    Node Name        Address        Labels
    ---------------- -------------- --------------------------------------
    (=clusterDefaults.nodeIP=) ⟵ Tunnel
    
    # test connection to (=clusterDefaults.nodeIP=)
    $ tsh ssh root@(=clusterDefaults.nodeIP=)
    root@(=clusterDefaults.nodeIP=):~#
    

위의 사전 요구 사항이 충족되면 다음 단계를 시작하세요.

1/2단계. Device Trust를 적용하도록 사용자 프로필 업데이트#

Device Trust를 적용하려면 사용자에게 Device Trust 모드가 "required"인 역할이 할당되어 있어야 합니다.

이 가이드에서는 사전 설정된 require-trusted-device 역할을 사용하여 현재 사용자 프로필을 업데이트합니다.

사전 설정된 require-trusted-device 역할로 업데이트하기 위해 편집기에서 사용자 리소스를 열어보겠습니다.

$ tctl edit users/(=clusterDefaults.username=)

프로필 편집:

kind: user
metadata:
  id: 1692716146877042322
  name: (=clusterDefaults.username=)
spec:
  created_by:
    time: "2023-08-14T13:42:22.291972449Z"
  expires: "0001-01-01T00:00:00Z"
  roles:
  - access
  - auditor
  - editor
+ - require-trusted-device # add this line
  status:
    is_locked: false
  ...

편집기에서 파일을 저장하고 닫아 사용자를 업데이트하세요.

이제 사용자 프로필이 Device Trust를 적용하도록 업데이트되었으니, 테스트 서버에 다시 액세스해 보세요.

$ tsh logout; tsh login --proxy=(=clusterDefaults.clusterName=) --user=(=clusterDefaults.username=)
$ tsh ssh root@(=clusterDefaults.nodeIP=)
ERROR: access denied to root connecting to (=clusterDefaults.nodeIP=):0

위 단계에서 확인할 수 있듯이, 이전에 액세스 가능했던 <code>[clusterDefaults.nodeIP]</code> SSH 서버에 대한 액세스가 이제 거부됩니다.

2/2단계. 디바이스 등록#

<code>[clusterDefaults.nodeIP]</code> 서버에 다시 액세스하려면 디바이스를 등록해야 합니다.

디바이스 등록은 간단하며, tsh 클라이언트를 사용하여 수행할 수 있습니다:

$ tsh device enroll --current-device
Device "(=devicetrust.asset_tag=)"/macOS registered and enrolled
자체 등록

--current-device 플래그는 tsh에게 현재 디바이스를 등록하도록 지시합니다. 사용자는 디바이스를 자체 등록하려면 사전 설정된 editor 또는 device-admin 역할이 있어야 합니다. editor 또는 device-admin 역할이 없는 사용자의 경우, 디바이스 관리자가 등록 토큰을 생성해야 하며, 이 토큰을 사용하여 디바이스를 등록할 수 있습니다. 수동 디바이스 등록에 대한 자세한 내용은 디바이스 관리 가이드를 참조하세요.

디바이스 확장이 포함된 업데이트된 인증서를 가져오기 위해 다시 로그인하세요:

$ tsh logout; tsh login --proxy=(=clusterDefaults.clusterName=) --user=(=clusterDefaults.username=)

$ tsh status
> Profile URL:        (=clusterDefaults.clusterName=):443
  Logged in as:       (=clusterDefaults.username=)
  Cluster:            (=clusterDefaults.clusterName=):443
  Roles:              access, auditor, editor
  Logins:             root
  Kubernetes:         enabled
  Valid until:        2023-08-22 04:06:53 -0400 EDT [valid for 12h0m0s]
  Extensions:         login-ip, ... teleport-device-asset-tag, teleport-device-credential-id, teleport-device-id

teleport-device-* 확장의 존재는 디바이스가 성공적으로 인증되었음을 나타냅니다.

이제 서버(<code>[clusterDefaults.nodeIP]</code>)에 다시 액세스해 봅시다:

$ tsh ssh root@(=clusterDefaults.nodeIP=)
root@(=clusterDefaults.nodeIP=):~#

축하합니다! 신뢰할 수 있는 디바이스를 성공적으로 구성하고 Device Trust 적용으로 보호된 리소스에 액세스했습니다.

문제 해결#

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는 tsh, Teleport Connect, Web UI(Teleport Connect 설치 필요)를 포함한 모든 플랫폼과 클라이언트를 지원합니다. 다음 리소스가 Device Trust로 보호됩니다:

Note

Device Trust는 tsh, Teleport Connect, Web UI(Teleport Connect 설치 필요)를 포함한 모든 플랫폼과 클라이언트를 지원합니다.

다음 리소스가 Device Trust로 보호됩니다:

  • 역할 기반 적용만 가능: 앱 및 데스크톱
  • 클러스터 및 역할 기반 적용: SSH 노드, 데이터베이스, Kubernetes 클러스터

Device Trust는 다음 두 가지 단계가 구성되어 있어야 합니다:

  • 역할 또는 클러스터 전체 구성을 통해 디바이스 적용 모드가 구성되어 있어야 합니다.
  • 신뢰할 수 있는 디바이스가 Teleport에 등록 및 등록되어 있어야 합니다.

이 가이드에서는 기존 사용자 프로필을 업데이트하여 사전 설정된 require-trusted-device 역할을 할당하고, Teleport로 보호된 리소스(테스트 Linux 서버)에 액세스하기 위해 신뢰할 수 있는 디바이스를 Teleport에 등록합니다.

사전 요구 사항#

  • 실행 중인 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
     ```
   

 
  • macOS 디바이스를 등록하려면 다음이 필요합니다:

  • Windows 디바이스를 등록하려면 다음이 필요합니다:

  • Linux 디바이스를 등록하려면 다음이 필요합니다:

    • TPM 2.0을 갖춘 디바이스.

    • /dev/tpmrm0 디바이스를 사용할 권한을 가진 사용자(일반적으로 사용자에게 tss 그룹을 할당하여 처리).

    • tsh 클라이언트. Linux용 tsh 설치.

      WSL 사용자는 대신 Windows 바이너리를 사용해야 합니다. Windows tsh 설치 프로그램 다운로드.

  • Web UI 세션을 인증하려면 Teleport Connect가 필요합니다

  • Teleport 배포로의 올바른 최종 사용자 IP 전파: X-Forwarded-For 헤더(L7 로드 밸런서) 또는 PROXY 프로토콜(L4 로드 밸런서)

  • editor 역할을 가진 사용자.

    $ tsh status
    > Profile URL:      (=clusterDefaults.clusterName=):443
    Logged in as:       (=clusterDefaults.username=)
    Cluster:            (=clusterDefaults.clusterName=)
    Roles:              access, auditor, editor
    Logins:             root, ubuntu, ec2-user
    Kubernetes:         disabled
    Valid until:        2023-08-22 03:30:24 -0400 EDT [valid for 11h52m0s]
    Extensions:         login-ip, permit-agent-forwarding, permit-port-forwarding, permit-pty, private-key-policy
    
  • Linux 서버에 대한 액세스 (tsh ssh로 액세스할 수 있는 Linux 서버면 됩니다).

    $ tsh ls
    Node Name        Address        Labels
    ---------------- -------------- --------------------------------------
    (=clusterDefaults.nodeIP=) ⟵ Tunnel
    
    # test connection to (=clusterDefaults.nodeIP=)
    $ tsh ssh root@(=clusterDefaults.nodeIP=)
    root@(=clusterDefaults.nodeIP=):~#
    

위의 사전 요구 사항이 충족되면 다음 단계를 시작하세요.

1/2단계. Device Trust를 적용하도록 사용자 프로필 업데이트#

Device Trust를 적용하려면 사용자에게 Device Trust 모드가 "required"인 역할이 할당되어 있어야 합니다.

이 가이드에서는 사전 설정된 require-trusted-device 역할을 사용하여 현재 사용자 프로필을 업데이트합니다.

사전 설정된 require-trusted-device 역할로 업데이트하기 위해 편집기에서 사용자 리소스를 열어보겠습니다.

$ tctl edit users/(=clusterDefaults.username=)

프로필 편집:

kind: user
metadata:
  id: 1692716146877042322
  name: (=clusterDefaults.username=)
spec:
  created_by:
    time: "2023-08-14T13:42:22.291972449Z"
  expires: "0001-01-01T00:00:00Z"
  roles:
  - access
  - auditor
  - editor
+ - require-trusted-device # add this line
  status:
    is_locked: false
  ...

편집기에서 파일을 저장하고 닫아 사용자를 업데이트하세요.

이제 사용자 프로필이 Device Trust를 적용하도록 업데이트되었으니, 테스트 서버에 다시 액세스해 보세요.

$ tsh logout; tsh login --proxy=(=clusterDefaults.clusterName=) --user=(=clusterDefaults.username=)
$ tsh ssh root@(=clusterDefaults.nodeIP=)
ERROR: access denied to root connecting to (=clusterDefaults.nodeIP=):0

위 단계에서 확인할 수 있듯이, 이전에 액세스 가능했던 <code>[clusterDefaults.nodeIP]</code> SSH 서버에 대한 액세스가 이제 거부됩니다.

2/2단계. 디바이스 등록#

<code>[clusterDefaults.nodeIP]</code> 서버에 다시 액세스하려면 디바이스를 등록해야 합니다.

디바이스 등록은 간단하며, tsh 클라이언트를 사용하여 수행할 수 있습니다:

$ tsh device enroll --current-device
Device "(=devicetrust.asset_tag=)"/macOS registered and enrolled
자체 등록

--current-device 플래그는 tsh에게 현재 디바이스를 등록하도록 지시합니다. 사용자는 디바이스를 자체 등록하려면 사전 설정된 editor 또는 device-admin 역할이 있어야 합니다. editor 또는 device-admin 역할이 없는 사용자의 경우, 디바이스 관리자가 등록 토큰을 생성해야 하며, 이 토큰을 사용하여 디바이스를 등록할 수 있습니다. 수동 디바이스 등록에 대한 자세한 내용은 디바이스 관리 가이드를 참조하세요.

디바이스 확장이 포함된 업데이트된 인증서를 가져오기 위해 다시 로그인하세요:

$ tsh logout; tsh login --proxy=(=clusterDefaults.clusterName=) --user=(=clusterDefaults.username=)

$ tsh status
> Profile URL:        (=clusterDefaults.clusterName=):443
  Logged in as:       (=clusterDefaults.username=)
  Cluster:            (=clusterDefaults.clusterName=):443
  Roles:              access, auditor, editor
  Logins:             root
  Kubernetes:         enabled
  Valid until:        2023-08-22 04:06:53 -0400 EDT [valid for 12h0m0s]
  Extensions:         login-ip, ... teleport-device-asset-tag, teleport-device-credential-id, teleport-device-id

teleport-device-* 확장의 존재는 디바이스가 성공적으로 인증되었음을 나타냅니다.

이제 서버(<code>[clusterDefaults.nodeIP]</code>)에 다시 액세스해 봅시다:

$ tsh ssh root@(=clusterDefaults.nodeIP=)
root@(=clusterDefaults.nodeIP=):~#

축하합니다! 신뢰할 수 있는 디바이스를 성공적으로 구성하고 Device Trust 적용으로 보호된 리소스에 액세스했습니다.

문제 해결#

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

다음 단계#