정시 접근 요청은 텔레포트 엔터프라이즈의 기능입니다.
텔레포트 커뮤니티 에디션 사용자는 텔레포트 CLI를 사용하여 역할을 요청함으로써 접근 요청이 작동하는 방식의 미리 보기를 얻을 수 있습니다. 전체 접근 요청 기능, 리소스 접근 요청 및 직관적이고 검색 가능한 UI는 텔레포트 엔터프라이즈에서 사용할 수 있습니다.
RBAC 보안 설정
텔레포트의 역할 기반 접근 제어(RBAC)는 사용자가 어떤 역할에 접근 요청을 할 수 있는지를 구성할 수 있도록 해줍니다. 이 예제에서는 두 개의 역할을 정의하겠습니다:
contractor
: 이 역할을 가진 사용자는dba
역할에 대한 Elevated 접근을 요청할 수 있습니다.dba
: 이 역할은 데이터베이스에 대한 접근을 부여합니다.
요청 승인자를 위한 역할은 없습니다. 요청 승인 규칙은 텔레포트 엔터프라이즈에서만 구성할 수 있기 때문입니다. 텔레포트 커뮤니티 에디션에서는 tctl
을 Auth 서버에서 실행하여 승인이 수행되어야 합니다.
Contractor 역할
이 역할을 가진 사용자는 dba
역할에 대한 접근을 요청할 수 있습니다.
kind: role
version: v5
metadata:
name: contractor
spec:
allow:
request:
roles: ['dba']
이 역할을 contractor-role.yaml
파일에 정의하고 tctl
로 생성합니다:
tctl create contractor-role.yaml
사용자(alice
예시)에게 이 역할을 할당하려면 tctl
을 사용합니다:
tctl users update --set-roles \ $(tctl get users/alice --format=json | jq -r '.[].spec.roles | join(",")'),contractor alice
DBA 역할
이 역할은 데이터베이스에 대한 접근을 부여합니다.
kind: role
version: v5
metadata:
name: dba
spec:
allow:
db_labels:
'*': '*'
options:
# 요청 시점부터 계약자가 이 역할을 1시간 동안만 사용할 수 있도록 허용합니다.
max_session_ttl: 1h
이 역할을 dba-role.yaml
파일에 정의하고 tctl
로 생성합니다:
tctl create dba-role.yaml
접근 요청
텔레포트 커뮤니티 에디션에서는 요청이 tsh
CLI에서 이루어집니다. 접근 요청을 생성하려면 tsh request create
명령을 사용합니다.
tsh request create \ --roles=dba \ --reviewers=bob \ --reason="오늘 밤 DB 마이그레이션 수행"
기본적으로 이 명령은 요청이 승인될 때까지 블록합니다. 승인을 기다리지 않고 요청을 제출하려면 --nowait
플래그를 추가합니다.
또한, tsh
는 로그인 과정 중 자동으로 접근 요청을 생성할 수 있습니다. 이 동작을 활성화하려면 --request-roles
플래그를 지정합니다:
tsh login --user=alice --request-roles=dba요청 승인을 기다리는 중... (id: bc8ca931-fec9-4b15-9a6f-20c13c5641a9)
이것은 요청이 승인된 후 자동으로 dba
역할로 자격 증명을 발급하도록 대기합니다.
로그인 후 승인을 기다리지 않고 요청을 제출하려면 --request-nowait
플래그를 추가합니다. 이 경우, 로그인 시 일반적인 역할을 받게 되고 요청이 승인된 후에 접근을 올려야 합니다.
승인된 접근 요청으로 로그인
tsh login --request-id=bc8ca931-fec9-4b15-9a6f-20c13c5641a9
요청을 나열하려면 tsh request ls
를 사용합니다.
tsh request ls토큰 요청자 메타데이터 생성일시 (UTC) 상태
------------------------------------ --------- -------------- ------------------- -------
bc8ca931-fec9-4b15-9a6f-20c13c5641a9 alice roles=dba 07 Nov 19 19:38 UTC PENDING
요청 검토
텔레포트 커뮤니티 에디션에서는 접근 요청이 tctl
을 Auth 서버에서 실행할 수 있는 클러스터 관리자가 검토해야 합니다.
관리자는 tctl requests ls
로 요청을 나열할 수 있으며, 특정 요청의 세부사항은 tctl requests get <id>
로 확인할 수 있습니다.
요청을 승인하거나 거부하려면 tctl request approve
또는 tctl request deny
를 사용합니다. 예를 들어 요청을 거부하려면:
tctl request deny \ --reason="오늘의 마이그레이션이 취소되었습니다" \ bc8ca931-fec9-4b15-9a6f-20c13c5641a9
다른 역할을 편집할 수 있는 역할에 대한 접근을 부여하면 사용자가 영구적으로 자신의 권한을 상승시킬 수 있습니다. 요청을 검토할 때 요청된 역할과 요청이 승인될 경우 사용자에게 적용될 권한을 신중하게 고려하는 것이 중요합니다.
검토자는 요청에서 설정된 역할을 무시하면서 요청을 승인할 수 있습니다:
tctl request approve \ --roles="db-support" \ --reason="db-support에 대한 접근을 승인, dba는 필요하지 않음" \ bc8ca931-fec9-4b15-9a6f-20c13c5641a9