Запросы приложений к большинству служб Azure должны проходить проверку подлинности с помощью ключей или подключений без пароля. Разработчики должны уделять внимание тому, чтобы не раскрыть ключи в незащищенном расположении. Любой, кто получает доступ к ключу, может пройти проверку подлинности в службе. Проверка подлинности без ключей обеспечивает улучшенные преимущества управления и безопасности по сравнению с ключом учетной записи, так как для хранения ключа (или строка подключения) нет.
Подключения без ключей включены со следующими шагами:
Настройте проверку подлинности.
При необходимости задайте переменные среды.
Используйте тип учетных данных библиотеки удостоверений Azure для создания клиентского объекта Azure OpenAI.
Проверка подлинности
Для использования клиентских библиотек Azure требуется проверка подлинности в идентификаторе Microsoft Entra.
Проверка подлинности отличается в зависимости от среды, в которой выполняется приложение:
Используйте следующую ссылку, чтобы изучить шаблон ИИ без ключей Azure OpenAI. Этот шаблон подготавливает учетную запись Azure OpenAI с разрешением роли RBAC учетной записи пользователя для проверки подлинности без ключа (Microsoft Entra) для доступа к пакетам SDK API OpenAI.
Примечание.
В этой статье используется один или несколько шаблонов приложений ИИ в качестве основы для примеров и рекомендаций в этой статье. Шаблоны приложений ИИ предоставляют вам хорошо поддерживаемые и простые в развертывании эталонные реализации, которые помогают обеспечить высококачественную отправную точку для приложений ИИ.
Чтобы получить собственный идентификатор удостоверения, используйте следующую команду для локальной разработки. Перед использованием этой команды необходимо войти в az login систему.
az ad signed-in-user show \
--query id -o tsv
Чтобы получить собственный идентификатор удостоверения, используйте следующую команду для локальной разработки. Перед использованием этой команды необходимо войти в Connect-AzAccount систему.
При использовании Bicep , развернутого с помощью Интерфейса командной строки разработчика Azure, для параметра устанавливается principalId удостоверение пользователя или службы, выполняющего развертывание.
Следующая main.parameters.json переменная устанавливается для удостоверения, выполняющего процесс.
Для использования в Azure укажите управляемое удостоверение, назначаемое пользователем, в рамках процесса развертывания Bicep. Создайте управляемое удостоверение, назначаемое пользователем, отдельно от удостоверения, выполняющего процесс.
Чтобы предоставить удостоверению разрешения на доступ к ресурсу через RBAC, назначьте роль с помощью команды Azure CLI az role assignment create.
az role assignment create \
--role "Cognitive Services OpenAI User" \
--assignee "<identity-id>" \
--scope "/subscriptions/<subscription-id>/resourceGroups/<resource-group-name>"
Чтобы предоставить приложению разрешения для ресурса Azure OpenAI через RBAC, назначьте роль с помощью командлета Azure PowerShell New-AzRoleAssignment.
Используйте следующий шаблон Azure OpenAI Bicep, чтобы создать ресурс и задать проверку подлинности для объекта identityId. Bicep требует идентификатор роли. Приведенный name в этом фрагменте кода Bicep не является ролью Azure. Это зависит от развертывания Bicep.
Выполните один из следующих подходов, чтобы задать идентификатор клиента управляемого удостоверения, назначаемого пользователем:
Задайте переменную среды AZURE_CLIENT_ID. Конструктор без параметров DefaultAzureCredential будет использовать значение этой переменной среды, если она присутствует.
using Azure;
using Azure.AI.OpenAI;
using Azure.Identity;
using System;
using static System.Environment;
string endpoint = GetEnvironmentVariable("AZURE_OPENAI_ENDPOINT");
OpenAIClient client = new(new Uri(endpoint), new DefaultAzureCredential());
using Azure;
using Azure.AI.OpenAI;
using Azure.Identity;
using System;
using static System.Environment;
string endpoint = GetEnvironmentVariable("AZURE_OPENAI_ENDPOINT");
var credential = new DefaultAzureCredential(
new DefaultAzureCredentialOptions
{
ManagedIdentityClientId = "<user_assigned_client_id>"
});
OpenAIClient client = new(new Uri(endpoint), credential);
Дополнительные сведения о DefaultAzureCredential для Java см. в обзоре DefaultAzureCredential.
Используйте один из следующих способов, чтобы задать идентификатор клиента назначенного пользователем управляемого удостоверения:
Задайте переменную среды AZURE_CLIENT_ID. Конструктор без параметров DefaultAzureCredential будет использовать значение этой переменной среды, если она присутствует.
Назначьте назначенное пользователем управляемое удостоверение с помощью DefaultAzureCredential и настройте его с идентификатором клиента через DefaultAzureCredentialBuilder.
Дополнительные сведения о DefaultAzureCredential для JavaScript см. в обзоре DefaultAzureCredential.
Выполните один из следующих способов, чтобы задать идентификатор клиента назначаемого пользователем управляемого удостоверения.
Задайте переменную среды AZURE_CLIENT_ID. Конструктор без параметров DefaultAzureCredential будет использовать значение этой переменной среды, если она присутствует.
Назначьте управляемое удостоверение, назначаемое пользователем, с DefaultAzureCredential, используя параметр managedIdentityClientId для его настройки с помощью идентификатора клиента:
Дополнительные сведения о DefaultAzureCredential для Python см. в обзоре DefaultAzureCredential.
Используйте один из следующих методов, чтобы задать идентификатор клиента управляемого удостоверения, назначаемого пользователем.
Задайте переменную среды AZURE_CLIENT_ID. Конструктор без параметров DefaultAzureCredential будет использовать значение этой переменной среды, если она присутствует.
Назначьте управляемое удостоверение, назначаемое пользователем, с DefaultAzureCredential с помощью параметра managed_identity_client_id, чтобы настроить его с идентификатором клиента: