사용자 할당 ID를 사용하여 컨테이너 앱을 구성하려면 먼저 ID를 만든 다음 해당 리소스 식별자를 컨테이너 앱의 구성에 추가해야 합니다. Azure Portal 또는 Azure CLI를 통해 사용자 할당 ID를 만들 수 있습니다. 사용자 할당 ID를 만들고 관리하는 방법에 대한 자세한 내용은 사용자 할당 관리형 ID 관리를 참조하세요.
애플리케이션에는 시스템 할당 ID와 사용자 할당 ID 둘 다 동시에 있을 수 있습니다. 이 경우에 type 속성이 SystemAssigned,UserAssigned가 됩니다.
대상 리소스 구성
일부 리소스의 경우 액세스 권한을 부여하도록 앱의 관리 ID에 대한 역할 할당을 구성해야 합니다. 그렇지 않으면 해당 ID에 유효한 토큰을 사용하는 경우에도 앱에서 Azure Key Vault 및 Azure SQL Database와 같은 서비스로의 호출이 거부됩니다. Azure RBAC(역할 기반 액세스 제어)에 대한 자세한 정보는 RBAC란?을 참조하세요. Microsoft Entra 토큰을 지원하는 리소스에 대한 자세한 내용은 Microsoft Entra 인증을 지원하는 Azure 서비스를 참조하세요.
Important
관리 ID에 대한 백 엔드 서비스는 약 24시간 동안 리소스 URI당 캐시를 유지합니다. 특정 대상 리소스의 액세스 정책을 업데이트하고 해당 리소스에 대한 토큰을 즉시 검색하는 경우 토큰이 만료될 때까지 오래된 권한으로 캐시된 토큰을 계속 가져올 수 있습니다. 토큰 새로 고침 강제 적용은 지원되지 않습니다.
앱 코드에서 Azure 서비스에 커넥트
앱은 관리형 ID를 사용하여 Azure SQL Database, Azure Key Vault, Azure Storage 같은 Microsoft Entra ID를 사용하는 Azure 리소스에 액세스하기 위한 토큰을 획득할 수 있습니다. 이러한 토큰은 애플리케이션의 특정 사용자가 아닌 리소스에 액세스하는 애플리케이션을 나타냅니다.
Container Apps는 토큰을 검색하기 위해 내부적으로 액세스할 수 있는 REST 엔드포인트를 제공합니다. REST 엔드포인트는 표준 HTTP GET 요청이 있는 앱 내에서 사용할 수 있으며, 기본 설정 언어로 일반 HTTP 클라이언트와 함께 보낼 수 있습니다. .NET, JavaScript, Java, Python의 경우 Azure ID 클라이언트 라이브러리는 이 REST 엔드포인트에 대한 추상화 기능을 제공합니다. 서비스별 클라이언트에 자격 증명 개체를 추가하여 다른 Azure 서비스에 연결할 수 있습니다.
참고 항목
Azure ID 클라이언트 라이브러리를 사용하는 경우 사용자 할당 관리 ID 클라이언트 ID를 명시적으로 지정해야 합니다.
IDENTITY_ENDPOINT 환경 변수에서 토큰 엔드포인트 URL을 가져옵니다. x-identity-header에는 IDENTITY_HEADER 환경 변수에 저장된 GUID가 포함되어 있습니다.
GET http://localhost:42356/msi/token?resource=https://vault.azure.net&api-version=2019-08-01 HTTP/1.1
x-identity-header: 853b9a84-5bfa-4b22-a3f3-0b9a43d9ad8a
IDENTITY_HEADER 환경 변수의 값. 이 헤더는 SSRF(서버 쪽 요청 위조) 공격을 완화합니다.
client_id
쿼리
(선택 사항) 사용할 사용자 할당 ID의 클라이언트 ID입니다. principal_id, mi_res_id 또는 object_id를 포함하는 요청에 사용할 수 없습니다. 모든 ID 매개 변수(client_id, principal_id, object_id 및 mi_res_id)가 생략될 경우 시스템 할당 ID가 사용됩니다.
principal_id
쿼리
(선택 사항) 사용할 사용자 할당 ID의 보안 주체 ID입니다. object_id는 대신 사용할 수 있는 별칭입니다. client_id, mi_res_id 또는 object_id를 포함하는 요청에 사용할 수 없습니다. 모든 ID 매개 변수(client_id, principal_id, object_id 및 mi_res_id)가 생략될 경우 시스템 할당 ID가 사용됩니다.
mi_res_id
쿼리
(선택 사항) 사용할 사용자 할당 ID의 Azure 리소스 ID입니다. principal_id, client_id 또는 object_id를 포함하는 요청에 사용할 수 없습니다. 모든 ID 매개 변수(client_id, principal_id, object_id 및 mi_res_id)가 생략될 경우 시스템 할당 ID가 사용됩니다.
Important
사용자 할당 ID에 대한 토큰을 가져오려고 시도하는 경우 선택적 속성 중 하나를 포함해야 합니다. 그러지 않으면 토큰 서비스는 시스템 할당 ID에 대한 토큰을 가져오려고 시도하는데 이는 존재 여부가 불분명합니다.
관리형 ID 보기
다음 Azure CLI 명령을 사용하여 시스템 할당 및 사용자 할당 관리형 ID를 표시할 수 있습니다. 출력에는 컨테이너 앱에 할당된 모든 관리 ID의 관리 ID 유형, 테넌트 ID 및 보안 주체 ID가 표시됩니다.
az containerapp identity show --name <APP_NAME> --resource-group <GROUP_NAME>
관리 ID 제거
시스템이 할당한 ID를 제거하면 Microsoft Entra ID에서 삭제됩니다. 컨테이너 앱 리소스 자체를 삭제하면 시스템 할당 ID도 Microsoft Entra ID에서 자동으로 제거됩니다. 컨테이너 앱에서 사용자 할당 관리형 ID를 제거해도 Microsoft Entra ID는 제거되지 않습니다.