액세스 목록 참조
액세스 목록은 Teleport 사용자가 Teleport 내에서 관리되는 리소스에 대한 장기 액세스 권한을 부여받을 수 있도록 합니다. 감사 검토는 향후 Teleport 릴리즈에서 제공될 예정입니다. 액세스 목록은 사용자에게 장기간 역할과 특성을 부여합니다.
액세스 목록은 Teleport 사용자가 Teleport 내에서 관리되는 리소스에 대한 장기 액세스 권한을 부여받을 수 있도록 합니다. 액세스 목록을 통해 관리자와 액세스 목록 소유자는 특정 역할과 특성에 대한 구성원을 정기적으로 감사하고 제어할 수 있으며, 이는 Teleport의 기존 RBAC 시스템과 쉽게 연계됩니다.
감사 검토는 향후 Teleport 릴리즈에서 제공될 예정입니다.
액세스 목록은 무엇을 하나요?#
액세스 목록은 사용자에게 장기간 역할과 특성을 부여합니다. 액세스 목록에 추가되어 구성원 요건을 충족하는 사용자는 Teleport에 로그인할 때 이러한 역할과 특성을 부여받습니다. 이 기능을 액세스 목록의 내장된 정기 감사 및 액세스 검토와 결합하면 Teleport 관리자는 사용자에게 부여된 장기 액세스에 대한 감사 추적을 갖게 됩니다.
액세스 목록은 액세스 요청과 어떻게 다른가요?#
액세스 목록은 Teleport 리소스에 대한 장기 액세스를 위한 것이며 액세스 요청은 임시 권한 상승을 위한 것입니다. 액세스 목록으로 부여된 액세스는 수개월 단위로 유지되며, 액세스 요청으로 부여된 액세스는 몇 시간 또는 며칠 단위로 유지됩니다.
액세스 목록 소유권#
액세스 목록 소유자는 액세스 목록에 대한 특별한 권한을 부여받은 Teleport 사용자 또는 중첩된 액세스 목록입니다. 이러한 소유자는 액세스 목록의 일부로 명시적으로 정의되며, editor 프리셋 역할이 갖는 액세스 목록에 대한 RBAC 액세스 권한이 있는 Teleport 사용자가 추가해야 합니다. 소유자는 소유권이 효력을 발휘하기 위해 요건을 충족해야 합니다.
소유자가 요건을 충족하는 경우 소유자는 다음을 수행할 수 있습니다:
- 구성원 요건 제어.
- 액세스 목록 구성원 목록 조회.
- 액세스 목록에 대한 구성원 자격 프로비저닝 및 취소.
- 액세스 목록 감사.
소유자는 액세스 목록에서 소유자를 추가하거나 제거하거나 액세스 목록이 부여하는 역할과 특성을 제어할 수 없습니다.
액세스 목록 소유자는 이 액세스 목록에서 부여한 리소스를 포함하는 리소스 기반 액세스 요청에 제안된 검토자로 자동으로 추가됩니다. 자세한 내용은 액세스 요청 검토 가이드를 참조하세요.
액세스 목록 구성원#
액세스 목록 구성원은 액세스 목록에서 지정한 역할과 특성이 부여된 Teleport 사용자 또는 중첩된 액세스 목록입니다. 로그인 시 사용자는 정적으로 정의된 사용자 권한과 함께 이러한 역할과 특성을 부여받습니다. 이러한 역할과 특성은 Teleport의 기존 RBAC 시스템과 연계됩니다. 구성원에게는 선택적으로 만료 날짜가 부여될 수 있으며, 그 이후에는 구성원 자격이 더 이상 사용자에게 권한을 부여하지 않습니다.
구성원은 구성원 자격이 효력을 발휘하기 위해 요건을 충족해야 합니다.
중첩된 액세스 목록#
액세스 목록은 구성원 또는 소유자로서 다른 액세스 목록에 중첩될 수 있습니다. 이를 통해 권한이 여러 수준의 부모 액세스 목록에서 상속될 수 있는 계층적 권한 구조가 가능합니다. 상속은 재귀적입니다. 하위 액세스 목록의 구성원은 자체 구성원을 가진 액세스 목록일 수 있으며, 이와 같이 계속됩니다.
부모 액세스 목록 찾기#
tctl과 jq가 모두 설치되어 있으면 다음 명령 시퀀스를 사용하여 주어진 목록의 부모인 액세스 목록을 찾을 수 있습니다.
아래 예시에서 참고:
- 액세스 목록 제목(spec.title)은 사람이 읽을 수 있는 이름입니다.
- 액세스 목록 이름(metadata.name)은 Teleport 내부에서 사용하는 UUID입니다.
# CHILD_TITLE 변수 변경
$ CHILD_TITLE="Human readable Access List title"
# 아래 두 줄은 변경할 필요 없음
$ CHILD_NAME=$(tctl get access_list --format json | jq -r --arg CHILD_TITLE "$CHILD_TITLE" '.[] | select(.spec.title==$CHILD_TITLE) | .metadata.name')
$ tctl get access_list --format json | jq -r --arg CHILD_NAME "$CHILD_NAME" '.[] | select(.spec.owners[].name==$CHILD_NAME) | .spec.title'
구성원 상속#
액세스 목록이 다른 액세스 목록의 구성원인 경우 중첩된 액세스 목록의 구성원은 부모 액세스 목록의 구성원 권한(역할과 특성)을 상속받습니다.
상속을 통해 구성원 자격이 부여된 사용자는 중첩된 액세스 목록의 구성원 요건과 부모 액세스 목록의 구성원 요건을 모두 충족해야 구성원 자격이 유효합니다.
소유권 상속#
액세스 목록이 다른 액세스 목록의 소유자인 경우 중첩된 액세스 목록의 구성원은 소유자 권한(역할과 특성)과 부모 액세스 목록의 소유권을 상속받습니다.
상속을 통해 소유권이 부여된 사용자는 중첩된 액세스 목록의 구성원 요건과 부모 액세스 목록의 소유권 요건을 모두 충족해야 소유권이 유효합니다.
제한 사항#
- 순환 중첩: 순환 중첩은 허용되지 않습니다. 액세스 목록의 구성원 자격과 소유권은 직접적으로나 간접적으로 자기 참조적일 수 없습니다.
- 중첩 깊이: 중첩은 최대 10단계로 제한됩니다. 이는 하위 액세스 목록이 계층 구조에서 루트 액세스 목록으로부터 10단계 이상 떨어져 있을 수 없다는 것을 의미합니다.
- 삭제: 다른 액세스 목록의 구성원 또는 소유자인 액세스 목록은 삭제할 수 없습니다. 액세스 목록은 삭제하기 전에 모든 부모 액세스 목록에서 제거해야 합니다.
액세스 목록 감사#
액세스 목록은 감사 주기를 지정하여 정의해야 하며, 이는 액세스 목록을 얼마나 자주 감사해야 하는지를 지정합니다. 액세스 목록이 제때 감사되지 않으면 감사 검토가 발생할 때까지 소유자는 Web UI에서 알림을 받습니다.
액세스 목록 리소스 개요#
version: v1
kind: access_list
metadata:
name: ea6cccbe-ceac-4776-8a89-4b1365fc03f5
spec:
title: "Access List Title"
# audit은 액세스 목록과 그 구성원을 얼마나 자주 감사해야 하는지,
# 다음 감사 날짜와 함께 정의합니다.
audit:
recurrence:
# Frequency는 액세스 목록 검토 사이의 빈도입니다.
# 기본값은 6months입니다.
# 가능한 값: 1month, 3months, 6months, 1year
frequency: 6months
# DayOfMonth는 이후 검토가 예약될 월의 날짜입니다.
# 기본값은 1입니다.
# 가능한 값: 1, 15, last
day_of_month: "1"
# 이 액세스 목록이 감사되어야 하는 다음 시간.
# 설정하지 않으면 다음 감사 날짜가 자동으로 선택됩니다.
notifications:
# 액세스 요청 플러그인이 감사 기한 전에 알리기 시작할 시기.
# golang의 time.ParseDuration 함수 형식:
# https://pkg.go.dev/time#ParseDuration
# 기본값은 2주입니다.
start: 336h # 2주
next_audit_date: "2025-01-01T00:00:00Z"
description: "액세스 목록과 그 목적에 대한 설명"
# owners는 액세스 목록을 소유하는 Teleport 사용자 또는 액세스 목록의 목록입니다.
# 소유자가 소유권 요건을 충족하면 이러한 사용자는
# 구성원 요건과 액세스 목록 구성원 자격을 제어할 수 있습니다.
owners:
- description: test user 1
name: teleport-admin
membership_kind: MEMBERSHIP_KIND_USER
# ownership_requires는 소유자가 액세스 목록과 그 구성원을 관리할 수 있기 위해
# 필요한 역할과 특성을 정의합니다.
ownership_requires:
roles:
- access
# grants는 이 액세스 목록의 소유자인 사용자에게 부여되는 역할과 특성을 제어합니다.
owner_grants:
roles:
- access
traits:
trait1:
- value1
# grants는 이 액세스 목록의 구성원인 사용자에게 부여되는 역할과 특성을 제어합니다.
grants:
roles:
- access
traits:
trait1:
- value1
# membership_requires는 구성원이 위의 역할과 특성을 부여받기 위해
# 필요한 역할과 특성을 정의합니다. 사용자가 액세스 목록의 구성원으로 추가되더라도
# 이러한 요건을 충족하지 못하면 구성원 자격은 효력이 없습니다.
membership_requires:
roles:
- required_role1
traits:
required_trait1:
- required_value1
액세스 목록과 거부 규칙#
액세스 목록 역할에서 거부 규칙 사용은 권장되지 않습니다. 액세스 목록은 권한 축소 도구로 사용하도록 설계되지 않았으며, Teleport는 특정 조건에서 액세스 목록을 무시하는 것이 안전하다고 가정할 수 있습니다. 권한을 축소하기 위한 역할은 사용자에게 직접 할당해야 합니다.
CLI에서 액세스 목록 관리#
Web UI 사용 외에도 액세스 목록은 CLI에서도 생성하고 관리할 수 있습니다. CLI에서 액세스 목록을 생성하려면 액세스 목록 YAML 파일(위에서 설명한 대로)을 생성하고 tctl create <filename>을 실행하세요. 액세스 목록은 tctl create -f <filename>을 사용하여 업데이트할 수 있습니다.
tctl은 tctl acl 하위 명령 아래 액세스 목록 중점 명령의 하위 집합도 지원합니다. 이를 통해 액세스 목록 목록 조회, 특정 액세스 목록에 대한 정보 가져오기, 액세스 목록 사용자 관리를 할 수 있습니다. 더 많은 정보는 tctl acl --help를 실행하여 확인하세요. 더 자세한 내용은 CLI 참조에서 확인할 수 있습니다.
