자동 검토 구성
Teleport는 접근 요청의 자동 검토를 지원합니다. 이 가이드에서는 Teleport RBAC를 구성하고 자동 검토의 사용 사례 예시를 보여줄 것입니다: 자동 검토는 접근 자동화 규칙에 의해 트리거됩니다. 예를 들어, 접근 자동화 규칙은 Teleport 트레잇 또는 IdP 속성 team: demo를 가진 사용자가 access 역할에 대한 접근을 요청할 때 자동 접근 요청 승인을 수행할 수 있습니다.
Teleport는 접근 요청의 자동 검토를 지원합니다. 이 기능을 통해 팀은 제로 상시 권한 정책을 적용하면서도 사용자가 수동 승인 없이 임시 접근을 받을 수 있습니다.
이 가이드에서는 Teleport RBAC를 구성하고 자동 검토의 사용 사례 예시를 보여줄 것입니다:
- 특정 팀의 사용자로부터의 역할 요청을 자동으로 승인합니다.
- 특정 팀의 사용자로부터의 리소스 요청을 자동으로 승인합니다.
작동 방식#
자동 검토는 접근 자동화 규칙에 의해 트리거됩니다. 이 규칙은 Teleport에 접근 요청을 모니터링하고 특정 조건(요청된 역할, 사용자 트레잇 또는 리소스 레이블 등)이 충족되면 자동으로 검토를 제출하도록 지시합니다.
예를 들어, 접근 자동화 규칙은 Teleport 트레잇 또는 IdP 속성 team: demo를 가진 사용자가 access 역할에 대한 접근을 요청할 때 자동 접근 요청 승인을 수행할 수 있습니다.
전제 조건#
-
A running Teleport Enterprise (v18.2.8 or higher) cluster. If you want to get started with Teleport, sign up for a free trial or set up a demo environment.
-
The
tctlandtshclients.Installing `tctl` and `tsh` clients
-
Determine the version of your Teleport cluster. The
tctlandtshclients must be at most one major version behind your Teleport cluster version. Send a GET request to the Proxy Service at/v1/webapi/findand use a JSON query tool to obtain your cluster version. Replace with the web address of your Teleport Proxy Service:$ TELEPORT_DOMAIN= $ TELEPORT_VERSION="$(curl -s https://$TELEPORT_DOMAIN/v1/webapi/find | jq -r '.server_version')" -
Follow the instructions for your platform to install
tctlandtshclients:
-
access_monitoring_rule리소스에 대한 목록 조회, 생성, 읽기, 업데이트, 삭제 권한. 이 권한은 사전 설정된editor역할에 포함되어 있습니다.- 이 가이드를 위해 레이블이 지정된 Teleport로 보호된 SSH 서버가 최소 하나 필요합니다. 시작하기에서 SSH 서버 등록 방법을 확인하세요.
Terraform 단계를 따르는 경우, 먼저 Teleport Terraform Provider를 설정하세요.
1/3단계. 요청자 역할 및 사용자 만들기#
이 예시에서 먼저 다음을 만들 것입니다:
access역할과access역할이 접근할 수 있는 모든 리소스에 대한 접근을 요청할 수 있도록 하는demo-access-request역할.- 위 역할이 할당된
demo-access-requester사용자.
역할 만들기#
demo-role.yaml이라는 role 구성 파일을 만듭니다:
# demo-role.yaml
kind: role
version: v7
metadata:
name: demo-access-request
spec:
allow:
request:
roles:
- access
search_as_roles:
- access
다음으로 역할을 만듭니다:
$ tctl create demo-role.yaml
사용자 만들기#
다음 명령을 사용하여 사용자를 만들고 역할을 할당합니다:
$ tctl users add --roles=demo-access-request demo-access-requester
또는 사용자를 만든 후 역할을 할당할 수 있습니다:
Assign the demo-access-request role to `demo-access-requester` by running the appropriate
commands for your authentication provider:
2/3단계. 사용자 트레잇 할당#
자동 검토 규칙이 요청하는 사용자를 평가할 수 있도록 Teleport Web UI를 통해 트레잇을 할당합니다:
- Zero Trust Access -> Users로 이동합니다.
demo-access-requester옆에서 Options -> **Edit...**를 클릭합니다.- Add user trait을 클릭하고 다음을 설정합니다:
- Key:
team - Value:
demo
- Key:
- Save를 클릭합니다.
- 사용자가 원하는 트레잇으로 업데이트되었는지 확인합니다.

사용자 트레잇을 추가할 때 어떤 키와 값이든 입력할 수 있습니다. 사용자 트레잇 양식은 와일드카드나 정규 표현식을 지원하지 않습니다.
자동 검토는 SSO 사용자와 IdP에서 제공하는 속성과 호환됩니다.
3/3단계. 자동 검토 구성#
사용자를 만들고 트레잇을 할당했으므로 이제 자동 검토 규칙을 구성할 준비가 되었습니다.
접근 자동화 규칙은 사용자 트레잇, 리소스 레이블, 일정을 활용하여 요청을 자동으로 승인할 수 있는지 결정합니다. 이 단계에서는 Teleport가 접근을 자동으로 승인하는 방법을 보여주기 위해 하나 이상의 자동 검토 규칙을 구성합니다.
역할 기반 자동 검토#
특정 팀의 역할 요청을 자동으로 승인하는 방법을 보여주기 위해 다음 접근 자동화 규칙을 만듭니다:
- Identity Governance -> Access Requests -> Set Up Access Automation Rules로 이동합니다.
- Create New Access Automation Rule -> Automatic Review Rule을 클릭합니다.
- 규칙을 구성하고 다음을 설정합니다:
- Name of requested roles to match:
access - User Traits to match:
team: demo - Review decision:
APPROVED
- Name of requested roles to match:
- Create Rule을 클릭합니다.
demo-rule.yaml이라는 access_monitoring_rule 구성 파일을 만듭니다:
# demo-rule.yaml
kind: access_monitoring_rule
version: v1
metadata:
name: demo-rule
spec:
automatic_review:
decision: APPROVED
integration: builtin
condition: |-
contains_all(set("access"), access_request.spec.roles) &&
contains_any(user.traits["team"], set("demo"))
desired_state: reviewed
subjects:
- access_request
다음으로 access_monitoring_rule을 만듭니다:
$ tctl create -f demo-rule.yaml
demo-rule.tf라는 access_monitoring_rule 구성 파일을 만듭니다:
# demo-rule.tf
resource "teleport_access_monitoring_rule" "demo-rule" {
version = "v1"
metadata = {
name = "demo-rule"
}
spec = {
automatic_review = {
decision = "APPROVED"
integration = "builtin"
}
condition = <<-EOT
contains_all(set("access"), access_request.spec.roles) &&
contains_any(user.traits["team"], set("demo"))
EOT
desired_state = "reviewed"
subjects = ["access_request"]
}
}
구성을 적용합니다:
$ terraform apply
이 규칙은 사용자에게 team: demo 트레잇이 있는 경우 access 역할에 대한 접근 요청을 자동으로 승인합니다.
새 자동 검토 규칙을 확인하려면 Teleport Web UI를 통해 접근 요청을 만드세요:
demo-access-requester로 로그인합니다.- Identity Governance -> Access Requests로 이동하고 New Access Request를 클릭합니다.
- 요청 유형을 Resources에서 Roles로 변경합니다.
- 접근 요청에
access역할을 추가합니다. - Proceed to Request, 그런 다음 Submit Request를 클릭합니다.
이 시점에서 새 접근 요청이 만들어지고 자동으로 검토되어 APPROVED 상태로 전환됩니다. Back to Listings로 이동하여 접근 요청 상태를 확인합니다. 검토가 처리되는 데 잠시 시간이 걸릴 수 있으므로 페이지를 새로 고쳐야 할 수 있습니다.
리소스 기반 자동 검토#
접근 자동화 규칙을 만들기 전에 Teleport 클러스터에 연결된 레이블이 지정된 SSH 서버가 최소 하나 있는지 확인합니다:
# List your SSH servers to identify available labels:
$ tsh ls
Node Name Address Labels
----------- ---------- -------------------------------
teleport-00 ⟵ Tunnel env=demo
특정 팀의 리소스 요청을 자동으로 승인하는 방법을 보여주기 위해 다음 접근 자동화 규칙을 만듭니다:
- Identity Governance -> Access Requests -> Set Up Access Automation Rules로 이동합니다.
- Create New Access Automation Rule -> Automatic Review Rule을 클릭합니다.
- 규칙을 구성하고 다음을 설정합니다:
- Name of requested roles to match:
access - Resource labels to match:
env: demo - User Traits to match:
team: demo - Review decision:
APPROVED
- Name of requested roles to match:
- Create Rule을 클릭합니다.
demo-rule.yaml이라는 access_monitoring_rule 구성 파일을 만듭니다:
# demo-rule.yaml
kind: access_monitoring_rule
version: v1
metadata:
name: demo-rule
spec:
automatic_review:
decision: APPROVED
integration: builtin
condition: |-
contains_all(set("access"), access_request.spec.roles) &&
contains_any(user.traits["team"], set("demo")) &&
access_request.spec.resource_labels_intersection["env"].contains("demo")
desired_state: reviewed
subjects:
- access_request
다음으로 access_monitoring_rule을 만듭니다:
$ tctl create -f demo-rule.yaml
demo-rule.tf라는 access_monitoring_rule 구성 파일을 만듭니다:
# demo-rule.tf
resource "teleport_access_monitoring_rule" "demo-rule" {
version = "v1"
metadata = {
name = "demo-rule"
}
spec = {
automatic_review = {
decision = "APPROVED"
integration = "builtin"
}
condition = <<-EOT
contains_all(set("access"), access_request.spec.roles) &&
contains_any(user.traits["team"], set("demo")) &&
access_request.spec.resource_labels_intersection["env"].contains("demo")
EOT
desired_state = "reviewed"
subjects = ["access_request"]
}
}
구성을 적용합니다:
$ terraform apply
이 규칙은 사용자에게 team: demo 트레잇이 있는 경우 access 역할 및 env: demo 레이블의 리소스에 대한 접근 요청을 자동으로 승인합니다.
새 자동 검토 규칙을 확인하려면 Teleport Web UI를 통해 접근 요청을 만드세요:
demo-access-requester로 로그인합니다.- Identity Governance -> Access Requests로 이동하고 New Access Request를 클릭합니다.
- 접근을 요청하고 싶은 SSH 서버를 추가합니다.
- Proceed to Request, 그런 다음 Submit Request를 클릭합니다.
이 시점에서 새 접근 요청이 만들어지고 자동으로 검토되어 APPROVED 상태로 전환됩니다. Back to Listings로 이동하여 접근 요청 상태를 확인합니다. 검토가 처리되는 데 잠시 시간이 걸릴 수 있으므로 페이지를 새로 고쳐야 할 수 있습니다.
일정 기반 자동 검토#
지정된 일정 동안 역할 요청을 자동으로 승인하는 방법을 보여주기 위해 다음 접근 자동화 규칙을 만듭니다:
- Identity Governance -> Access Requests -> Set Up Access Automation Rules로 이동합니다.
- Create New Access Automation Rule -> Automatic Review Rule을 클릭합니다.
- 규칙을 구성하고 다음을 설정합니다:
- Name of requested roles to match:
access - User Traits to match:
team: demo - Review decision:
APPROVED
- Name of requested roles to match:
- 일정을 구성합니다:
- For specified times only를 활성화합니다.
- 원하는 Time Zone을 선택합니다.
- 원하는 요일을 선택합니다.
- 선택한 각 요일의 일정을 설정합니다.
- Create Rule을 클릭합니다.
예를 들어, 월요일 언제든지 자동 검토를 활성화하려면 일정 편집기가 다음과 같이 나타납니다:

