Teleport는 새로운 세션을 시작할 때 추가 다단계 인증 체크를 요구할 수 있습니다:
- SSH 연결(단일
tsh ssh
호출, 웹 UI SSH 세션 또는 Teleport Connect SSH 세션) - Kubernetes 세션(단일
kubectl
호출) - 데이터베이스 세션(단일
tsh db connect
호출) - 애플리케이션 세션
- 데스크탑 세션
이것은 사용자를 디스크에 저장된 Teleport 인증서의 침해로부터 보호하는 고급 보안 기능입니다.
세션별 MFA 외에도 SSO 제공자에서 로그인 MFA를 활성화하고 모든 로컬 Teleport 사용자에 대해 보안을 개선하세요.
필수조건
-
실행 중인 Teleport 클러스터 버전 이상. Teleport를 시작하려면, 가입하기 위해 무료 평가판에 등록하거나 데모 환경 설정하기를 참조하세요.
-
tctl
관리 도구와tsh
클라이언트 도구.tctl
과tsh
다운로드에 대한 지침은 설치를 방문하세요.
- 당신의 Teleport 클러스터에 연결할 수 있는지 확인하려면,
tsh login
으로 로그인한 다음 현재 자격 증명을 사용하여tctl
명령어를 실행할 수 있는지 확인하십시오. 예를 들어:클러스터에 연결하고tsh login --proxy=teleport.example.com --user=email@example.comtctl status클러스터 teleport.example.com
버전 16.2.0
CA 핀 sha256:abdc1245efgh5678abdc1245efgh5678abdc1245efgh5678abdc1245efgh5678
tctl status
명령어를 실행할 수 있다면, 현재 자격 증명을 사용하여 작업대에서 후속tctl
명령어를 실행할 수 있습니다. 자신의 Teleport 클러스터를 호스팅하는 경우, Teleport 인증 서비스를 호스팅하는 컴퓨터에서 전체 권한으로tctl
명령어를 실행할 수도 있습니다. - 이 클러스터에 WebAuthn 구성됨
- YubiKey 또는 SoloKey와 같은 두 번째 요인 하드웨어 장치
- WebAuthn 지원이 있는 웹 브라우저 (Teleport 웹 UI에서 SSH 또는 데스크탑 세션을 사용할 경우).
Teleport FIPS 빌드는 로컬 사용자를 비활성화합니다. FIPS 빌드를 사용하여 세션별 MFA를 사용하도록 WebAuthn을 구성하려면 teleport.yaml
에 다음 내용을 제공하세요:
teleport:
auth_service:
local_auth: false
second_factor: on
webauthn:
rp_id: teleport.example.com
세션별 MFA 구성
세션별 MFA는 클러스터 전체에서 시행되거나 특정 역할에 대해서만 시행될 수 있습니다.
클러스터 전체
모든 역할에 대해 MFA 체크를 시행하려면 클러스터 인증 구성을 수정하세요:
Auth Server에서 teleport.yaml
을 업데이트하여 다음 내용을 포함하세요:
auth_service:
authentication:
# 클러스터 전체에서 세션별 MFA 요구
require_session_mfa: yes
기존의 cluster_auth_preference
리소스를 가져오세요:
tctl get cap > cap.yaml
cap.yaml
에 다음 내용이 포함되어 있는지 확인하세요:
kind: cluster_auth_preference
metadata:
name: cluster-auth-preference
spec:
require_session_mfa: true
version: v2
리소스를 생성하세요:
tctl create -f cap.yaml
기존의 cluster_auth_preference
리소스를 가져오세요:
tctl get cap > cap.yaml
cap.yaml
에 다음 내용이 포함되어 있는지 확인하세요:
kind: cluster_auth_preference
metadata:
name: cluster-auth-preference
spec:
require_session_mfa: true
version: v2
리소스를 생성하세요:
tctl create -f cap.yaml
역할별
특정 역할에 대해 MFA 체크를 시행하려면 역할을 업데이트하여 다음을 포함하세요:
kind: role
version: v7
metadata:
name: example-role-with-mfa
spec:
options:
# 이 역할에 대해 세션별 MFA 요구
require_session_mfa: true
allow:
...
deny:
...
역할별 시행은 역할의 allow
섹션과 일치하는 리소스에 접근할 때만 적용됩니다.
역할 예제
역할에 대한 세션별 MFA 체크를 설정하는 예제를 살펴보겠습니다.
제리는 회사 인프라에 접근할 수 있는 엔지니어입니다. 인프라는 개발 및 프로덕션 환경으로 나뉘어 있습니다. 보안 엔지니어인 올가는 프로덕션 서버에 접근하기 위해 MFA 체크를 시행하기를 원합니다. 개발 서버는 엔지니어의 부담을 줄이기 위해 이것을 요구하지 않습니다.
올가는 두 개의 Teleport 역할인 access-dev
와 access-prod
를 정의합니다:
# access-dev.yaml
kind: role
version: v7
metadata:
name: access-dev
spec:
allow:
node_labels:
env: dev
logins:
- jerry
---
# access-prod.yaml
kind: role
version: v7
metadata:
name: access-prod
spec:
options:
# 프로덕션 접근을 위한 세션별 MFA 요구
require_session_mfa: true
allow:
node_labels:
env: prod
logins:
- jerry
deny: {}
올가는 두 역할을 모든 엔지니어에게 부여합니다. 제리가 노드 dev1.example.com
에 로그인할 때(로그인 jerry
로서 레이블 env: dev
가 설정된 경우) 특별한 일이 발생하지 않습니다:
tsh ssh jerry@dev1.example.comjerry@dev1.example.com >
그러나 제리가 노드 prod3.example.com
에 로그인할 때(로그인 jerry
로서 레이블 env: prod
가 설정된 경우) MFA 체크를 요청받습니다:
tsh ssh jerry@prod3.example.comTap any security key <tap>
jerry@prod3.example.com >
제한된 환경에서 tsh
를 사용하는 경우, tsh --mfa-mode=otp ssh prod3.example.com
을 입력하여 OTP를 사용하도록 설정할 수 있습니다.
OTP는 세션별 MFA를 사용하는 경우에만 tsh
또는 Teleport Connect를 통해 연결을 설정하는 데 사용할 수 있습니다. Teleport의 웹 UI와 함께 사용할 경우 하드웨어 MFA 키가 필요합니다.
세션별 MFA가 클러스터 전체에서 활성화된 경우, 제리는 dev1.example.com
에 로그인할 때도 MFA를 요청받습니다.
Teleport 데이터베이스 서비스는 연결별 MFA를 지원합니다. 제리가 데이터베이스 prod-mysql-instance
에 연결할 때(레벨 env: prod
에서) 각 tsh db connect
또는 tsh proxy db
호출에 대해 MFA 체크를 요청받습니다:
tsh db connect prod-mysql-instanceTap any security key
MySQL 모니터에 오신 것을 환영합니다. 명령은 ; 또는 \g로 종료됩니다.
MySQL 연결 ID는 10002입니다.
서버 버전: 8.0.0-Teleport (Ubuntu)
저작권 (c) 2000, 2021, Oracle 및/또는 그 자회사.
Oracle은 Oracle Corporation 및/또는 그 자회사에 등록된 상표입니다. 기타 이름은 각 소유자의 상표일 수 있습니다.
'help;' 또는 '\h'를 입력하여 도움말을 얻을 수 있습니다. '\c'를 입력하여 현재 입력된 문장을 지울 수 있습니다.
mysql>
제한사항
이 기능에 대한 현재 제한사항은 다음과 같습니다:
- 웹 UI 외의 SSH 연결의 경우, 세션별 MFA를 사용하려면
tsh
또는 Teleport Connect 클라이언트를 사용해야 합니다. (OpenSSHssh
클라이언트는 세션별 MFA와 함께 작동하지 않습니다). - Kubernetes에 대해서는 오직
kubectl
만이 세션별 WebAuthn 인증을 지원합니다. - 데스크탑 접근의 경우 오직 WebAuthn 장치만 지원됩니다.