Infograb logo
장치 신뢰 강제 적용
지원되는 리소스

장치 신뢰는 클러스터 전체 또는 역할 기반 강제 적용을 사용하여 SSH, 데이터베이스 및 Kubernetes 리소스를 완벽하게 지원합니다.

앱과 데스크톱은 역할 기반 강제 적용을 통해 신뢰할 수 있는 장치를 강제할 수 있습니다. 자세한 내용은 앱 접근 지원데스크톱 접근 지원 섹션을 참조하십시오.

장치 모드 "필수"로 보호되는 리소스는 사용자의 신원 확인 및 필요한 역할 강제 적용 외에도 신뢰할 수 있는 장치 사용을 강제합니다. 또한, 신뢰할 수 있는 장치를 사용하는 사용자는 장치의 정보가 포함된 감사 추적을 남깁니다.

장치 신뢰 강제 적용은 다음 세 가지 작동 모드로 구성할 수 있으며, 이는 device_trust_mode 인증 설정으로 표현됩니다:

  • off - 장치 신뢰를 비활성화합니다. 장치 인증이 수행되지 않으며 장치 인식 감사 로그가 없습니다.
  • optional - 장치 인증 및 장치 인식 감사를 활성화하지만, 리소스에 접근하기 위해 신뢰할 수 있는 장치가 필요하지 않습니다.
  • required - 장치 인증 및 장치 인식 감사를 활성화합니다. 또한, 모든 SSH, 데이터베이스 및 Kubernetes 연결에 대해 신뢰할 수 있는 장치가 필요합니다.

전제 조건

  • 실행 중인 Teleport 클러스터. Teleport를 시작하려면 가입하여 무료 평가판을 이용해 보십시오.

  • tctl 관리자 도구 및 tsh 클라이언트 도구.

    tctltsh 다운로드에 대한 지침은 설치 를 방문하십시오.

  • macOS 장치를 등록하려면 다음이 필요합니다:
  • Windows 장치를 등록하려면 다음이 필요합니다:
  • Linux 장치를 등록하려면 다음이 필요합니다:
    • TPM 2.0이 포함된 장치.
    • /dev/tpmrm0 장치를 사용할 수 있는 권한이 있는 사용자 (일반적으로 사용자를 tss 그룹에 할당하여 확인합니다).
    • tsh v15.0.0 이상. Linux용 tsh 설치.
  • 웹 UI 세션을 인증하려면 Teleport Connect가 필요합니다.
  • Teleport 클러스터가 버전 13.3.6 이상이어야 하며, 이 버전에는 미리 설정된 require-trusted-device 역할이 포함되어 있습니다. 미리 설정된 require-trusted-device 역할은 이나 데스크톱에 대해 신뢰할 수 있는 장치를 강제하지 않습니다. 지침은 해당 섹션을 참조하십시오.

역할 기반 신뢰할 수 있는 장치 강제 적용

역할 기반 구성은 역할 수준에서 신뢰할 수 있는 장치 접근을 강제합니다. 이는 spec.options.device_trust_mode 옵션으로 구성할 수 있으며, allow 규칙에 있는 리소스에 적용됩니다. 이는 require_session_mfa 와 유사하게 작동합니다.

사용자가 Teleport를 통해 데이터베이스, Kubernetes 클러스터 및 서버에 접근할 때 특정 역할에 대한 인증된 장치 확인을 강제하려면, 역할을 "required"로 설정된 device_trust_mode 필드로 업데이트하십시오. 다음 예제는 미리 설정된 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

클러스터 전체 신뢰할 수 있는 장치 강제 적용

클러스터 전체 구성은 클러스터 수준에서 신뢰할 수 있는 장치 접근을 강제합니다. 엔터프라이즈 클러스터는 기본적으로 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_factor: "on"
  webauthn:
    rp_id: teleport.example.com
  device_trust:
+   mode: "required" # 이 줄 추가

편집기를 닫고 변경 사항을 적용하십시오.

