액세스 목록은 Teleport 사용자가 Teleport 내에서 관리되는 리소스에 대한 장기 액세스를 부여받을 수 있도록 합니다. 액세스 목록을 사용하면 관리자는 특정 역할 및 특성에 대한 구성원을 정기적으로 감사하고 제어할 수 있으며, 이는 Teleport의 기존 RBAC 시스템과 쉽게 결합됩니다.
이 가이드에서는 사용자가 특정 기준을 충족하는 사용자에게 support-engineer
역할을 부여할 수 있도록 manager
역할을 가진 사용자를 허용하여
사용자 및 역할 IaC 가이드를 후속적으로 다루겠습니다.
액세스 목록은 IaC를 통해 관리될 수 있지만, 액세스 목록의 구성원은 관리할 수 없음을 유의하세요. 액세스 목록의 목표는 액세스를 부여하고 검토하는 것을 분산시키는 것입니다. 관리자가 특정 가이드라인 내에서 액세스를 부여하도록 허용하고 검토를 자동으로 시행함으로써, 사용자는 Teleport IaC를 관리하는 중앙 팀을 거치지 않고도 일반적인 액세스 권한을 요청할 수 있습니다. 이는 중앙 IaC/보안 팀의 부담을 줄이고, 액세스 검토자가 맥락을 인식하게 하며, 요청 해결 시간을 단축시키고, 액세스 부여가 주기적으로 검토되도록 합니다.
필수 조건
이 가이드를 따르기 위해서는 먼저 기본 사용자 및 역할 IaC 가이드를 따라야 합니다. 우리는 액세스 목록을 위해 그 사용자를 재사용할 것입니다.
1단계/3 - 매니페스트 작성
특권 역할 매니페스트 작성
support-engineer
라는 새로운 역할을 생성하여 프로덕션 서버에 대한 액세스를 부여하겠습니다. 이전 가이드의 engineer
역할은 dev
및 staging
서버에 대한 액세스만 부여하고 있었습니다.
다음 privileged-role.yaml
파일을 생성하세요:
kind: role
version: v7
metadata:
name: support-engineer
spec:
allow:
logins: ['root', 'ubuntu', '{{internal.logins}}']
node_labels:
'env': ['production']
다음 privileged-role.yaml
파일을 생성하세요:
apiVersion: resources.teleport.dev/v1
kind: TeleportRoleV7
metadata:
name: support-engineer
spec:
allow:
logins: [ 'root', 'ubuntu', '{{internal.logins}}' ]
node_labels:
'env': [ 'production' ]
다음 privileged-role.tf
파일을 생성하세요:
resource "teleport_role" "support-engineer" {
version = "v7"
metadata = {
name = "support-engineer"
}
spec = {
allow = {
logins = ["root", "ubuntu", "{{internal.logins}}"]
node_labels = {
env = ["production"]
}
}
}
}
액세스 목록 매니페스트 작성
이번 단계에서는 manager
역할을 가진 사용자(예: alice
)가 engineer
역할을 가진 사용자에게 프로덕션 액세스를 부여할 수 있는 액세스 목록을 생성할 것입니다.
다음 accesslist.yaml
파일을 생성하세요:
version: v1
kind: access_list
metadata:
name: support-engineers
spec:
title: "지원 엔지니어를 위한 프로덕션 액세스"
audit:
recurrence:
frequency: 6months
description: "이 액세스 목록을 사용하여 지원 회전으로 등록된 엔지니어들에게 프로덕션 액세스를 부여하세요."
owners:
- description: "NA 지원 팀의 관리자"
name: alice
ownership_requires:
roles:
- manager
grants:
roles:
- support-engineer
membership_requires:
roles:
- engineer
다음 accesslist.yaml
파일을 생성하세요:
apiVersion: resources.teleport.dev/v1
kind: TeleportAccessList
metadata:
name: support-engineers
spec:
title: "지원 엔지니어를 위한 프로덕션 액세스"
description: "이 액세스 목록을 사용하여 지원 회전으로 등록된 엔지니어들에게 프로덕션 액세스를 부여하세요."
audit:
recurrence:
frequency: 6months
owners:
- description: "NA 지원 팀의 관리자"
name: alice
ownership_requires:
roles:
- manager
grants:
roles:
- support-engineer
membership_requires:
roles:
- engineer
다음 accesslist.tf
파일을 생성하세요:
resource "teleport_access_list" "support-engineers" {
header = {
version = "v1"
metadata = {
name = "support-engineers"
}
}
spec = {
title = "지원 엔지니어를 위한 프로덕션 액세스"
description = "이 액세스 목록을 사용하여 지원 회전으로 등록된 엔지니어들에게 프로덕션 액세스를 부여하세요."
audit = {
recurrence = {
frequency = 6
}
}
owners = [
{
description = "NA 지원 팀의 관리자"
name = "alice"
}
]
ownership_requires = {
roles = ["manager"]
}
grants = {
roles = ["support-engineer"]
}
membership_requires = {
roles = ["engineer"]
}
}
}
2단계/3 - 매니페스트 적용
tctl create -f privileged-role.yamlrole 'support-engineer' has been createdtctl create -f accesslist.yamlAccess list "support-engineers" has been created
사용자 리소스는 역할에 의존합니다. 사용자를 생성하기 전에 역할을 생성해야 합니다. 존재하지 않는 역할을 가진 사용자는 유효하지 않으며 Teleport에 의해 거부됩니다.
다음 명령어로 Kubernetes CR을 생성하세요:
kubectl apply -n "$OPERATOR_NAMESPACE" -f privileged-role.yamlteleportrolev7.resources.teleport.dev/support-engineer createdkubectl apply -n "$OPERATOR_NAMESPACE" -f accesslist.yamlteleportaccesslist.resources.teleport.dev/support-engineers
terraform plan[...]Plan: 2 to add, 0 to change, 0 to destroy.terraform applyteleport_access_list.support-engineers: Creating...teleport_role.support-engineer: Creating...teleport_role.support-engineer: Creation complete after 0s [id=support-engineer]teleport_access_list.support-engineers: Creation complete after 0s [id=support-engineers]
3단계/3 - alice
로 로그인하여 bob
에게 액세스 부여
이제 alice
가 support-engineer
역할을 그 엔지니어에게 부여할 수 있는 액세스 목록을 만들었습니다.
alice
로 로그인하고 support-engineers
액세스 목록에 bob
을 추가할 수 있습니다.
웹 UI에서 alice
로 로그인하고 관리 패널을 열어 "액세스 목록" 탭을 선택하세요. 당신의 액세스 목록이 표시될 것이며, 그것을 열고 "구성원 등록"을 선택 후 bob
을 추가하세요.
tsh
로 alice
로 로그인한 다음, 액세스 목록에 bob
을 추가하세요:
alice로 로그인
tsh login --proxy <your-cluster-domain>:<port> --user alicetctl acl users add <access-list-name> <user> [<expires>] [<reason>]
tctl acl users add support-engineers bob "" "Bob은 이제 온콜 지원 회전에 포함되었습니다."
마지막으로, 액세스 목록 구성원을 나열하세요:
tctl acl users ls support-engineerssupport-engineers의 구성원:- bob
다음 단계
모든 지원되는 액세스 목록 필드는 액세스 목록 참조에서 확인할 수 있습니다.