관리 ID를 사용하여 App Configuration에 액세스

Microsoft Entra 관리 ID는 클라우드 애플리케이션에 대한 비밀 관리를 간소화합니다. 관리 ID를 사용하면 코드에서 실행되는 Azure 서비스에 대해 만든 서비스 주체를 사용할 수 있습니다. Azure Key Vault 또는 로컬 연결 문자열 저장된 별도의 자격 증명 대신 관리 ID를 사용합니다.

Azure App Configuration과 해당 .NET, .NET Framework, Java Spring 클라이언트 라이브러리에는 관리 ID 지원이 기본적으로 제공됩니다. 사용할 필요는 없지만 관리 ID를 사용하면 비밀이 포함된 액세스 토큰이 필요하지 않습니다. 코드는 서비스 엔드포인트만 사용하여 App Configuration 저장소에 액세스할 수 있습니다. 비밀을 노출하지 않고 코드에 이 URL을 직접 포함할 수 있습니다.

이 문서에서는 관리 ID를 활용하여 App Configuration에 액세스하는 방법을 보여 줍니다. 빠른 시작에 도입된 웹앱을 기반으로 합니다. 계속 진행하기 전에 먼저 App Configuration을 사용하여 ASP.NET Core 앱을 만듭니다.

이 문서에서는 관리 ID를 활용하여 App Configuration에 액세스하는 방법을 보여 줍니다. 빠른 시작에 도입된 웹앱을 기반으로 합니다. 계속 진행하기 전에 먼저 Azure App Configuration을 사용하여 Java Spring 앱을 만듭니다.

Important

관리 ID는 로컬로 실행되는 애플리케이션을 인증하는 데 사용할 수 없습니다. 관리 ID를 지원하는 Azure 서비스에 애플리케이션을 배포해야 합니다. 이 문서에서는 Azure App Service를 예로 사용합니다. 그러나 동일한 개념이 관리 ID를 지원하는 다른 모든 Azure 서비스에도 적용됩니다. 예를 들어 Azure Kubernetes Service, Azure Virtual Machine, Azure Container Instances가 있습니다. 워크로드가 이러한 서비스 중 하나에서 호스트되는 경우 서비스의 관리 ID 지원도 활용할 수 있습니다.

이 자습서의 단계는 임의의 코드 편집기를 사용하여 수행할 수 있습니다. Visual Studio Code는 Windows, macOS 및 Linux 플랫폼에서 사용할 수 있는 훌륭한 옵션입니다.

이 문서에서는 다음 방법을 설명합니다.

  • App Configuration에 대한 관리 ID 액세스 권한을 부여합니다.
  • App Configuration에 연결할 때 관리 ID를 사용하도록 앱을 구성합니다.

필수 조건

이 자습서를 완료하려면 다음 항목이 필요합니다.

Azure를 구독하고 있지 않다면 시작하기 전에 Azure 체험 계정을 만듭니다.

관리형 ID 추가

포털에서 관리 ID를 설정하려면 먼저 애플리케이션을 만든 다음 기능을 사용하도록 설정합니다.

  1. Azure Portal에서 App Services 리소스에 액세스합니다. 사용할 기존 App Services 리소스가 없는 경우 새로 만듭니다.

  2. 왼쪽 창에서 설정 그룹으로 아래로 스크롤하고 ID를 선택합니다.

  3. 시스템 할당 탭에서 상태를기로 전환하고 저장선택합니다.

  4. 메시지가 표시되면 라고 대답하여 시스템이 할당한 관리 ID를 켭니다.

    Screenshot of how to add a managed identity in App Service.

App Configuration에 대한 액세스 권한 부여

다음 단계에서는 App Service에 App Configuration 데이터 판독기 역할을 할당하는 방법을 설명합니다. 세부 단계에 대해서는 Azure Portal을 사용하여 Azure 역할 할당을 참조하세요.

  1. Azure Portal에서 App Configuration 저장소를 선택합니다.

  2. 액세스 제어(IAM) 를 선택합니다.

  3. 추가>역할 할당 추가를 선택합니다.

    Screenshot that shows the Access control (IAM) page with Add role assignment menu open.

    역할을 할당할 수 있는 권한이 없으면 역할 할당 추가 옵션이 사용하지 않도록 설정됩니다. 자세한 정보는 Azure 기본 제공 역할을 참조하세요.

  4. 역할 탭에서 App Configuration 데이터 읽기 권한자 역할을 선택하고, 다음을 선택합니다.

    Screenshot that shows the Add role assignment page with Role tab selected.

  5. 멤버 탭에서 관리 ID, 멤버 선택을 차례로 선택합니다.

    Screenshot that shows the Add role assignment page with Members tab selected.

  6. Azure 구독을 선택하고, 관리 ID에 대해 App Service를 선택한 다음, App Service 이름을 선택합니다.

    Screenshot that shows the select managed identities page.

  7. 검토 + 할당 탭에서 검토 + 할당을 선택하여 역할을 할당합니다.