구성이 업데이트되면 신뢰할 수 있는 장치 없이 SSH, 데이터베이스 및 Kubernetes 접근이 금지됩니다. 예를 들어, 신뢰할 수 있는 장치 없이 SSH 접근은 다음과 같은 오류로 실패합니다:

tsh ssh ip-172-31-35-170
ERROR: ssh: rejected: administratively prohibited (unauthorized device)
신뢰할 수 있는 클러스터

장치 모드 required 의 영향을 제한하기 위해 신뢰할 수 있는 클러스터를 사용할 수 있습니다. 모드 required 인 자식 클러스터는 모든 리소스에 대한 접근을 강제하지만 루트 클러스터에 동일한 제한을 부과하지 않습니다. 마찬가지로, 루트 클러스터는 자식 클러스터의 리소스에 대해 장치 신뢰를 강제하지 않습니다.

앱 접근 지원

Teleport 앱 서비스는 역할 기반 enforcement를 통해 기기 신뢰를 시행할 수 있습니다.

웹 UI(Teleport v16 이상)를 사용하여 기기 신뢰로 보호되는 앱에 접근하려면, 기기가 등록 및 등록됨 확인하고 Teleport Connect를 설치한 후, 로그인 시 지침을 따르십시오.

대안으로, tsh proxy app 또는 tsh app login 으로 발급된 인증서를 사용할 수 있습니다.

예를 들어, 모든 env:production 앱에 대해 기기 신뢰를 시행하려면 아래의 역할을 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 데스크톱 서비스는 역할 기반 enforcement를 통해 기기 신뢰를 시행할 수 있습니다.

기기 신뢰로 보호되는 데스크톱에 접근하려면 기기가 등록 및 등록됨 확인하고 Teleport Connect를 설치한 후, 로그인 시 지침을 따르십시오.

예를 들어, 모든 env:production 데스크톱에 대해 기기 신뢰를 시행하려면 아래의 역할을 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 데스크톱에 접근할 수 있습니다.

장치 잠금

세션 및 ID 잠금과 유사하게, tctl lock 을 사용하여 장치를 잠글 수 있습니다.

잠금은 인증서 발급과 잠긴 장치에서 발생하는 현재 또는 미래의 접근을 차단합니다. 장치를 잠그는 것은 기기 신뢰가 활성화되어 있고 장치가 Teleport에 등록되어 있어야만 작동합니다.

잠글 장치 ID를 찾습니다:

tctl devices ls
Asset Tag OS Enroll Status Device ID------------ ----- ------------- ------------------------------------C00AA0AAAA0A macOS enrolled 9cdfc0ad-64b7-4d9c-this-is-an-example

장치를 잠급니다:

tctl lock --device=9cdfc0ad-64b7-4d9c-this-is-an-example --ttl=12h
Created a lock with name "5444970a-39a0-4814-968d-e58b4a8fa686".

이제 해당 장치의 사용자가 SSH 서버에 접근하려고 하면 Teleport는 접근을 거부합니다:

tsh ssh ip-172-31-35-170
ERROR: ssh: rejected: administratively prohibited (lock targeting Device:"9cdfc0ad-64b7-4d9c-this-is-an-example" is in force)

문제 해결

tsh device enroll 에서 "binary missing signature or entitlements" 오류

신뢰할 수 있는 장치를 등록하고 사용하려면 서명되고 인증된 tsh 바이너리가 필요합니다. 문제를 해결하려면 macOS tsh 설치 프로그램을 다운로드하십시오.

신뢰할 수 있는 장치를 사용할 때 "unauthorized device" 오류

신뢰할 수 있는 장치는 Teleport에 의해 인식되기 전에 등록 및 등록이 필요합니다. 등록등록 단계를 따르고, 등록이 완료된 후에는 tsh logouttsh login 을 수행해야 합니다.

리눅스에서 "Failed to open the TPM device" 오류

리눅스 사용자는 TPM 장치인 /dev/tpmrm0 에서 읽고 쓸 수 있는 권한이 필요합니다. 이러한 권한이 없으면 tsh 는 대부분의 작업에 대해 sudo 프롬프트가 필요합니다.

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

