Использование поиска ИИ Azure без ключей
В коде приложения можно настроить бессерверное подключение к поиску ИИ Azure, использующем идентификатор и роли Microsoft Entra для проверки подлинности и авторизации. Запросы приложений к большинству служб Azure должны проходить проверку подлинности с помощью ключей или бессерверных подключений. Разработчики должны уделять внимание тому, чтобы не раскрыть ключи в незащищенном расположении. Любой, кто получает доступ к ключу, может пройти проверку подлинности в службе. Проверка подлинности без ключей обеспечивает улучшенные преимущества управления и безопасности по сравнению с ключом учетной записи, так как для хранения ключа (или строка подключения) нет.
Подключения без ключей включены со следующими шагами:
- Настройте проверку подлинности.
- При необходимости задайте переменные среды.
- Используйте тип учетных данных библиотеки удостоверений Azure для создания клиентского объекта поиска ИИ Azure.
Необходимые компоненты
Для локальных рабочих нагрузок разработки и рабочей среды необходимо выполнить следующие действия:
- Создание ресурса поиска ИИ
- Включение доступа на основе ролей в службе поиска
- Установка клиентской библиотеки удостоверений Azure
Создание ресурса поиска ИИ
Прежде чем продолжить работу с этой статьей, вам потребуется ресурс поиска ИИ Azure. Если у вас нет ресурса, создайте ресурс . Включите управление доступом на основе ролей (RBAC) для ресурса.
Установка клиентской библиотеки удостоверений Azure
Чтобы использовать бессерверный подход, обновите код с поддержкой поиска ИИ с помощью клиентской библиотеки удостоверений Azure.
Установите клиентную библиотеку удостоверений Azure для .NET:
dotnet add package Azure.Identity
Обновление исходного кода для использования DefaultAzureCredential
Библиотека DefaultAzureCredential
удостоверений Azure позволяет выполнять тот же код в локальной среде разработки и в облаке Azure. Создайте единые учетные данные и повторно используйте экземпляр учетных данных при необходимости, чтобы воспользоваться преимуществами кэширования маркеров.
Дополнительные сведения о .NET см. в DefaultAzureCredential
клиентской библиотеке удостоверений Azure для .NET.
using Azure;
using Azure.Search.Documents;
using Azure.Search.Documents.Indexes;
using Azure.Search.Documents.Indexes.Models;
using Azure.Search.Documents.Models;
using Azure.Identity;
using System;
using static System.Environment;
string endpoint = GetEnvironmentVariable("AZURE_SEARCH_ENDPOINT");
string indexName = "my-search-index";
DefaultAzureCredential credential = new();
SearchClient searchClient = new(new Uri(endpoint), indexName, credential);
SearchIndexClient searchIndexClient = new(endpoint, credential);
Сервер локальной
Локальная разработка с помощью ролей включает следующие действия.
- Назначьте личное удостоверение ролям RBAC в определенном ресурсе.
- Используйте средство, например Azure CLI или Azure PowerShell, для проверки подлинности в Azure.
- Установите переменные среды для ресурса.
Роли для локальной разработки
Как локальный разработчик, удостоверение Azure должно полностью контролировать операции плоскости данных. Ниже приведены предлагаемые роли:
- Участник службы поиска, создание объектов и управление ими
- Участник данных индекса поиска, загрузка индекса
- Средство чтения данных индексов поиска, запрос индекса
Найдите свое личное удостоверение с помощью одного из следующих средств. Используйте это удостоверение в качестве <identity-id>
значения.
Войдите в Azure CLI.
az login
Получите свое личное удостоверение.
az ad signed-in-user show \ --query id -o tsv
Назначьте роль управления доступом на основе ролей (RBAC) идентификатору группы ресурсов.
az role assignment create \ --role "<role-name>" \ --assignee "<identity-id>" \ --scope "/subscriptions/<subscription-id>/resourceGroups/<resource-group-name>"
Где применимо, замените <identity-id>
и <subscription-id>
<resource-group-name>
фактическими значениями.
Проверка подлинности для локальной разработки
Используйте средство в локальной среде разработки для проверки подлинности в удостоверении Azure. После проверки подлинности DefaultAzureCredential
экземпляр в исходном коде находит и использует проверку подлинности.
Выберите средство для проверки подлинности во время локальной разработки.
Настройка переменных среды для локальной разработки
Чтобы подключиться к службе "Поиск ИИ Azure", код должен знать конечную точку ресурса.
Создайте переменную среды с именем AZURE_SEARCH_ENDPOINT
конечной точки поиска ИИ Azure. Этот URL-адрес обычно имеет формат https://<YOUR-RESOURCE-NAME>.search.windows.net/
.
Производственные рабочие нагрузки
Развертывание рабочих нагрузок включает следующие действия.
- Выберите роли RBAC, которые соответствуют принципу наименьших привилегий.
- Назначьте роли RBAC рабочему удостоверению в определенном ресурсе.
- Настройте переменные среды для ресурса.
Роли для рабочих нагрузок
Чтобы создать рабочие ресурсы, необходимо создать управляемое удостоверение , назначаемое пользователем, а затем назначить это удостоверение ресурсам с правильными ролями.
Для рабочего приложения предлагается следующая роль:
Имя роли | Артикул |
---|---|
Читатель данных индекса поиска | 1407120a-92aa-4202-b7e9-c0e197c71c8f |
Проверка подлинности для рабочих нагрузок
Используйте следующий шаблон Bicep для поиска ИИ Azure, чтобы создать ресурс и задать проверку подлинности для .identityId
Bicep требует идентификатор роли. Приведенный name
в этом фрагменте кода Bicep не является ролью Azure. Это зависит от развертывания Bicep.
// main.bicep
param environment string = 'production'
param roleGuid string = ''
module aiSearchRoleUser 'core/security/role.bicep' = {
scope: aiSearchResourceGroup
name: 'aiSearch-role-user'
params: {
principalId: (environment == 'development') ? principalId : userAssignedManagedIdentity.properties.principalId
principalType: (environment == 'development') ? 'User' : 'ServicePrincipal'
roleDefinitionId: roleGuid
}
}
Файл main.bicep
вызывает следующий универсальный код Bicep для создания любой роли. Вы можете создать несколько ролей RBAC, например одну для пользователя и другую для рабочей среды. Это позволяет включить среды разработки и рабочей среды в одном развертывании Bicep.
// core/security/role.bicep
metadata description = 'Creates a role assignment for an identity.'
param principalId string // passed in from main.bicep
@allowed([
'Device'
'ForeignGroup'
'Group'
'ServicePrincipal'
'User'
])
param principalType string = 'ServicePrincipal'
param roleDefinitionId string // Role ID
resource role 'Microsoft.Authorization/roleAssignments@2022-04-01' = {
name: guid(subscription().id, resourceGroup().id, principalId, roleDefinitionId)
properties: {
principalId: principalId
principalType: principalType
roleDefinitionId: resourceId('Microsoft.Authorization/roleDefinitions', roleDefinitionId)
}
}
Настройка переменных среды для рабочих нагрузок
Чтобы подключиться к службе поиска ИИ Azure, код должен знать конечную точку ресурса и идентификатор управляемого удостоверения.
Создайте переменные среды для развернутого и бессерверного ресурса поиска ИИ Azure:
AZURE_SEARCH_ENDPOINT
: этот URL-адрес является точкой доступа для ресурса поиска ИИ Azure. Этот URL-адрес обычно имеет форматhttps://<YOUR-RESOURCE-NAME>.search.windows.net/
.AZURE_CLIENT_ID
: это удостоверение для проверки подлинности как.