Share via


Azure Container Apps의 관리형 ID

Microsoft Entra ID의 관리 ID를 사용하면 컨테이너 앱이 다른 Microsoft Entra로 보호된 리소스에 액세스할 수 있습니다. Microsoft Entra ID의 관리 ID에 대한 자세한 내용은 Azure 리소스의 관리 ID를 참조하세요.

컨테이너 앱에 두 가지 형식의 ID를 부여할 수 있습니다.

  • 시스템 할당 ID는 컨테이너 앱과 연결되고 컨테이너 앱이 삭제되면 삭제됩니다. 앱에는 하나의 시스템 할당 ID만 있을 수 있습니다.
  • 사용자 할당 ID는 컨테이너 앱 및 기타 리소스에 할당할 수 있는 Azure의 독립 실행형 리소스입니다. 컨테이너 앱에는 여러 사용자 할당 ID가 있을 수 있습니다. ID는 삭제할 때까지 존재합니다.

관리 ID를 사용하는 이유

실행 중인 컨테이너에서 관리 ID를 사용하면 Microsoft Entra 인증을 지원하는 서비스에서 인증을 받을 수 있습니다.

관리형 ID를 사용하여 다음을 수행합니다.

일반 사용 예

시스템 할당 ID는 다음과 같은 워크로드에 가장 적합합니다.

  • 단일 리소스 내에 포함되어 있는 워크로드
  • 독립적 ID가 필요한 워크로드

사용자 할당 ID는 다음과 같은 워크로드에 적합합니다.

  • 여러 리소스에서 실행되며 단일 ID를 공유할 수 있는 워크로드
  • 보안 리소스에 대한 사전 인증이 필요한 워크로드

제한 사항

크기 조정 규칙에서 관리 ID를 사용하는 것은 지원되지 않습니다. 크기 조정 규칙의 secretRef에 연결 문자열 또는 키를 계속 포함해야 합니다.

Init 컨테이너에서 관리 ID에 액세스할 수 없습니다.

관리되는 ID 구성

다음을 통해 관리형 ID를 구성할 수 있습니다.

  • Azure Portal
  • Azure CLI
  • ARM(Azure Resource Manager) 템플릿

실행 중인 컨테이너 앱에서 관리형 ID를 추가, 삭제 또는 수정하면 앱이 자동으로 다시 시작되지 않고 새 수정 버전이 만들어지지 않습니다.

참고 항목

2022년 4월 11일 이전에 배포된 컨테이너 앱에 관리형 ID를 추가하는 경우 새 수정 버전을 만들어야 합니다.

시스템 할당 ID 추가

  1. 컨테이너 앱 페이지의 왼쪽 탐색 영역에서 설정 그룹으로 아래로 스크롤합니다.

  2. ID를 선택합니다.

  3. 시스템 할당 탭에서 상태켜기로 바꿉니다. 저장을 선택합니다.

Screenshot of system-assigned identities.

사용자 할당 ID 추가

사용자 할당 ID를 사용하여 컨테이너 앱을 구성하려면 먼저 ID를 만든 다음 해당 리소스 식별자를 컨테이너 앱의 구성에 추가해야 합니다. Azure Portal 또는 Azure CLI를 통해 사용자 할당 ID를 만들 수 있습니다. 사용자 할당 ID를 만들고 관리하는 방법에 대한 자세한 내용은 사용자 할당 관리형 ID 관리를 참조하세요.

먼저, 사용자 할당 ID 리소스를 만들어야 합니다.

  1. 사용자 할당 관리형 ID 관리에 있는 단계에 따라 사용자 할당 관리형 ID 리소스를 만듭니다.

  2. 컨테이너 앱 페이지의 왼쪽 탐색 영역에서 설정 그룹으로 아래로 스크롤합니다.

  3. ID를 선택합니다.

  4. 사용자 할당 탭 내에서 추가를 선택합니다.

  5. 이전에 만든 ID를 검색한 후 선택합니다. 추가를 선택합니다.

Screenshot of user-assigned identities.

대상 리소스 구성

일부 리소스의 경우 앱의 관리형 ID가 액세스 권한을 부여하도록 역할 할당을 구성해야 합니다. 그렇지 않으면 앱에서 Azure Key Vault 및 Azure SQL Database 같은 서비스로의 호출이 해당 ID에 유효한 토큰을 사용하는 경우에도 거부됩니다. 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 클라이언트를 사용하여 구현할 수 있는 표준 HTTP GET을 사용하여 앱 내에서 액세스할 수 있습니다. .NET, JavaScript, Java, Python의 경우 Azure ID 클라이언트 라이브러리는 이 REST 엔드포인트에 대한 추상화 기능을 제공합니다. 다른 Azure 서비스에 연결하는 것은 서비스별 클라이언트에 자격 증명 개체를 추가하는 것만큼 간단합니다.

참고 항목

Azure ID 클라이언트 라이브러리를 사용하는 경우 사용자 할당 관리 ID 클라이언트 ID를 할당해야 합니다.

참고 항목

Entity Framework Core를 사용하여 Azure SQL 데이터 원본에 연결할 때 관리 ID 연결에 특별한 연결 문자열을 제공하는 Microsoft.Data.SqlClient를 사용하는 것이 좋습니다.

.NET 앱의 경우 .NET용 Azure ID 클라이언트 라이브러리를 통해 관리형 ID를 사용하는 것이 가장 간단한 방법입니다. 자세한 내용은 클라이언트 라이브러리의 해당 설명서 제목을 참조하세요.

연결된 예제에서는 DefaultAzureCredential을 사용합니다. 동일한 패턴이 Azure(관리형 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는 제거되지 않습니다.

  1. 앱 페이지의 왼쪽 탐색 영역에서 설정 그룹으로 아래로 스크롤합니다.

  2. ID를 선택합니다. 그런 다음, ID 유형에 따라 단계를 수행합니다.

    • 시스템 할당 ID: 시스템 할당 탭 내에서 상태끄기로 전환합니다. 저장을 선택합니다.
    • 사용자 할당 ID: 사용자 할당 탭을 선택하고 ID에 대한 확인란을 선택한 다음, 제거를 선택합니다. 를 선택하여 확인합니다.

다음 단계