자동 등록이 작동하지 않음

자동 등록 의식은 자동화된 특성 때문에 일반 등록보다 엄격합니다. 추가 자동 등록 검사는 다음을 포함합니다:

  1. Jamf와 같은 출처의 장치 프로파일 데이터가 실제 장치와 일치하는지 확인
  2. 장치가 다른 사용자에 의해 등록되지 않았는지 확인 (자동 등록은 이미 등록된 장치를 가져올 수 없음)

감사 로그를 확인하여 단서를 찾으십시오: "Device Enroll Token Created" 이벤트에 대한 실패를 찾고 세부정보의 "message" 필드를 확인하십시오.

(1)이 문제라고 의심되는 경우, 실제 장치를 재고 정의와 비교하십시오(tsh device collect 를 실제 장치에서 실행한 것과 tctl get device/<asset_tag>). 장치 프로파일을 조정하거나 수동 등록을 하거나 다음 MDM 동기화를 기다리면 문제가 해결될 수 있습니다.

(2) 문제라고 의심되는 경우, tctl edit device/<asset_tag>를 사용하여 장치 등록을 해제하고 "enroll_status" 필드를 "not_enrolled"로 변경할 수 있습니다.

앱 접근 및 "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 을 통해 획득한 증명을 사용하는 경우, 당신의 장치가 등록되거나 등록되지 않았을 가능성이 큽니다. 이 경우, 위의 신뢰할 수 있는 장치에서의 unauthorized device 섹션의 조언을 따르십시오.

데스크탑 접근 및 "access to this app requires a trusted device" 오류

아래의 Web UI 문제 해결 섹션 지침을 따르십시오.

웹 UI가 신뢰할 수 있는 장치 인증에 실패했습니다

웹 UI는 로그인하는 동안 Teleport Connect를 사용하여 장치를 인증하려고 시도합니다. 로그인 직후에 장치 인증을 요청받지 않는 경우, 아래 단계를 따라 진행하십시오:

  1. 귀하의 장치가 등록되고 등록되었는지 확인합니다.
  2. Teleport Connect 를 설치합니다. Linux에서는 DEB 또는 RPM 패키지를 사용하십시오 (tarball은 사용자 정의 URL 핸들러를 등록하지 않습니다).
  3. Teleport Connect가 웹에서 접근하려는 동일한 리소스에 접근할 수 있는지 확인합니다.
  4. 클러스터 관리者에게 장치 신뢰가 활성화되었는지 (클러스터 모드 "선택적" 또는 그 이상) 문의합니다.

위의 모든 단계를 완료한 경우, 웹 UI에서 로그아웃한 후 다시 로그인해 보십시오.

웹 UI에서 장치 신뢰 권한 상태 확인

웹 UI에서 장치 신뢰를 사용하도록 성공적으로 승인되면, 사용자는 화면 오른쪽 상단에 로그인한 사용자 이름 옆에 녹색 방패 아이콘을 보게 됩니다. 또한 사용자 메뉴를 표시하기 위해 사용자 이름을 클릭하면 해당 세션이 장치 신뢰로 승인되었음을 나타냅니다.

사용자가 웹 UI에서 장치 신뢰를 사용할 수 있는 권한이 없는 경우, 클러스터 전체 구성이나 부여된 역할 중 하나가 신뢰할 수 있는 장치를 사용할 것을 요구하는 경우, 사용자는 화면 오른쪽 상단에 로그인한 사용자 이름 옆에 노란색 경고 방패 아이콘을 보게 됩니다. 또한 사용자 이름을 클릭하여 사용자 메뉴를 표시하면 해당 세션이 장치 신뢰로 승인되지 않았음을 나타내므로 사용자의 접근이 제한됩니다.

테마장치 신뢰로 승인된 세션장치 신뢰로 승인되지 않은 세션
라이트device-trust-trusted-shield-light-success.pngdevice-trust-trusted-shield-light-failure.png
다크device-trust-trusted-shield-dark-success.pngdevice-trust-trusted-shield-dark-failure.png

다음 단계

Teleport 원문 보기