demo-rule.yaml이라는 access_monitoring_rule 구성 파일을 만듭니다:
# demo-rule.yaml
kind: access_monitoring_rule
version: v1
metadata:
name: demo-rule
spec:
automatic_review:
decision: APPROVED
integration: builtin
condition: |-
contains_all(set("access"), access_request.spec.roles) &&
contains_any(user.traits["team"], set("demo"))
desired_state: reviewed
subjects:
- access_request
schedules:
default:
time:
timezone: America/Los_Angeles
shifts:
- weekday: Monday
start: "00:00"
end: "23:59"
다음으로 access_monitoring_rule을 만듭니다:
$ tctl create -f demo-rule.yaml
demo-rule.tf라는 access_monitoring_rule 구성 파일을 만듭니다:
# demo-rule.tf
resource "teleport_access_monitoring_rule" "demo-rule" {
version = "v1"
metadata = {
name = "demo-rule"
}
spec = {
automatic_review = {
decision = "APPROVED"
integration = "builtin"
}
condition = <<-EOT
contains_all(set("access"), access_request.spec.roles) &&
contains_any(user.traits["team"], set("demo"))
EOT
desired_state = "reviewed"
subjects = ["access_request"]
schedules = {
default = {
time = {
timezone = "America/Los_Angeles"
shifts = [
{
weekday : "Monday"
start : "00:00"
end : "23:59"
}
]
}
}
}
}
}
구성을 적용합니다:
$ terraform apply
문제 해결#
충돌하는 자동 검토 규칙#
자동 검토 규칙은 선택된 검토 결정에 따라 접근 요청을 자동으로 승인하거나 거부할 수 있습니다. 접근 요청이 승인 규칙과 거부 규칙 모두의 조건을 충족하면 거부 규칙이 우선합니다.
다음 단계#
- 접근 자동화 규칙은 기본
access_monitoring_rule리소스를 사용하여 구성됩니다.access_monitoring_rule리소스에 대한 자세한 내용은 접근 모니터링 규칙 레퍼런스를 참조하세요. - Teleport Terraform Provider를 사용한 구성에 대해서는 Terraform 리소스 인덱스를 참조하세요.
- SSO를 사용한 구성 옵션에 대해서는 Single Sign-On 가이드를 참조하세요.
- 리소스 레이블 관리에 대한 자세한 내용은 리소스에 레이블 추가 가이드를 참조하세요.
