인포레터에서 최신 DevOps 트렌드를 격주로 만나보세요!
애플리케이션 액세스 역할 기반 액세스 제어
이 문서에서는 Teleport 애플리케이션 서비스와 특히 관련된 액세스 제어 개념에 대해 설명합니다.
애플리케이션에 레이블 할당하기
Teleport 애플리케이션 서비스는 레이블을 사용하여 프록시된 웹 애플리케이션에 대한 액세스를 제어합니다.
Teleport 관리자는 구성에서 정적 및 동적 레이블을 앱에 할당할 수 있습니다:
apps:
- name: "grafana"
uri: "http://localhost:3000"
# 정적 레이블.
labels:
env: "prod"
group: "metrics"
# Teleport는 동적 레이블의 명령을 주기적으로 실행하고
# 명령의 출력을 레이블 값으로 사용합니다.
commands:
- name: "arch"
command: ["uname", "-p"]
period: 1m0s
역할에서 애플리케이션 레이블 구성하기
Teleport 관리자는 app_labels
속성을 사용하여 특정 레이블이 있는 애플리케이션에 대한 사용자 액세스를 허용하거나 거부하는 역할을 구성할 수 있습니다.
예를 들어, 이 역할은 운영 환경을 제외한 "metrics" 그룹의 모든 애플리케이션에 대한 액세스를 부여합니다:
kind: role
version: v5
metadata:
name: dev
spec:
allow:
app_labels:
group: "metrics"
deny:
app_labels:
env: "prod"
ID 공급자와 통합하기
사용자의 클레임 및 ID 공급자로부터 받은 속성을 기반으로 애플리케이션 레이블을 동적으로 채우도록 역할을 구성할 수 있습니다. 이는 external
접두사를 가진 템플릿 변수를 사용하여 수행됩니다.
예를 들어, 이 역할은 같은 이름을 가진 Okta 사용자의 속성으로 env
및 group
레이블 값을 설정합니다:
allow:
app_labels:
env: "{{external.env}}"
group: "{{external.group}}"
Azure 관리되는 ID에 대한 사용자 액세스 허용하기
Teleport 사용자가 Azure ID를 가정하고 Teleport를 통해 Azure CLI 명령을 실행하도록 승인할 수 있습니다. 이렇게 하려면, 아래와 같이 spec.allow.azure_identities
필드를 가진 역할을 정의합니다:
kind: role
version: v5
metadata:
name: azure-cli-access
spec:
allow:
app_labels:
'*': '*'
azure_identities:
- /subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/my-resource-group/providers/Microsoft.ManagedIdentity/userAssignedIdentities/teleport-azure
각 항목이 사용자가 이 역할로 가정할 Azure 관리 ID의 전체 URI가 되도록 spec.allow.azure_identities
필드를 수정합니다. 위의 예에서는 사용자가 teleport-azure
ID를 가정할 수 있도록 허용합니다.
또 다른 방법은 각 사용자를 별도로 구성하여 허용된 Azure ID를 정의하는 것입니다. 이를 위해, azure_identities
내에 {{internal.azure_identities}}
템플릿 변수를 설정한 역할을 생성합니다:
kind: role
version: v5
metadata:
name: azure-cli-access
spec:
allow:
app_labels:
'*': '*'
azure_identities:
- '{{internal.azure_identities}}'
이 경우, 사용자가 Teleport를 통해 Azure CLI에 인증할 때, Teleport Auth 서비스는 사용자가 할당된 Azure ID로 {{internal.azure_identities}}
템플릿 변수를 채웁니다.
사용자에게 Azure ID를 할당하려면 다음과 유사한 tctl users update
명령을 실행합니다:
tctl users update myuser --set-azure-identities \/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/my-resource-group/providers/Microsoft.ManagedIdentity/userAssignedIdentities/id1,\/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/my-resource-group/providers/Microsoft.ManagedIdentity/userAssignedIdentities/id2
이 명령은 사용자의 Azure ID를 추가하기 위해 --set-azure-identities
플래그를 사용합니다. 이 플래그의 값은 쉼표로 구분된 Azure ID URI 목록입니다.
Azure 관리 ID에 대한 액세스를 활성화하는 방법에 대한 자세한 내용은 Azure CLI 가이드를 참조하십시오.