Teleport Identity Security로 Entra ID 정책 분석
Teleport Identity Governance의 Microsoft Entra ID 통합은 Entra ID 디렉터리를 Teleport 클러스터에 동기화하고 Entra ID 디렉터리의 관계에 대한 인사이트를 제공합니다.
Teleport Identity Governance의 Microsoft Entra ID 통합은 Entra ID 디렉터리를 Teleport 클러스터에 동기화하고 Entra ID 디렉터리의 관계에 대한 인사이트를 제공합니다. 또한 Entra ID가 SSO 아이덴티티 제공자로 사용되는 경우 Identity Security는 서비스 전반의 SSO 권한 부여를 시각화합니다.
SSO 권한 부여 분석은 현재 Entra ID가 아이덴티티 제공자로 작동하고 AWS 계정이 AWS IAM 역할 페더레이션을 사용하여 신뢰 당사자로 설정된 상황에서만 지원됩니다.
추가 신뢰 당사자에 대한 지원은 향후 추가될 예정입니다.
작동 방식#
Teleport는 연결된 Entra ID 디렉터리를 지속적으로 스캔합니다. 5분 간격으로 Entra ID 디렉터리에서 다음 리소스를 검색합니다:
- 사용자
- 그룹
- 그룹 내 사용자 멤버십
- 엔터프라이즈 애플리케이션
Entra ID 사용자와 그룹은 각각 사용자와 접근 목록으로 Teleport에 가져와집니다. 필요한 모든 리소스를 가져오면 Teleport는 이를 Graph Explorer에 푸시하여 최신 정보로 업데이트된 상태를 유지합니다. 이러한 리소스는 Identity Security 사용 페이지에서 자세히 설명된 그래프 표현을 사용하여 시각화됩니다.
사전 조건#
- 실행 중인 Teleport Enterprise 클러스터 v15.4.2/v16.0.0 이상.
- 계정에 Teleport Identity Governance 및 Identity Security가 활성화되어 있어야 합니다.
- 셀프 호스팅 클러스터의 경우:
- Auth Service 구성에 최신
license.pem이 사용되고 있는지 확인합니다. - 실행 중인 Graph Explorer 노드 v1.21.3 이상. Graph Explorer 설정 방법은 Identity Security 페이지를 참조하세요.
- Graph Explorer 서비스를 실행하는 노드는 Teleport Auth Service에서 접근할 수 있어야 합니다.
- Auth Service 구성에 최신
- Azure 계정에서 특권 관리자 권한이 있어야 합니다.
- OIDC 설정의 경우 Teleport 클러스터는 인터넷에서 공개적으로 접근할 수 있어야 합니다.
- 에어 갭 클러스터의 경우
tctl이 v16.4.7 이상이어야 합니다.
Access Graph is a feature of the Teleport Identity Security product available to Teleport Enterprise edition customers.
To verify that Access Graph is set up correctly for your cluster, sign in to the Teleport Web UI, click the Identity Security sidebar button, and then the Browse menu item. Identities, resources, etc. should be listed.
1단계/3단계. 설정 방법 선택#
온보딩을 시작하려면 선호하는 설정 방법을 선택합니다. Teleport는 클러스터 구성 및 사용자 요구 사항에 따라 다양한 방법을 제공합니다.
Entra ID의 OIDC 제공자로 Teleport를 사용하는 자동 설정#
이 방법이 권장되며 Teleport Enterprise (Cloud) 고객에게 필수입니다.
이 방법은 공개적으로 접근 가능하고 Auth Service 노드 또는 파드에 Azure 자격 증명이 없는 Teleport 클러스터에 적합합니다.
이 설정에서 Teleport는 OpenID Connect(OIDC) 아이덴티티 제공자로 구성되어 설정 중에 생성된 Entra ID 애플리케이션과 신뢰 연결을 설정합니다. 이 신뢰를 통해 Teleport는 Entra ID 애플리케이션을 사용하여 인증하고, 추가 자격 증명이나 관리 아이덴티티 없이 연결된 권한에 접근할 수 있습니다.
요구 사항:
- Azure가 Teleport에서 발급한 OIDC 토큰을 검증하려면 Teleport와 Azure 간의 직접적인 양방향 연결이 필요합니다.
Entra ID 인증을 위한 시스템 자격 증명을 사용한 자동 설정#
공개적으로 접근할 수 없는 에어 갭 Teleport 클러스터를 위해 설계된 이 설정은 Azure가 Teleport에서 발급한 OIDC 토큰을 검증할 수 없는 환경을 수용합니다.
대신 Teleport는 Teleport Auth Service가 실행 중인 VM에서 사용 가능한 Azure 자격 증명을 사용합니다. 이러한 자격 증명에는 다음 Entra ID 권한이 있어야 합니다:
Application.Read.AllDirectory.Read.AllPolicy.Read.All
요구 사항:
- Teleport에서 Azure 인프라로의 단방향 연결.
수동 설정#
이 설정은 자동화된 스크립트에 의존하지 않고 Entra ID 통합을 수동으로 구성하는 방법을 설명합니다.
이 가이드는 Entra ID의 OIDC 제공자로 Teleport를 사용하는 자동 설정과 시스템 자격 증명을 사용한 자동 설정을 다루지만, Identity Security 통합을 활성화할 수 없다는 제한이 있습니다.
2단계/3단계. Entra ID 통합 구성#
통합 온보딩 시작#
온보딩 프로세스를 시작하려면 Teleport Web UI에 접근하고 왼쪽 창에서 "Add New"를 선택하고 "Integration"을 선택한 다음 "Microsoft Entra ID"를 선택합니다.

