다음을 통해 공유


Microsoft Entra ID를 사용하여 Azure 호스팅 앱에서 Azure OpenAI에 인증

이 문서에서는 Microsoft Entra ID 관리 IDMicrosoft.Extensions.AI 라이브러리 사용하여 Azure OpenAI 리소스에 Azure 호스티드 앱을 인증하는 방법을 보여 줍니다.

Microsoft Entra ID의 관리 ID를 사용하면 앱이 Azure OpenAI와 같은 다른 Microsoft Entra 보호 리소스에 쉽게 액세스할 수 있습니다. ID는 Azure 플랫폼에서 관리되며 비밀을 프로비전, 관리 또는 회전할 필요가 없습니다.

필수 구성 요소

App Service에 관리 ID 추가

관리 ID는 Microsoft Entra 인증을 지원하는 리소스에 연결할 때 사용할 애플리케이션에 대해 Microsoft Entra ID에 자동으로 관리 ID를 제공합니다. 애플리케이션은 관리 ID를 사용하여 자격 증명을 관리할 필요 없이 Microsoft Entra 토큰을 가져올 수 있습니다. 애플리케이션에는 다음 두 가지 유형의 ID가 할당될 수 있습니다.

  • 시스템 할당 ID은 애플리케이션에 연결되어 있으며, 앱이 삭제되면 해당 ID도 삭제됩니다. 앱에는 시스템 할당 ID가 하나만 있을 수 있습니다.
  • 사용자가 할당한 ID는 앱에 할당할 수 있는 독립 실행형 Azure 리소스입니다. 앱에는 여러 사용자 할당 ID가 있을 수 있습니다.
  1. Azure Portal 앱 페이지로 이동한 다음 설정 그룹으로 스크롤합니다.

  2. ID선택합니다.

  3. 시스템 할당 탭에서 상태으로 전환한 후, 저장을 선택합니다.

    앱에 시스템 할당 관리 ID를 추가하는 방법을 보여 주는 스크린샷입니다.

    메모

    위의 스크린샷은 Azure App Service에서 이 프로세스를 보여 주지만, 단계는 Azure Container Apps와 같은 다른 호스트에서 유사합니다.

az webapp identity assign 명령을 실행하여 시스템 할당 ID를 만듭니다.

az webapp identity assign --name <appName> --resource-group <groupName>

ID에 Azure OpenAI 사용자 역할 추가

  1. Azure Portal에서 Azure OpenAI 액세스 권한을 부여하려는 범위로 이동합니다. 범위는 관리 그룹, 구독, 리소스 그룹또는 특정 Azure OpenAI 리소스일 수 있습니다.

  2. 왼쪽 탐색 창에서 액세스 제어(IAM)선택합니다.

  3. 추가를 선택한 다음, 역할 할당추가를 선택합니다.

    RBAC 역할을 추가하는 방법을 보여 주는 스크린샷

  4. 역할 탭에서 Cognitive Services OpenAI 사용자 역할을 선택합니다.

  5. 멤버 탭에서 관리 ID를 선택합니다.

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

Azure CLI를 사용하여 다양한 범위에서 관리 ID에 Cognitive Services OpenAI 사용자 역할을 할당할 수 있습니다.

az role assignment create --assignee "<managedIdentityObjectID>" \
--role "Cognitive Services OpenAI User" \
--scope "/subscriptions/<subscriptionId>/resourcegroups/<resourceGroupName>/providers/<providerName>/<resourceType>/<resourceSubType>/<resourceName>"

앱 코드에서 ID 인증 구현

  1. 앱에 다음 NuGet 패키지를 추가합니다.

    dotnet add package Azure.Identity
    dotnet add package Azure.AI.OpenAI
    dotnet add package Microsoft.Extensions.Azure
    dotnet add package Microsoft.Extensions.AI
    dotnet add package Microsoft.Extensions.AI.OpenAI
    

    위의 패키지는 각각 이 시나리오에 대해 다음과 같은 문제를 처리합니다.

    • azure.Identity: Microsoft Entra ID를 사용하는 핵심 기능을 제공합니다.
    • azure.AI.OpenAI: 앱이 Azure OpenAI 서비스와 상호 작용할 수 있도록 합니다.
    • microsoft.Extensions.Azure: 종속성 주입을 위해 서비스를 등록하는 도우미 확장을 제공합니다.
    • Microsoft.Extensions.AI: 일반적인 AI 작업에 대한 AI 추상화 제공
    • microsoft.Extensions.AI.OpenAI: OpenAI 서비스 유형을 Microsoft.Extensions.AI 제공된 AI 추상화로 사용할 수 있습니다.
  2. 앱의 Program.cs 파일에서 DefaultAzureCredential 개체를 만들어 사용 가능한 자격 증명을 검색하고 구성합니다.

    // For example, will discover Visual Studio or Azure CLI credentials
    // in local environments and managed identity credentials in production deployments
    var credential = new DefaultAzureCredential(
        new DefaultAzureCredentialOptions
        {
            // If necessary, specify the tenant ID,
            // user-assigned identity client or resource ID, or other options
        }
    );
    
  3. AI 서비스를 만들고 서비스 컬렉션에 등록합니다.

    string endpoint = builder.Configuration["AZURE_OPENAI_ENDPOINT"];
    string deployment = builder.Configuration["AZURE_OPENAI_GPT_NAME"];
    
    builder.Services.AddChatClient(
        new AzureOpenAIClient(new Uri(endpoint), credential)
        .AsChatClient(deployment));
    
  4. 엔드포인트에서 사용할 등록된 서비스를 삽입합니다.

    app.MapGet("/test-prompt", async (IChatClient chatClient) =>
    {
        return await chatClient.GetResponseAsync("Test prompt", new ChatOptions());
    })
    .WithName("Test prompt");
    

    ASP.NET Core 종속성 주입 및 .NET용 Azure SDK 종속성 주입 설명서에 다른 AI 서비스 유형을 등록하는 방법에 대해 자세히 알아봅니다.