Проверка подлинности и авторизация Служба приложений в Azure OpenAI с помощью Microsoft Entra и пакета SDK для семантического ядра
В этой статье показано, как использовать удостоверения, управляемые Microsoft Entra, для проверки подлинности и авторизации приложения Служба приложений в ресурсе Azure OpenAI.
В этой статье также показано, как использовать пакет SDK для семантического ядра для легкой реализации проверки подлинности Microsoft Entra в приложении .NET.
Используя управляемое удостоверение из Microsoft Entra, приложение Служба приложений может легко получить доступ к защищенным ресурсам Azure OpenAI без необходимости вручную подготавливать или менять секреты.
Необходимые компоненты
- Учетная запись Azure с активной подпиской. Создайте учетную запись бесплатно .
- Пакет SDK для .NET
Microsoft.SemanticKernel
Пакет NuGetAzure.Identity
Пакет NuGet- Создание и развертывание ресурса Службы OpenAI Azure
- Создание и развертывание приложения .NET в Служба приложений
Добавление управляемого удостоверения в Служба приложений
Приложению можно предоставить два типа удостоверений:
- Назначаемое системой удостоверение привязывается к приложению и удаляется при удалении приложения. Приложение может иметь только одно удостоверение, назначаемое системой.
- Назначаемое пользователем удостоверение — это изолированный ресурс Azure, который можно назначить приложению. Приложение может иметь несколько назначаемых пользователем удостоверений.
Добавление назначаемого системой удостоверения
- Перейдите на страницу приложения в портал Azure, а затем прокрутите вниз до группы Параметры.
- Выберите Удостоверение.
- На вкладке "Назначаемая системой" установите переключатель "Состояние включено", а затем нажмите кнопку "Сохранить".
Выполните команду az webapp identity assign
, чтобы создать удостоверение, назначаемое системой.
az webapp identity assign --name <appName> --resource-group <groupName>
Добавление назначаемого пользователем удостоверения
Чтобы добавить удостоверение, назначаемое пользователем, создайте удостоверение и добавьте его идентификатор ресурса в конфигурацию приложения.
Создайте ресурс управляемого удостоверения, назначаемый пользователем, выполнив следующие инструкции.
В левой области навигации страницы приложения прокрутите вниз до группы Параметры.
Выберите Удостоверение.
Выберите "Назначаемое пользователем>" добавление.
Найдите созданное ранее удостоверение, выберите его и нажмите кнопку "Добавить".
Внимание
После нажатия кнопки "Добавить" приложение перезапускается.
Создайте назначаемое пользователем удостоверение:
az identity create --resource-group <groupName> --name <identityName>
Назначьте удостоверение приложению:
az webapp identity assign --resource-group <groupName> --name <appName> --identities <identityId>
Добавление роли пользователя Azure OpenAI в управляемое удостоверение
- На портале Azure перейдите к область, которым требуется предоставить Доступ к Azure OpenAI. Область может быть группой управления, подпиской, группой ресурсов или определенным ресурсом Azure OpenAI.
- В области навигации слева выберите элемент управления доступом (IAM).
- Нажмите + Добавить и выберите Добавить назначение ролей.
- На вкладке "Роль" выберите роль пользователя OpenAI в Cognitive Services.
- На вкладке "Члены" выберите управляемое удостоверение.
- Чтобы назначить роль, на вкладке Проверка и назначение выберите Проверка и назначение.
Область ресурсов
az role assignment create --assignee "<managedIdentityObjectID>" \
--role "Cognitive Services OpenAI User" \
--scope "/subscriptions/<subscriptionId>/resourcegroups/<resourceGroupName>/providers/<providerName>/<resourceType>/<resourceSubType>/<resourceName>"
Область группы ресурсов
az role assignment create --assignee "<managedIdentityObjectID>" \
--role "Cognitive Services OpenAI User" \
--scope "/subscriptions/<subscriptionId>/resourcegroups/<resourceGroupName>"
Область подписки
az role assignment create --assignee "<managedIdentityObjectID>" \
--role "Cognitive Services OpenAI User" \
--scope "/subscriptions/<subscriptionId>"
Область группы управления
az role assignment create --assignee "<managedIdentityObjectID>" \
--role "Cognitive Services OpenAI User" \
--scope "/providers/Microsoft.Management/managementGroups/<managementGroupName>"
Реализация проверки подлинности на основе токенов с помощью пакета SDK для семантического ядра
Инициализировать объект,
DefaultAzureCredential
чтобы предположить управляемое удостоверение приложения:// Initialize a DefaultAzureCredential. // This credential type will try several authentication flows in order until one is available. // Will pickup Visual Studio or Azure CLI credentials in local environments. // Will pickup managed identity credentials in production deployments. TokenCredential credentials = new DefaultAzureCredential( new DefaultAzureCredentialOptions { // If using a user-assigned identity specify either: // ManagedIdentityClientId or ManagedIdentityResourceId. // e.g.: ManagedIdentityClientId = "myIdentityClientId". } );
Kernel
Создайте объект, включающий службу завершения чата Azure OpenAI, и используйте ранее созданные учетные данные:// Retrieve the endpoint and deployment obtained from the Azure OpenAI deployment. // Must use the deployment name not the underlying model name. IConfigurationRoot config = new ConfigurationBuilder().AddUserSecrets<Program>().Build(); string endpoint = config["AZURE_OPENAI_ENDPOINT"]!; string deployment = config["AZURE_OPENAI_GPT_NAME"]!; // Build a Kernel that includes the Azure OpenAI Chat Completion Service. // Include the previously created token credential. Kernel kernel = Kernel .CreateBuilder() .AddAzureOpenAIChatCompletion(deployment, endpoint, credentials) .Build();
Kernel
Используйте объект для вызова завершения запроса с помощью Azure OpenAI:// Use the Kernel to invoke prompt completion through Azure OpenAI. // The Kernel response will be null if the model can't be reached. string? result = await kernel.InvokePromptAsync<string>("Please list three Azure services"); Console.WriteLine($"Output: {result}"); // Continue sending and receiving messages between the user and AI. // ...