Teleport Community Edition 역할 접근 요청
Teleport v18.9적시(Just-in-time) 접근 요청은 Teleport Enterprise의 기능입니다. Teleport Community Edition 사용자는 Teleport CLI를 사용해 역할을 요청함으로써 접근 요청이 어떻게 동작하는지 미리 체험해볼 수 있습니다.
적시(Just-in-time) 접근 요청은 Teleport Enterprise의 기능입니다.
Teleport Community Edition 사용자는 Teleport CLI를 사용해 역할을 요청함으로써 접근 요청이 어떻게 동작하는지 미리 체험해볼 수 있습니다. 리소스 접근 요청과 직관적이고 검색 가능한 UI를 포함한 전체 접근 요청 기능은 Teleport Enterprise에서 사용할 수 있습니다.
이 가이드는 모든 Teleport 에디션에서 사용 가능하지만, Teleport Community Edition 사용자에게는 유일하게 사용 가능한 옵션인 CLI 워크플로를 설명합니다. Teleport Enterprise의 경우, 검토자가 조직에서 이미 사용 중인 커뮤니케이션 도구를 통해 알림을 받을 수 있도록 접근 요청 플러그인을 사용하는 것을 권장합니다. 자세한 내용은 접근 요청 플러그인을 참고하세요.
RBAC 보안 설정#
Teleport의 역할 기반 접근 제어(role-based access control, RBAC)를 사용하면 사용자가 접근을 요청할 수 있는 역할을 구성할 수 있습니다. 이 예제에서는 다음 두 가지 역할을 정의합니다:
contractor: 이 역할을 가진 사용자는dba역할에 대한 상승된 접근을 요청할 수 있습니다dba: 이 역할은 데이터베이스에 대한 접근 권한을 부여합니다
요청 승인 규칙은 Teleport Enterprise에서만 구성할 수 있으므로, 요청 승인자를 위한 역할은 존재하지 않습니다. Teleport Community Edition에서는 Teleport Auth 서비스에서 tctl을 실행하여 승인을 수행해야 합니다.
Contractor 역할
이 역할을 가진 사용자는 dba 역할에 대한 접근을 요청할 수 있습니다.
kind: role
version: v5
metadata:
name: contractor
spec:
allow:
request:
roles: ['dba']
이 역할을 contractor-role.yaml 파일에 정의하고 tctl로 생성합니다:
$ tctl create contractor-role.yaml
Web UI를 사용하여 역할을 생성하고 편집할 수도 있습니다. Access -> Roles로 이동하여 Create New Role을 클릭하거나 편집할 기존 역할을 선택하십시오.
tctl을 사용해 이 역할을 사용자(이 예제에서는 alice)에게 할당합니다:
$ 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:
# Only allows the contractor to use this role for 1 hour from time of request.
max_session_ttl: 1h
이 역할을 dba-role.yaml 파일에 정의하고 tctl로 생성합니다:
$ tctl create dba-role.yaml
접근 요청하기#
Teleport Community Edition에서는 tsh CLI를 통해 요청이 이루어집니다. 접근 요청을 생성하려면 tsh request create 명령을 사용합니다.
$ tsh request create \
--roles=dba \
--reviewers=bob \
--reason="performing DB migration tonight"
기본적으로 이 명령은 요청이 승인될 때까지 대기합니다. 승인을 기다리지 않고 요청을 제출하려면 --nowait 플래그를 추가하세요.
또한 tsh는 로그인 과정에서 자동으로 접근 요청을 생성할 수도 있습니다. 이 동작을 활성화하려면 --request-roles 플래그를 지정하세요:
$ tsh login --user=alice --request-roles=dba
# Seeking request approval... (id: bc8ca931-fec9-4b15-9a6f-20c13c5641a9)
이 명령은 요청이 승인될 때까지 대기하며, 요청이 승인되면 자동으로 dba 역할이 포함된 자격 증명을 발급합니다.
승인을 기다리지 않고 로그인 및 요청을 제출하려면 --request-nowait 플래그를 추가하세요. 이 경우 로그인 시 기존 역할을 받게 되며, 요청이 승인된 후 접근 권한을 상승시킬 수 있습니다.
# log in with an approved access request
$ tsh login --request-id=bc8ca931-fec9-4b15-9a6f-20c13c5641a9
tsh request ls를 사용해 요청 목록을 확인할 수 있습니다.
$ tsh request ls
# Token Requestor Metadata Created At (UTC) Status
# ------------------------------------ --------- -------------- ------------------- -------
# bc8ca931-fec9-4b15-9a6f-20c13c5641a9 alice roles=dba 07 Nov 19 19:38 UTC PENDING
요청 검토하기#
Teleport Community Edition에서는 Auth 서비스에서 tctl을 실행할 수 있는 클러스터 관리자가 접근 요청을 검토해야 합니다.
관리자는 tctl requests ls로 요청 목록을 확인할 수 있으며, tctl requests get <id>로 특정 요청의 세부 정보를 확인할 수 있습니다.
요청을 승인하거나 거부하려면 tctl request approve 또는 tctl request deny를 사용하세요.
예를 들어, 요청을 거부하려면 다음과 같이 합니다:
$ tctl request deny \
--reason="today's migration has been canceled" \
bc8ca931-fec9-4b15-9a6f-20c13c5641a9
다른 역할을 편집할 수 있는 역할에 대한 접근 권한을 부여하면 사용자가 자신의 권한을 영구적으로 상승시킬 수 있습니다. 요청을 검토할 때는 요청된 역할과, 요청이 승인될 경우 사용자에게 적용될 권한을 신중하게 고려하는 것이 중요합니다.
검토자는 요청에 포함된 역할 집합을 재정의하면서 요청을 승인할 수도 있습니다:
$ tctl request approve \
--roles="db-support" \
--reason="approved access to db-support, dba is not necessary" \
bc8ca931-fec9-4b15-9a6f-20c13c5641a9