장치 신뢰는 클러스터 전체 또는 역할 기반 강화를 사용하여 SSH, 데이터베이스 및 Kubernetes 리소스를 완전히 지원합니다.
앱과 데스크탑은 역할 기반 강화 방식을 사용하여 신뢰할 수 있는 장치를 강제할 수 있습니다. 추가 세부 정보는 앱 액세스 지원 및 데스크탑 액세스 지원 섹션을 참조하세요.
"필수" 장치 모드로 보호되는 리소스는 사용자의 신원을 확인하고 필요한 역할을 강제하는 것 외에도 신뢰할 수 있는 장치의 사용을 강제합니다. 또한 신뢰할 수 있는 장치를 사용하는 사용자는 장치 정보를 포함하는 감사 기록을 남깁니다.
장치 신뢰 강제는 다음 세 가지 운영 모드로 구성할 수 있으며, 이는 device_trust_mode
인증 설정으로 표시됩니다:
off
- 장치 신뢰를 비활성화합니다. 장치 인증이 수행되지 않으며 장치 인식 감사 로그가 없습니다.optional
- 장치 인증 및 장치 인식 감사를 활성화하지만 리소스에 액세스하기 위해 신뢰할 수 있는 장치를 요구하지 않습니다.required
- 장치 인증 및 장치 인식 감사를 활성화합니다. 추가로 모든 SSH, 데이터베이스 및 Kubernetes 연결에 대해 신뢰할 수 있는 장치를 요구합니다.
필수 조건
-
실행 중인 Teleport 클러스터. Teleport를 시작하려면 가입하기 무료 체험판을 이용해 보세요.
-
tctl
관리 도구 및tsh
클라이언트 도구 버전 >= 16.2.0.tctl
및tsh
다운로드 방법에 대한 지침은 설치를 방문하세요.
- macOS 장치를 등록하려면 다음이 필요합니다:
- 서명되고 공증된
tsh
바이너리. macOS tsh 설치 프로그램 다운로드.
- 서명되고 공증된
- Windows 장치를 등록하려면 다음이 필요합니다:
- TPM 2.0이 있는 장치.
- 관리자 권한이 있는 사용자. 이는 등록 중에만 필요합니다.
tsh
v13.1.2 이상. Windows tsh 설치 프로그램 다운로드.
- Linux 장치를 등록하려면 다음이 필요합니다:
- TPM 2.0이 있는 장치.
- /dev/tpmrm0 장치를 사용할 수 있는 권한이 있는 사용자(일반적으로
tss
그룹을 사용자에게 할당하여 수행합니다). tsh
v15.0.0 이상. Linux용 tsh 설치.
- 웹 UI 세션을 인증하려면 Teleport Connect가 필요합니다.
역할 기반 신뢰할 수 있는 장치 강화
역할 기반 구성은 역할 수준에서 신뢰할 수 있는 장치 액세스를 강제합니다. spec.options.device_trust_mode
옵션으로 구성할 수 있으며, 이는 해당 allow
규칙의 리소스에 적용됩니다. 이는 require_session_mfa
와 유사하게 작동합니다.
아래 역할은 DB, K8s 및 SSH에 대해 신뢰할 수 있는 장치 강화를 예시한 것입니다. 또는 기존 역할에 options.device_trust_mode=required
를 설정하여 유사한 효과를 얻을 수 있습니다.
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
를 활성화하려면 다음과 같이 구성을 업데이트하세요:
Choose one of the options
- Self-Hosted
- Teleport Enterprise Cloud
cap.yaml
파일을 생성하거나 tctl get 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" # 이 줄을 추가하세요
구성을 업데이트합니다:
tctl create -f cap.yamlcluster auth preference has been updated
이 구성을 직접 편집할 수도 있습니다:
tctl edit cluster_auth_preference
인증 서버의 teleport.yaml
파일을 편집하고 모든 인증 서비스를 재시작합니다:
auth_service:
authentication:
type: local
second_factor: "on"
webauthn:
rp_id: teleport.example.com
device_trust:
+ mode: "required" # 이 줄을 추가하세요
구성이 업데이트되면 신뢰할 수 있는 장치 없이 SSH, 데이터베이스 및 Kubernetes 액세스가 금지됩니다. 예를 들어, 신뢰할 수 있는 장치 없이 SSH 액세스는 다음과 같은 오류와 함께 실패합니다:
tsh ssh ip-172-31-35-170ERROR: ssh: rejected: administratively prohibited (unauthorized device)
신뢰할 수 있는 클러스터를 사용하여 장치 모드 required
의 영향을 제한할 수 있습니다. required
모드의 리프 클러스터는 모든 리소스에 대한 액세스를 강화하지만, 루트 클러스터에는 동일한 제한을 적용하지 않습니다. 마찬가지로, 루트 클러스터는 리프 클러스터의 리소스에 대해 장치 신뢰를 강제하지 않습니다.
앱 액세스 지원
Teleport 앱 서비스는 역할 기반 강화를 통해 장치 신뢰를 강제할 수 있습니다.
웹 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.yamltctl edit users/alice
kind: user
metadata:
name: alice
# (...)
spec:
roles:
- access
- editor
+ - require-trusted-device-apps
# (...)
version: v2
이제 alice 사용자는 신뢰할 수 있는 장치를 사용하여 env:production
앱에만 액세스할 수 있습니다.
데스크탑 액세스 지원
Teleport 데스크탑 서비스는 역할 기반 강화를 통해 장치 신뢰를 강제할 수 있습니다.
장치 신뢰로 보호된 데스크탑에 액세스하려면 장치가 등록되고 등록되어 있다는 것을 확인하고, 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.yamltctl edit users/alice
kind: user
metadata:
name: alice
# (...)
spec:
roles:
- access
- editor
+ - require-trusted-device-desktops
# (...)
version: v2
이제 alice 사용자는 신뢰할 수 있는 장치를 사용하여 env:production
데스크탑에만 액세스할 수 있습니다.
장치 잠금
세션 및 아이덴티티 잠금과 유사하게, 장치는 tctl lock
을 사용하여 잠글 수 있습니다.
잠금은 인증서 발급과 잠긴 장치에서 시작된 현재 또는 미래의 액세스를 차단합니다. 장치를 잠그는 것은 장치 신뢰가 활성화되어 있고 장치가 Teleport에 등록된 경우에만 작동합니다.
잠글 장치의 ID를 찾습니다:
tctl devices lsAsset 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=12hCreated a lock with name "5444970a-39a0-4814-968d-e58b4a8fa686".
이제 해당 장치의 사용자가 SSH 서버에 액세스하려고 하면 Teleport가 액세스를 거부합니다:
tsh ssh ip-172-31-35-170ERROR: ssh: rejected: administratively prohibited (lock targeting Device:"9cdfc0ad-64b7-4d9c-this-is-an-example" is in force)
문제 해결
tsh device enroll
에서 "이진 파일이 누락된 서명 또는 권한"
신뢰할 수 있는 장치를 등록하고 사용하려면 서명되고 공증된 tsh
이진 파일이 필요합니다. 문제를 해결하려면 macOS tsh 설치 프로그램 다운로드를 하십시오.
신뢰할 수 있는 장치를 사용하여 "무단 장치" 오류 발생
신뢰할 수 있는 장치는 Teleport에 의해 신뢰할 수 있는 장치로 인식되기 전에 등록하고 등록해야 합니다. 등록 및 등록 단계를 따르고, 등록 후 tsh logout
및 tsh login
을 수행하세요.
리눅스에서 "TPM 장치를 열 수 없음" 오류 발생
리눅스 사용자는 TPM 장치인 /dev/tpmrm0
에서 읽고 쓸 수 있는 권한이 필요합니다. 이러한 권한이 없으면 대부분의 작업에 대해 tsh
는 sudo
프롬프트가 필요하게 됩니다.
가장 간단한 해결책은 배포판이 tss
그룹을 제공하는지 확인하고 이를 운영 체제 사용자에게 할당하는 것입니다. 그게 불가능하거나 다른 해결책을 원하는 경우, TPM2 소프트웨어 스택에서 제공하는 것과 유사한 udev 규칙을 생성하는 것을 권장합니다.
앱 접근 및 "이 앱에 대한 접근은 신뢰할 수 있는 장치를 요구합니다"
아래의 웹 UI 문제 해결 섹션에서 지침을 따르십시오 (Teleport v16 이상).
대안으로, 앱 접근 지원에서 설명한 tsh 명령 중 하나를 사용할 수 있습니다. 예를 들어, myapp
이라는 앱의 경우, tsh proxy app myapp -p 8888
을 실행한 후 브라우저에서 http://localhost:8888을 여세요.
이미 tsh proxy app
을 실행 중이거나 tsh app login
에서 획득한 인증서를 사용 중인 경우, 장치가 등록되지 않았거나 등록되지 않았을 가능성이 큽니다. 이 경우, 위의 신뢰할 수 있는 장치를 사용한 무단 장치 섹션의 조언을 따르세요.
데스크탑 접근 및 "이 앱에 대한 접근은 신뢰할 수 있는 장치를 요구합니다"
아래의 웹 UI 문제 해결 섹션에서 지침을 따르세요.
웹 UI가 신뢰할 수 있는 장치를 인증하지 못함
웹 UI는 로그인 중에 Teleport Connect를 사용하여 장치를 인증하려고 시도합니다. 로그인 후 즉시 장치를 인증하라는 요청을 받지 않는 경우, 아래 단계를 따르세요:
- 장치가 등록되고 등록되었는지 확인하세요.
- Teleport Connect를 설치하세요. 리눅스에서는 DEB 또는 RPM 패키지를 사용합니다 (tarball은 사용자 정의 URL 핸들러를 등록하지 않습니다).
- Teleport Connect가 웹에서 접근하려는 동일한 리소스에 접근할 수 있는지 확인하세요.
- 클러스터 관리자가 장치 신뢰가 활성화되었는지 확인하세요 (클러스터 모드 "선택적" 이상).
위의 모든 단계를 완료한 후, 웹 UI에서 로그아웃하고 다시 로그인해보세요.
웹 UI에서 장치 신뢰 인증 상태 확인
웹 UI에서 장치 신뢰를 사용할 수 있도록 성공적으로 인증된 경우, 사용자는 화면 오른쪽 상단에 로그인한 사용자 이름 옆에 녹색 방패 아이콘이 표시됩니다. 또한 사용자 이름을 클릭하여 사용자 메뉴를 표시하면 세션이 장치 신뢰로 인증되었음을 나타냅니다.
웹 UI에서 장치 신뢰를 사용할 수 없는 사용자는 클러스터 전체 구성 또는 할당된 역할이 신뢰할 수 있는 장치를 요구할 경우, 로그인한 사용자 이름 옆에 노란색 경고 방패 아이콘이 표시됩니다. 또한 사용자 이름을 클릭하여 사용자 메뉴를 표시하면 세션이 장치 신뢰로 인증되지 않았음을 나타내므로 사용자의 접근이 제한됩니다.
테마 | 장치 신뢰로 인증된 세션 | 장치 신뢰로 인증되지 않은 세션 |
---|---|---|
라이트 | ||
다크 |