Поделиться через


Аутентификация в Azure OpenAI из приложения, размещенного на Azure, с использованием Microsoft Entra ID

В этой статье показано, как использовать управляемые удостоверения Microsoft Entra ID и библиотеку Microsoft.Extensions.AI для аутентификации приложения, размещенного в Azure, к ресурсу Azure OpenAI.

Управляемая идентификация от Microsoft Entra ID позволяет вашему приложению легко получить доступ к другим ресурсам, защищенным Microsoft Entra, таким как Azure OpenAI. Идентификация управляется платформой Azure и не требует от вас назначать, управлять или изменять какие-либо секреты.

Необходимые условия

Добавьте управляемое удостоверение в Azure App Service

Управляемые удостоверения предоставляют автоматическое управляемое удостоверение в идентификаторе Microsoft Entra для приложений, используемых при подключении к ресурсам, поддерживающим проверку подлинности Microsoft Entra. Приложения могут использовать управляемые удостоверения для получения маркеров Microsoft Entra без необходимости управлять учетными данными. Приложению могут быть назначены два типа удостоверений:

  • назначаемое системой удостоверение привязано к приложению и удаляется при удалении приложения. Приложение может иметь только одно удостоверение, назначаемое системой.
  • назначенная пользователем идентичность является автономным ресурсом Azure, который можно назначить вашему приложению. Приложение может иметь несколько идентификаторов, назначаемых пользователями.
  1. Перейдите на страницу приложения на портале Azure, а затем прокрутите вниз до группы параметров.

  2. Выберите Личность.

  3. На вкладке Назначено системой переключите статус на Включено, а затем выберите Сохранить.

    Снимок экрана, показывающий, как добавить управляемую личность, назначенную системой, в приложение.

    Заметка

    На предыдущем снимке экрана показан этот процесс на службе приложений Azure, но шаги аналогичны другим хостам, таким как Azure Container Apps.

Выполните команду az webapp identity assign, чтобы создать удостоверение, назначаемое системой:

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

Добавьте роль пользователя Azure OpenAI к удостоверению

  1. На портале Azureперейдите к области, к которой требуется предоставить доступ Azure OpenAI. Областью может быть группа управления, подписка, группа ресурсовили определенный ресурс Azure OpenAI.

  2. В левой панели навигации выберите управление доступом (IAM).

  3. Выберите Добавить, а затем выберите Добавить назначение ролей.

    Снимок экрана, показывающий, как добавить роль RBAC.

  4. На вкладке Роль выберите роль пользователя Cognitive Services OpenAI .

  5. На вкладке Участники выберите управляемое удостоверение.

  6. На вкладке Проверка и назначение выберите пункт Проверка и назначение, чтобы назначить роль.

Azure CLI можно использовать для назначения роли пользователя OpenAI в службах Cognitive Services вашему управляемому удостоверению на различных уровнях.

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

Реализация проверки подлинности удостоверения в коде приложения

  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
    • Azure.AI.OpenAI: позволяет приложению работать со службой Azure OpenAI.
    • Microsoft.Extensions.Azure: предоставляет вспомогательные расширения для регистрации служб для внедрения зависимостей
    • Microsoft.Extensions.AI: предоставляет абстракции ИИ для распространенных задач ИИ
    • Microsoft.Extensions.AI.OpenAI: позволяет использовать типы служб OpenAI в качестве абстракций ИИ, предоставляемых Microsoft.Extensions.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. Создайте службу ИИ и зарегистрируйте ее в коллекции служб:

    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 и о регистрации других типов служб ИИ в документации по внедрению зависимостей SDK Azure для .NET.