인포레터에서 최신 DevOps 트렌드를 격주로 만나보세요!
세션별 MFA
Teleport는 다음과 같은 새로운 세션을 시작할 때 추가 다단계 인증(MFA) 검사가 필요하도록 지원합니다:
- SSH 연결 (단일
tsh ssh
호출, 웹 UI SSH 세션 또는 Teleport Connect SSH 세션) - Kubernetes 세션 (단일
kubectl
호출) - 데이터베이스 세션 (단일
tsh db connect
호출) - 애플리케이션 세션
- 데스크탑 세션
이것은 사용자를 디스크에 저장된 Teleport 인증서의 손상을 방지하는 고급 보안 기능입니다.
세션별 MFA 외에도 SSO 공급자에서 로그인 MFA를 활성화하고 모든 로컬 Teleport 사용자 에 대해 보안을 강화합니다.
전제 조건
-
실행 중인 Teleport 클러스터 버전 17.0.0-dev 이상. Teleport를 시작하려면 가입하여 무료 평가판을 이용하거나 데모 환경 설정 방법을 확인하십시오.
-
tctl
관리자 도구와tsh
클라이언트 도구.tctl
및tsh
다운로드 방법에 대한 지침은 설치를 방문하십시오.
- 연결이 가능한지 확인하기 위해
tsh login
으로 로그인한 다음, 현재 자격 증명을 사용하여tctl
명령어를 실행할 수 있는지 확인하십시오. 예를 들어:클러스터에 연결할 수 있고tsh login --proxy=teleport.example.com --user=email@example.comtctl status클러스터 teleport.example.com
버전 17.0.0-dev
CA 핀 sha256:abdc1245efgh5678abdc1245efgh5678abdc1245efgh5678abdc1245efgh5678
tctl status
명령어를 실행할 수 있다면, 현재 자격 증명을 사용하여 워크스테이션에서 후속tctl
명령어를 실행할 수 있습니다.
자신의 Teleport 클러스터를 호스팅하는 경우, Teleport Auth Service를 호스팅하는 컴퓨터에서 전체 권한으로tctl
명령어를 실행할 수도 있습니다. - 이 클러스터에 WebAuthn 구성됨 WebAuthn 지원
- YubiKey 또는 SoloKey와 같은 두 번째 하드웨어 장치
- SSH 또는 Teleport 웹 UI에서 데스크탑 세션을 사용하는 경우 WebAuthn 지원가 있는 웹 브라우저.
FIPS에 대한 세션별 MFA
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 검사를 시행하려면 클러스터 인증 구성을 편집합니다.
cluster_auth_preference
리소스를 편집하십시오:
tctl edit cap
리소스에 다음 내용이 포함되어 있는지 확인하십시오:
kind: cluster_auth_preference
metadata:
name: cluster-auth-preference
spec:
require_session_mfa: true
version: v2
편집기에서 파일을 저장하고 닫아 변경 사항을 적용하십시오.
역할별
특정 역할에 대해 MFA 검사를 시행하려면 역할을 업데이트하여 다음을 포함하십시오:
kind: role
version: v7
metadata:
name: example-role-with-mfa
spec:
options:
# 이 역할에 대해 세션별 MFA 요구
require_session_mfa: true
allow: ...
deny: ...
역할별 시행은 역할의 allow
섹션과 일치하는 리소스에 대해 접근할 때만 적용됩니다.
역할 예제
역할에 대한 세션별 MFA 검사를 설정하는 예를 살펴보겠습니다.
Jerry는 회사 인프라에 접근할 수 있는 엔지니어입니다. 인프라는 개발 환경과 생산 환경으로 나누어져 있습니다. 보안 엔지니어인 Olga는 생산 서버에 접근할 때 MFA 검사를 시행하고자 합니다. 개발 서버는 엔지니어의 불편함을 줄이기 위해 이를 요구하지 않습니다.
Olga는 두 개의 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: {}
Olga는 두 역할 모두를 모든 엔지니어, 즉 Jerry에게 할당합니다.
Jerry가 노드 dev1.example.com
(로그인 jerry
로 env: dev
레이블을 가진) 에 로그인하면 특별한 일이 발생하지 않습니다:
tsh ssh jerry@dev1.example.comjerry@dev1.example.com >
하지만 Jerry가 노드 prod3.example.com
(로그인 jerry
로 env: prod
레이블을 가진) 에 로그인하면 MFA 검사를 요구받습니다:
tsh ssh jerry@prod3.example.comTap any security key <tap>
jerry@prod3.example.com >
OTP
tsh
를 제한된 환경에서 사용하는 경우, tsh --mfa-mode=otp ssh prod3.example.com
을 통해 OTP 사용을 설정할 수 있습니다.
OTP는 연결을 설정할 때 tsh
또는 Teleport Connect를 사용할 때만 세션별 MFA와 함께 사용할 수 있습니다. Teleport의 웹 UI에서 세션별 MFA를 사용하려면 하드웨어 MFA 키가 필요합니다.
세션별 MFA가 클러스터 전체에서 활성화된 경우, Jerry는 dev1.example.com
에 로그인할 때도 MFA를 요구받습니다.
데이터베이스 접근을 위한 세션별 MFA
Teleport 데이터베이스 서비스는 연결별 MFA를 지원합니다. Jerry가 데이터베이스 prod-mysql-instance
(레이블 env: prod
로) 에 연결할 때, 각 tsh db connect
또는 tsh proxy db
호출에 대해 MFA 검사를 요구받습니다:
tsh db connect prod-mysql-instance보안 키를 탭하십시오
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에 대한 세션별 WebAuthn 인증은 오직
kubectl
만 지원합니다. - 데스크톱 액세스의 경우, WebAuthn 디바이스만 지원됩니다.