패스워드리스
이 가이드는 Teleport에 대한 패스워드리스 및 사용자명 없는 인증(아래에서 단순히 "패스워드리스"라고 함)을 제공하는 방법을 보여줍니다. 패스워드리스에서 사용자는 웹 UI 또는 tsh 클라이언트를 사용하여 Teleport에 WebAuthn 또는 Touch ID 장치를 등록합니다.
이 가이드는 Teleport에 대한 패스워드리스 및 사용자명 없는 인증(아래에서 단순히 "패스워드리스"라고 함)을 제공하는 방법을 보여줍니다. 패스워드리스를 사용하면 사용자는 WebAuthn 또는 Touch ID만으로 Teleport에 인증할 수 있으며 사용자명과 비밀번호를 입력할 필요가 없습니다.
작동 방식#
패스워드리스에서 사용자는 웹 UI 또는 tsh 클라이언트를 사용하여 Teleport에 WebAuthn 또는 Touch ID 장치를 등록합니다. 사용자가 Teleport에 인증할 때 Teleport는 클라이언트가 인증자, 즉 로컬 장치로 서명할 인증 챌린지를 발급합니다. 인증자가 챌린지에 서명하고 Teleport Auth 서비스가 신뢰할 수 있는 인증 기관에 대해 서명을 검증합니다.
하드웨어 장치를 사용하는 경우 패스워드리스 등록은 상주 키 슬롯을 차지합니다. 상주 키(검색 가능한 자격증명이라고도 함)는 인증자(인증에 사용되는 장치)의 영구 메모리에 저장됩니다. 반면 다중 인증 키는 인증자에 의해 암호화되고 Teleport Auth 서비스 백엔드에 저장됩니다. 장치 유형에 관계없이 패스워드리스 등록은 일반 MFA에도 사용될 수 있습니다.
사전 요구 사항#
-
A running Teleport cluster. If you want to get started with Teleport, sign up for a free trial or set up a demo environment.
-
The
tctlandtshclients.Installing `tctl` and `tsh` clients
-
Determine the version of your Teleport cluster. The
tctlandtshclients must be at most one major version behind your Teleport cluster version. Send a GET request to the Proxy Service at/v1/webapi/findand use a JSON query tool to obtain your cluster version. Replace with the web address of your Teleport Proxy Service:$ TELEPORT_DOMAIN= $ TELEPORT_VERSION="$(curl -s https://$TELEPORT_DOMAIN/v1/webapi/find | jq -r '.server_version')" -
Follow the instructions for your platform to install
tctlandtshclients:
-
- Teleport가 WebAuthn용으로 구성되어 있어야 합니다. IdP 침해로부터 클러스터 강화 가이드를 참조하세요.
- WebAuthn 및 상주 키를 지원하는 하드웨어 장치. 또는 생체 인식/Touch ID가 있는 Mac 또는 Windows Hello를 지원하는 장치(Windows 10 19H1 이상)를 사용할 수 있습니다.
- WebAuthn을 지원하는 웹 브라우저. 브라우저가 WebAuthn을 지원하는지 확인하려면 WebAuthn 호환성 페이지를 확인하세요.
- Touch ID를 사용하려면 서명되고 공증된 버전의
tsh가 필요합니다. 즉, Homebrew에서 설치하거나 소스에서 컴파일된 버전은 작동하지 않습니다. macOS tsh 설치 프로그램을 다운로드하세요.
To check that you can connect to your Teleport cluster, sign in with tsh login, then
verify that you can run tctl commands using your current credentials.
For example, run the following command, assigning to the domain name of the Teleport Proxy Service in your cluster and to your Teleport username:
$ tsh login --proxy= --user=
$ tctl status
# Cluster (=teleport.url=)
# Version (=teleport.version=)
# CA pin (=presets.ca_pin=)
If you can connect to the cluster and run the tctl status command, you can use your
current credentials to run subsequent tctl commands from your workstation.
If you host your own Teleport cluster, you can also run tctl commands on the computer that
hosts the Teleport Auth Service for full permissions.
WebAuthn을 지원하는 Teleport 클러스터는 자동으로 패스워드리스를 지원합니다.
1/2단계. 등록#
tsh를 사용하여 패스워드리스 장치를 등록합니다:
$ tsh mfa add
# Choose device type [TOTP, WEBAUTHN, TOUCHID]: WEBAUTHN
# Enter device name: bio
# Allow passwordless logins [YES, NO]: YES
# Tap any *registered* security key
# Tap your *new* security key
# MFA device "bio" added.
장치 유형으로 WEBAUTHN 또는 TOUCHID 중 하나를 선택할 수 있습니다. "Allow passwordless logins"에 YES로 답해야 합니다.
패스워드리스만 사용할 계획이라면 두 개 이상의 장치를 등록하는 것이 권장됩니다. 휴대용 하드웨어 장치는 tsh, Teleport 웹 UI 및 다른 컴퓨터 간에 공유할 수 있어 이상적입니다.
tsh에 대한 Touch ID 등록
Touch ID 등록은 애플리케이션별로 격리됩니다. `tsh`에 대한 Touch ID 등록은 Chrome 또는 Safari에서 만든 등록과 다릅니다. 모든 애플리케이션에서 패스워드리스 접근을 위해 여러 애플리케이션에서 동일한 Touch ID 장치를 등록할 수 있습니다.2/2단계. 인증#
패스워드리스 자격증명을 사용하여 인증합니다:
$ tsh login --proxy=example.com --auth=passwordless
# Tap your security key
# > Profile URL: https://example.com
# Logged in as: codingllama
# Cluster: example.com
# Roles: access, editor
# Logins: codingllama
# Kubernetes: enabled
# Valid until: 2021-10-04 23:32:29 -0700 PDT [valid for 12h0m0s]
# Extensions: permit-agent-forwarding, permit-port-forwarding, permit-pty
$ tsh login --proxy=example.com --auth=passwordless
# Tap your security key
# > Profile URL: https://example.com
# Logged in as: codingllama
# Cluster: example.com
# Roles: access, editor, reviewer
# Logins: codingllama
# Kubernetes: enabled
# Valid until: 2021-10-04 23:32:29 -0700 PDT [valid for 12h0m0s]
# Extensions: permit-agent-forwarding, permit-port-forwarding, permit-pty
완전한 패스워드리스 클러스터는 기본적으로 패스워드리스 로그인으로 설정되어 --auth=passwordless가 불필요합니다. 패스워드리스를 기본으로 활성화하는 방법은 다음 섹션을 참조하세요.
Teleport 웹 UI에서도 패스워드리스 로그인을 실행할 수 있습니다. 웹 UI에서 패스워드리스 링크를 찾으세요.
선택 사항: 기본적으로 패스워드리스 활성화#
패스워드리스 애호가는 클러스터에서 기본적으로 패스워드리스를 활성화할 수 있습니다.
이 구성은 패스워드리스 장치가 등록되지 않은 사용자에 대해서도 Teleport의 동작을 변경하므로 기존 사용자는 첫 번째 패스워드리스 등록을 받기 위해 tsh login --proxy=example.com --auth=local을 사용하여 인증해야 할 수 있습니다.
기본적으로 패스워드리스를 활성화하려면 클러스터 구성에 connector_name: passwordless를 추가합니다.
다음 명령을 사용하여 클러스터 인증 기본 설정 구성을 편집합니다:
$ tctl edit cluster_auth_preference
구성에 아래와 같이 connector_name 필드가 포함되어 있는지 확인합니다:
kind: cluster_auth_preference
version: v2
metadata:
name: cluster-auth-preference
spec:
type: local
second_factors: ["webauthn"]
webauthn:
rp_id: example.com
connector_name: passwordless # passwordless by default
문제 해결#
"Allow passwordless logins"가 나타나지 않음#
tsh mfa add 중에 "Allow passwordless logins" 프롬프트가 표시되지 않으면 이전 버전의 tsh를 사용하고 있을 수 있습니다. 설치 페이지에서 최신 tsh를 다운로드하세요.
하드웨어 장치를 사용할 수 없음#
tsh는 패스워드리스 등록을 위해 특정 기능이 있는 하드웨어 장치에 대해서만 프롬프트를 표시합니다. 장치가 깜빡이지 않으면 패스워드리스 로그인을 지원하지 않을 수 있습니다.
다음은 포괄적이지 않은 요구 사항 목록입니다:
- 장치가 WebAuthn(FIDO2 또는 CTAP2라고도 함)을 지원해야 합니다.
- 장치가 사용자 확인(생체 인식 또는 PIN)을 지원할 수 있어야 합니다.
- 장치에 PIN이 설정되어 있어야 합니다.
- 장치에 지문이 등록되어 있어야 합니다(생체 인식인 경우). 일반적으로 PIN과 지문 모두 필요합니다.
tsh는 하드웨어 장치에 접근하기 위해 내장된 libfido2를 사용합니다. Linux에서 실행 중인 경우 장치에 접근하는 데 필요한 udev 규칙이 없을 수 있습니다. 필요한 udev 규칙을 제공할 수 있는 libfido2 설치 지침을 따르세요.
Touch ID를 사용할 수 없음#
Touch ID에 문제가 있으면 최신 독립 실행형 버전의 tsh를 사용하고 있는지 확인하세요. macOS tsh 설치 프로그램을 다운로드하세요.
Touch ID 지원에는 Touch ID 센서와 Secure Enclave가 있는 Mac이 필요합니다.
tsh touchid diag 명령을 실행하여 요구 사항을 확인할 수 있습니다. 지원 장치와 tsh 바이너리는 다음과 유사한 출력을 표시해야 합니다:
$ tsh touchid diag
# Has compile support? true
# Has signature? true
# Has entitlements? true
# Passed LAPolicy test? true
# Passed Secure Enclave test? true
# Touch ID enabled? true
Windows Webauthn을 사용할 수 없음#
tsh에 대한 Windows Webauthn 지원에는 Windows 10 19H1 이상이 필요합니다.
tsh webauthnwin diag 명령을 실행하여 요구 사항을 확인할 수 있습니다. 지원 장치와 tsh 바이너리는 다음과 같은 출력을 표시해야 합니다:
$ tsh webauthnwin diag
# WebauthWin available: true
# Compile support: true
# DLL API version: 4
# Has platform UV: true
# Register successful: true
# Login successful: true
패스워드리스 비활성화#
클러스터에 대한 패스워드리스 접근을 금지하려면 구성에 passwordless: false를 추가합니다. 다음 명령을 사용하여 클러스터 인증 기본 설정을 편집합니다:
$ tctl edit cluster_auth_preference
편집기에서 cluster_auth_preference에 다음과 유사한 passwordless 필드가 포함되어 있는지 확인합니다:
kind: cluster_auth_preference
version: v2
metadata:
name: cluster-auth-preference
spec:
type: local
second_factors: ["webauthn"]
webauthn:
rp_id: example.com
passwordless: false # disable passwordless
편집기를 저장하고 닫아 변경 사항을 적용합니다.
다중 인증(MFA) 장치가 패스키가 된 이유는 무엇인가요?#
MFA 인증자가 갑자기 패스키로 나열되기 시작했다면 그것은 항상 패스키였기 때문입니다. Chrome 또는 Safari Touch ID 키와 같은 특정 장치나 애플리케이션은 Teleport의 지침에도 불구하고 항상 패스키로 생성됩니다.
인증자가 등록 중에 credProps 확장으로 응답하거나 성공적인 패스워드리스 로그인에 사용되면 Teleport는 이전에 그렇지 않았더라도 자동으로 패스키로 표시합니다.