온보딩 마법사에서 Entra 그룹에 대해 만들어진 접근 목록의 기본 소유자로 할당될 Teleport 사용자를 선택하고 "Next"를 클릭합니다.

Azure에서 권한 부여 및 온보딩 완료#
이제 마법사가 Azure에서 필요한 권한을 설정하는 스크립트를 제공합니다.

shell.azure.com으로 이동하거나 Azure Portal에서 Cloud Shell 아이콘을 클릭하여 Azure Cloud Shell을 엽니다.

Cloud Shell의 Bash 버전을 사용해야 합니다. Cloud Shell 인스턴스가 열리면 생성된 명령을 붙여넣습니다. 이 명령은 Teleport 클러스터를 Entra ID 디렉터리의 엔터프라이즈 애플리케이션으로 설정하고 디렉터리 데이터(디렉터리의 사용자 및 그룹 등)를 읽을 수 있는 읽기 전용 권한을 Teleport에 부여합니다.
스크립트가 필요한 권한 설정을 완료하면 통합 온보딩을 완료하는 데 필요한 데이터를 출력합니다.

Teleport Web UI로 돌아가 필요한 데이터를 입력하고 "Finish"를 클릭합니다.

Auth Service VM의 Azure 아이덴티티에 권한 할당#
필요한 권한으로 Azure 아이덴티티를 설정하려면:
Application.Read.AllDirectory.Read.AllPolicy.Read.All
Azure 대시보드로 이동하여 Teleport Auth Service VM에 연결된 아이덴티티를 찾고
Object (principal) ID를 복사합니다. 이 값을 에 붙여넣습니다.
주체 ID를 얻은 후 PowerShell 모드에서 Azure Cloud Shell을 열고
다음 스크립트를 실행하여 에 필요한 권한을 할당합니다.
Azure 아이덴티티에 필요한 권한 할당
# Connect to Microsoft Graph with the required scopes for directory and app role assignment permissions.
Connect-MgGraph -Scopes 'Directory.ReadWrite.All', 'AppRoleAssignment.ReadWrite.All'
# Retrieve the managed identity's service principal object using its unique principal ID (UUID).
$managedIdentity = Get-MgServicePrincipal -ServicePrincipalId ''
# Set the Microsoft Graph enterprise application object.
# This is a service principal object representing Microsoft Graph in Entra ID with a specific app ID.
$graphSPN = Get-MgServicePrincipal -Filter "AppId eq '00000003-0000-0000-c000-000000000000'"
# Define the permission scopes that we want to assign to the managed identity.
# These are Microsoft Graph API permissions required by the managed identity.
$permissions = @(
"Application.Read.All" # Permission to read applications in the directory
"Directory.Read.All" # Permission to read directory data
"Policy.Read.All" # Permission to read policies within the directory
)
# Filter and find the app roles in the Microsoft Graph service principal that match the defined permissions.
# Only include roles where "AllowedMemberTypes" includes "Application" (suitable for managed identities).
$appRoles = $graphSPN.AppRoles |
Where-Object Value -in $permissions |
Where-Object AllowedMemberTypes -contains "Application"
# Iterate over each app role to assign it to the managed identity.
foreach ($appRole in $appRoles) {
# Define the parameters for the role assignment, including the managed identity's principal ID,
# the Microsoft Graph service principal's resource ID, and the specific app role ID.
$bodyParam = @{
PrincipalId = $managedIdentity.Id # The ID of the managed identity (service principal)
ResourceId = $graphSPN.Id # The ID of the Microsoft Graph service principal
AppRoleId = $appRole.Id # The ID of the app role being assigned
}
# Create a new app role assignment for the managed identity, granting it the specified permissions.
New-MgServicePrincipalAppRoleAssignment -ServicePrincipalId $managedIdentity.Id -BodyParameter $bodyParam
}
이제 아이덴티티 주체 가 애플리케이션, 디렉터리, 정책을 나열하는 데 필요한 권한을 갖게 됩니다.
Entra ID 및 Teleport 리소스 설정#
Teleport tctl 명령은 에어 갭 클러스터에 Entra ID 통합을 설정하고 구성하는 대화형 가이드를 제공합니다.
사용하려면 tctl 버전 v16.4.7 이상이 있어야 하고 기본 접근 목록 소유자 목록을 선택합니다.
지정된 Teleport 사용자는 Entra ID 통합으로 가져온 접근 목록의 소유자가 됩니다.
는 기존 Teleport 사용자여야 합니다.
여러 접근 목록 소유자를 원하는 경우 각 사용자에 대해 플래그를 반복합니다(예: --default-owner=owner1 --default-owner=owner2).
또한 Teleport Auth Service 주소를 로 제공해야 합니다.
멀티플렉스 모드로 실행되는 클러스터의 경우 이 주소는 프록시 주소와 동일합니다.
Teleport 라이선스에 Identity Security가 포함되지 않은 경우 --no-access-graph 플래그를 포함합니다.
$ tctl plugins install entraid \
--default-owner= \
--default-owner=someOtherOwner@teleport.sh \
--use-system-credentials \
--auth-server
Graph Explorer 통합을 비활성화하려면 --no-access-graph 플래그를 추가합니다.
tctl plugins install entraid 가이드에서 제공하는 자세한 지침을 따라 Entra ID 플러그인을 설치하고 구성합니다.
이 가이드는 Teleport 환경 내에서 Entra ID 통합을 활성화하는 데 필요한 각 단계를 안내합니다.
설치 및 구성을 완료하려면 tctl plugins install entraid 가이드의 각 단계를 주의 깊게 따르세요.
Auth Service VM의 Azure 아이덴티티에 권한 할당#
이 단계는 Auth Service 머신의 Azure 아이덴티티에 필요한 Entra ID 권한을 구성합니다.
시스템에서 사용 가능한 자격 증명을 사용하여 Teleport를 Entra ID로 인증하려는 경우에만 이 단계를 따르세요. Teleport를 Entra ID의 OIDC 제공자로 사용하려는 경우 이 단계를 건너뛸 수 있습니다.
Application.Read.AllDirectory.Read.AllPolicy.Read.All
Azure 대시보드로 이동하여 Teleport Auth Service VM에 연결된 아이덴티티를 찾고
Object (principal) ID를 복사합니다. 이 값을 에 붙여넣습니다.
주체 ID를 얻은 후 PowerShell 모드에서 Azure Cloud Shell을 열고
다음 스크립트를 실행하여 에 필요한 권한을 할당합니다.
Azure 아이덴티티에 필요한 권한 할당
# Connect to Microsoft Graph with the required scopes for directory and app role assignment permissions.
Connect-MgGraph -Scopes 'Directory.ReadWrite.All', 'AppRoleAssignment.ReadWrite.All'
# Retrieve the managed identity's service principal object using its unique principal ID (UUID).
$managedIdentity = Get-MgServicePrincipal -ServicePrincipalId ''
# Set the Microsoft Graph enterprise application object.
# This is a service principal object representing Microsoft Graph in Entra ID with a specific app ID.
$graphSPN = Get-MgServicePrincipal -Filter "AppId eq '00000003-0000-0000-c000-000000000000'"
# Define the permission scopes that we want to assign to the managed identity.
# These are Microsoft Graph API permissions required by the managed identity.
$permissions = @(
"Application.Read.All" # Permission to read applications in the directory
"Directory.Read.All" # Permission to read directory data
"Policy.Read.All" # Permission to read policies within the directory
)
# Filter and find the app roles in the Microsoft Graph service principal that match the defined permissions.
# Only include roles where "AllowedMemberTypes" includes "Application" (suitable for managed identities).
$appRoles = $graphSPN.AppRoles |
Where-Object Value -in $permissions |
Where-Object AllowedMemberTypes -contains "Application"
# Iterate over each app role to assign it to the managed identity.
foreach ($appRole in $appRoles) {
# Define the parameters for the role assignment, including the managed identity's principal ID,
# the Microsoft Graph service principal's resource ID, and the specific app role ID.
$bodyParam = @{
PrincipalId = $managedIdentity.Id # The ID of the managed identity (service principal)
ResourceId = $graphSPN.Id # The ID of the Microsoft Graph service principal
AppRoleId = $appRole.Id # The ID of the app role being assigned
}
# Create a new app role assignment for the managed identity, granting it the specified permissions.
New-MgServicePrincipalAppRoleAssignment -ServicePrincipalId $managedIdentity.Id -BodyParameter $bodyParam
}
이제 아이덴티티 주체 가 애플리케이션, 디렉터리, 정책을 나열하는 데 필요한 권한을 갖게 됩니다.
Entra ID 애플리케이션 설정#
이 단계에서는 Teleport Auth 커넥터에서 사용할 Entra ID 엔터프라이즈 애플리케이션을 수동으로 구성합니다.
지정된 애플리케이션을 만들고, 토큰 서명 요청을 할당하고, 필요한 SAML 파라미터를 설정하는 PowerShell 스크립트를 제공합니다.
진행하려면 다음 파라미터를 정의해야 합니다:
: Entra ID 애플리케이션 이름, 일반적으로Teleport your.cluster.address로 설정합니다.: Teleport Proxy 주소.: Teleport Auth 커넥터 이름, 일반적으로entra-id로 설정합니다.
이러한 파라미터가 정의되면 PowerShell 모드에서 Azure Cloud Shell을 열거나 이전 단계에서 만든 세션을 사용합니다.
Entra ID 애플리케이션 만들기
# Connect to Microsoft Graph with required scopes for application creation and app role assignment permissions.
Connect-MgGraph -Scopes "Application.ReadWrite.All", "AppRoleAssignment.ReadWrite.All"
# Import the Microsoft Graph module for managing applications.
Import-Module Microsoft.Graph.Applications
# Define application parameters, including the display name.
$params = @{
displayName = '' # Set the display name of the new application.
}
# Set the SAML application template ID.
# This ID corresponds to a non-gallery SAML application template.
$applicationTemplateId = "8adf8e6e-67b2-4cf2-a259-e3dc5476c621"
# Instantiate the application template to create a new application and its service principal.
$app = Invoke-MgInstantiateApplicationTemplate -ApplicationTemplateId $applicationTemplateId -BodyParameter $params
# Extract the Application ID, Object ID, and Service Principal ID of the newly created application.
$appId = $app.Application.AppId # The unique identifier for the application (client ID).
$objectId = $app.Application.Id # The unique object ID for the application in Entra ID.
$servicePrincipal = $app.ServicePrincipal.Id # The unique object ID for the service principal.
# Define parameters for the token signing certificate used for SAML.
$principalTokenSigningCertificateParams = @{
displayName = "CN=azure-sso" # Common Name (CN) for the SAML token signing certificate.
}
# Add a token signing certificate to the service principal, which is required for SAML authentication.
$cert = Add-MgServicePrincipalTokenSigningCertificate -ServicePrincipalId $servicePrincipal -BodyParameter $principalTokenSigningCertificateParams
# Extract the thumbprint of the certificate, which will be used to configure SAML.
$thumbprint = $cert.Thumbprint
# Set additional SAML-specific properties for the service principal.
$updateServicePrincipalParams = @{
preferredSingleSignOnMode = "saml" # Set SAML as the single sign-on mode.
preferredTokenSigningKeyThumbprint = $thumbprint # Use the thumbprint of the added certificate for token signing.
appRoleAssignmentRequired = $false # Allow app access without explicit app role assignments.
}
# Update the service principal with the SAML configuration.
Update-MgServicePrincipal -ServicePrincipalId $servicePrincipal -BodyParameter $updateServicePrincipalParams
# Define the URL for the proxy (Teleport Auth Service address).
# This URL will be used as the Redirect URI and Identifier URI.
$proxyURL = 'https://'.TrimEnd("/").TrimEnd(":443") # Remove the default 443 port for standard formatting.
$acsURL = $proxyURL+'/v1/webapi/saml/acs/'
# Define web properties, including the redirect URI for SAML authentication.
$web = @{
redirectUris = @($acsURL) # Set the application's redirect URI.
}
# Update the application with the web properties and identifier URI.
# This enables SAML-based authentication and includes security group claims.
Update-MgApplication -ApplicationId $objectId -Web $web -IdentifierUris @($acsURL)
# Define optional claims for the application to include group membership claims.
$optionalClaims = [Microsoft.Graph.PowerShell.Models.MicrosoftGraphOptionalClaims]::DeserializeFromDictionary(@{
AccessToken = @(
@{ Name = 'groups' }
)
IdToken = @(
@{ Name = 'groups' }
)
Saml2Token = @(
@{ Name = 'groups' }
)
})
Update-MgApplication -ApplicationId $objectId -GroupMembershipClaims "SecurityGroup" -OptionalClaims $optionalClaims
# Retrieve the tenant ID for display purposes.
$tenant = Get-AzTenant
# Output the Application ID, Tenant ID, and additional information for reference.
Write-Output "-------------------------------------------------------" "Copy and paste the following details:" "Application ID (Client ID): $appId" "Tenant ID: $tenant" "-------------------------------------------------------"
클러스터가 인터넷에서 공개적으로 접근 가능하고 Auth Service 시스템 자격 증명 대신 OIDC를 사용하기를 원하거나 필요한 경우 Entra ID 애플리케이션의 OIDC 제공자로 Teleport를 구성할 수 있습니다. Auth Service의 Azure 아이덴티티에 이미 필요한 권한을 할당한 경우 다음 섹션을 건너뛸 수 있습니다.
애플리케이션에 대한 페더레이션 자격 증명을 구성하려면 이전에 사용된 것과 동일한 Azure Cloud Shell 터미널에서 다음 스크립트를 실행합니다.
Entra ID 애플리케이션에 대한 페더레이션 자격 증명 만들기
# Define the subject for the federated identity credential. This is a constant defined in Teleport.
$subject = "teleport-azure"
# Define the accepted audiences for the credential. It's a constant value.
$audiences = @("api://AzureADTokenExchange")
# Set the issuer to the Teleport cluster proxy URL.
$issuer = $proxyURL
# Define a unique name for the federated identity credential. This name is used for identification within the application.
$name = "teleport-oidc"
# Create a new federated identity credential for the application in Microsoft Graph.
$credential = New-MgApplicationFederatedIdentityCredential -ApplicationId $objectId -Subject $subject -Audiences $audiences -Issuer $issuer -Name $name
# Configure the required permissions for the application.
# Retrieve the managed identity's service principal object using its unique principal ID (UUID).
$managedIdentity = Get-MgServicePrincipal -ServicePrincipalId $servicePrincipal
# Set the Microsoft Graph enterprise application object.
# This is a service principal object representing Microsoft Graph in Entra ID with a specific app ID.
$graphSPN = Get-MgServicePrincipal -Filter "AppId eq '00000003-0000-0000-c000-000000000000'"
# Define the permission scopes that we want to assign to the managed identity.
# These are Microsoft Graph API permissions required by the managed identity.
$permissions = @(
"Application.Read.All" # Permission to read applications in the directory
"Directory.Read.All" # Permission to read directory data
"Policy.Read.All" # Permission to read policies within the directory
)
# Filter and find the app roles in the Microsoft Graph service principal that match the defined permissions.
# Only include roles where "AllowedMemberTypes" includes "Application" (suitable for managed identities).
$appRoles = $graphSPN.AppRoles |
Where-Object Value -in $permissions |
Where-Object AllowedMemberTypes -contains "Application"
# Iterate over each app role to assign it to the managed identity.
foreach ($appRole in $appRoles) {
# Define the parameters for the role assignment, including the managed identity's principal ID,
# the Microsoft Graph service principal's resource ID, and the specific app role ID.
$bodyParam = @{
PrincipalId = $managedIdentity.Id # The ID of the managed identity (service principal)
ResourceId = $graphSPN.Id # The ID of the Microsoft Graph service principal
AppRoleId = $appRole.Id # The ID of the app role being assigned
}
# Create a new app role assignment for the managed identity, granting it the specified permissions.
New-MgServicePrincipalAppRoleAssignment -ServicePrincipalId $managedIdentity.Id -BodyParameter $bodyParam
}
Teleport 리소스 설정#
Teleport tctl 명령은 에어 갭 클러스터에 Entra ID 통합을 설정하고 구성하는 대화형 가이드를 제공합니다.
사용하려면 tctl 버전 v16.4.7 이상이 있어야 하고 기본 접근 목록 소유자 목록을 선택합니다.
지정된 Teleport 사용자는 Entra ID 통합으로 가져온 접근 목록의 소유자가 됩니다.
는 기존 Teleport 사용자여야 합니다.
여러 접근 목록 소유자를 원하는 경우 각 사용자에 대해 플래그를 반복합니다(예: --default-owner=owner1 --default-owner=owner2).
또한 Teleport Auth Service 주소를 으로 제공해야 합니다.
멀티플렉스 모드로 실행되는 클러스터의 경우 이 주소는 프록시 주소와 동일합니다.
이전 단계에서 Entra ID의 OIDC 제공자로 Teleport를 사용하기로 선택한 경우 아래 명령에서 --use-system-credentials 플래그를 제거합니다.
현재 수동 모드를 사용할 때 --no-access-graph 플래그 없이 동작하는 것은 불가능합니다.
$ tctl plugins install entraid \
--default-owner= \
--default-owner=someOtherOwner@teleport.sh \
--auth-connector-name="" \
--use-system-credentials \
--no-access-graph \
--manual-setup \
--auth-server
tctl plugins install entraid 가이드에서 제공하는 자세한 지침을 따라 Entra ID 플러그인을 설치하고 구성합니다.
3단계/3단계. Teleport Graph Explorer에서 Entra ID 디렉터리 분석#
통합 온보딩이 완료된 후 잠시 후에 Entra ID 디렉터리가 Teleport 클러스터 및 Graph Explorer로 가져와집니다.
Graph Explorer UI에서 Entra ID 사용자와 그룹을 찾을 수 있습니다. AWS 계정에 Entra ID SSO가 설정되어 있고 AWS 계정이 Teleport에 연결된 경우 Graph Explorer는 Entra ID 아이덴티티에 부여된 AWS 리소스에 대한 접근도 표시합니다.
다음 예시에서 Bob은 Entra ID의 AWS-Engineers 그룹에 할당됩니다.
이를 통해 그는 SSO를 사용하여 AWS IAM 역할 Engineers를 수임할 수 있으며,
이를 통해 Bob은 두 개의 S3 버킷에 접근할 수 있습니다.