관리 ID 사용

  1. Azure.Identity 패키지에 대한 참조를 추가합니다.

    dotnet add package Azure.Identity
    
  2. App Configuration 저장소에 대한 엔드포인트를 찾습니다. 이 URL은 Azure Portal의 저장소에 대한 액세스 키 탭에 나열됩니다.

  3. appsettings.json 파일을 열고, 다음 스크립트를 추가합니다. <service_endpoint>(대괄호 포함)를 App Configuration 저장소의 URL로 바꿉니다.

    "AppConfig": {
        "Endpoint": "<service_endpoint>"
    }
    
  4. Program.cs 파일을 열고, Azure.IdentityMicrosoft.Azure.Services.AppAuthentication 네임스페이스에 대한 참조를 추가합니다.

    using Azure.Identity;
    
  5. App Configuration에 저장된 값에 액세스하려면 AddAzureAppConfiguration() 메서드를 사용하도록 Builder 구성을 업데이트합니다.

    var builder = WebApplication.CreateBuilder(args);
    
    builder.Configuration.AddAzureAppConfiguration(options =>
        options.Connect(
            new Uri(builder.Configuration["AppConfig:Endpoint"]),
            new ManagedIdentityCredential()));
    

    참고 항목

    사용자가 할당한 관리 ID를 사용하려면 ManagedIdentityCredential을 만들 때 clientId를 지정해야 합니다.

    new ManagedIdentityCredential("<your_clientId>")
    

    Azure 리소스에 대한 관리 ID FAQ설명된 대로 사용되는 관리 ID를 확인하는 기본 방법이 있습니다. 이 경우 Azure ID 라이브러리는 나중에 발생할 수 있는 런타임 문제를 방지하기 위해 원하는 ID를 지정하도록 강제합니다. 예를 들어 새 사용자가 할당한 관리 ID가 추가되거나 시스템이 할당한 관리 ID가 사용하도록 설정된 경우입니다. 따라서 하나의 사용자가 할당한 관리 ID만 정의되고 시스템이 할당한 관리 ID가 없는 경우에도 clientId를 지정해야 합니다.

  1. App Configuration 저장소에 대한 엔드포인트를 찾습니다. 이 URL은 Azure Portal의 저장소에 대한 개요 탭에 나열됩니다.

  2. bootstrap.properties을(를) 열어 연결 문자열 속성을 제거하고 시스템 할당 ID에 대한 엔드포인트로 바꿉니다.

spring.cloud.azure.appconfiguration.stores[0].endpoint=<service_endpoint>

사용자 할당 ID의 경우:

spring.cloud.azure.appconfiguration.stores[0].endpoint=<service_endpoint>
spring.cloud.azure.credential.managed-identity-enabled= true
spring.cloud.azure.credential.client-id= <client_id>

참고 항목

자세한 내용은 Spring Cloud Azure 인증을 참조하세요.

응용 프로그램 배포

관리 ID를 사용하는 경우 앱을 Azure 서비스에 배포해야 합니다. 관리 ID는 로컬로 실행되는 앱의 인증에 사용할 수 없습니다. 앱 구성으로 ASP.NET Core 앱 만들기 빠른 시작에서 만들고 관리 ID를 사용하도록 수정한 .NET Core 앱을 배포하려면 웹 앱 게시의 지침을 따르세요.

관리 ID를 사용하려면 Azure 서비스에 앱을 배포해야 합니다. 관리 ID는 로컬로 실행되는 앱의 인증에 사용할 수 없습니다. Azure App Configuration을 사용하여 Java Spring 앱 만들기 빠른 시작에서 만들고 관리 ID를 사용하도록 수정한 Spring 앱을 배포하려면 웹앱 게시의 지침을 따르세요.

App Service 외에도 다른 많은 Azure 서비스는 관리 ID를 지원합니다. 자세한 내용은 Azure 리소스에 대한 관리 ID를 지원하는 서비스를 참조하세요.

리소스 정리

이 문서에서 만든 리소스를 계속 사용하지 않으려면 여기서 만든 리소스 그룹을 삭제하여 요금이 부과되지 않도록 합니다.

Important

리소스 그룹을 삭제하면 다시 되돌릴 수 없습니다. 리소스 그룹 및 포함된 모든 리소스가 영구적으로 삭제됩니다. 잘못된 리소스 그룹 또는 리소스를 자동으로 삭제하지 않도록 합니다. 유지하려는 다른 리소스가 포함된 리소스 그룹 내에서 이 문서에 대한 리소스를 만든 경우 리소스 그룹을 삭제하는 대신 해당 창에서 각 리소스를 개별적으로 삭제합니다.

  1. Azure Portal에 로그인하고 리소스 그룹을 선택합니다.
  2. 이름으로 필터링 상자에서 리소스 그룹의 이름을 입력합니다.
  3. 결과 목록에서 리소스 그룹 이름을 선택하여 개요를 확인합니다.
  4. 리소스 그룹 삭제를 선택합니다.
  5. 리소스 그룹 삭제를 확인하는 메시지가 표시됩니다. 리소스 그룹의 이름을 입력하여 확인하고 삭제를 선택합니다.

잠시 후, 리소스 그룹 및 모든 해당 리소스가 삭제됩니다.

다음 단계

이 자습서에서는 Azure 관리 ID를 추가하여 App Configuration에 대한 액세스 관리를 간소화하고 앱에 대한 자격 증명 관리를 개선했습니다. App Configuration을 사용하는 방법에 대해 자세히 알아보려면 Azure CLI 샘플로 계속 진행하세요.