Připojení aplikace k Azure AI Search pomocí identit
V kódu aplikace můžete nastavit bezklíčové připojení ke službě Azure AI Search, které k ověřování a autorizaci používá ID a role Microsoft Entra. Žádosti aplikací na většinu služeb Azure se musí ověřovat pomocí klíčů nebo bez klíčů. Vývojáři musí být usilovní, aby klíče nikdy nezpřístupnili v nezabezpečeném umístění. Každý, kdo získá přístup ke klíči, se může ověřit ve službě. Ověřování bez klíčů nabízí lepší výhody správy a zabezpečení u klíče účtu, protože neexistuje žádný klíč (nebo připojovací řetězec) pro ukládání.
Připojení bez klíčů jsou povolená pomocí následujících kroků:
- Nakonfigurujte ověřování.
- Podle potřeby nastavte proměnné prostředí.
- K vytvoření objektu klienta Azure AI Search použijte typ přihlašovacích údajů knihovny Identit Azure.
Požadavky
U místních vývojových i produkčních úloh je potřeba provést následující kroky:
- Vytvoření prostředku vyhledávání AI
- Povolení přístupu na základě role ve vyhledávací službě
- Instalace klientské knihovny Azure Identity
Vytvoření prostředku vyhledávání AI
Než budete pokračovat v tomto článku, potřebujete k práci s prostředkem Azure AI Search. Pokud prostředek nemáte, vytvořte ho teď. Povolte řízení přístupu na základě role (RBAC) pro prostředek.
Instalace klientské knihovny Azure Identity
Pokud chcete použít přístup bez klíčů, aktualizujte kód s povolenou službou AI Search pomocí klientské knihovny azure Identity.
Nainstalujte klientskou knihovnu Azure Identity pro .NET:
dotnet add package Azure.Identity
Aktualizace zdrojového kódu tak, aby používal DefaultAzureCredential
Knihovna DefaultAzureCredential
Identit Azure umožňuje spustit stejný kód v místním vývojovém prostředí a v cloudu Azure. Vytvořte jednu přihlašovací údaje a podle potřeby znovu použijte instanci přihlašovacích údajů, abyste mohli využívat ukládání tokenů do mezipaměti.
Další informace o DefaultAzureCredential
.NET najdete v klientské knihovně Azure Identity pro .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);
Místní vývoj
Místní vývoj pomocí rolí zahrnuje tyto kroky:
- Přiřaďte svou osobní identitu k rolím RBAC pro konkrétní prostředek.
- K ověření pomocí Azure použijte nástroj, jako je Azure CLI nebo Azure PowerShell.
- Vytvořte proměnné prostředí pro váš prostředek.
Role pro místní vývoj
Jako místní vývojář potřebuje vaše identita Azure úplnou kontrolu nad operacemi roviny dat. Toto jsou navrhované role:
- Přispěvatel vyhledávací služby, vytváření a správa objektů
- Přispěvatel dat indexu vyhledávání, načtení a dotazování indexu
Najděte svou osobní identitu pomocí jednoho z následujících nástrojů. Tuto identitu použijte jako <identity-id>
hodnotu.
Přihlaste se k Azure CLI.
az login
Získejte svou osobní identitu.
az ad signed-in-user show \ --query id -o tsv
Přiřaďte roli řízení přístupu na základě role (RBAC) k identitě skupiny prostředků.
az role assignment create \ --role "<role-name>" \ --assignee "<identity-id>" \ --scope "/subscriptions/<subscription-id>/resourceGroups/<resource-group-name>"
Tam, kde je to možné, nahraďte <identity-id>
<subscription-id>
a <resource-group-name>
skutečnými hodnotami.
Ověřování pro místní vývoj
Použijte nástroj v místním vývojovém prostředí k ověřování s identitou Azure. Po ověření DefaultAzureCredential
instance ve zdrojovém kódu vyhledá a použije ověřování.
Vyberte nástroj pro ověřování během místního vývoje.
Konfigurace proměnných prostředí pro místní vývoj
Pokud se chcete připojit ke službě Azure AI Search, váš kód musí znát koncový bod prostředku.
Vytvořte proměnnou prostředí s názvem AZURE_SEARCH_ENDPOINT
pro koncový bod služby Azure AI Search. Tato adresa URL má obecně formát https://<YOUR-RESOURCE-NAME>.search.windows.net/
.
Produkční úlohy
Nasazení produkčních úloh zahrnuje tyto kroky:
- Zvolte role RBAC, které se řídí principem nejnižšího oprávnění.
- Přiřaďte role RBAC k produkční identitě pro konkrétní prostředek.
- Nastavte proměnné prostředí pro váš prostředek.
Role pro produkční úlohy
Pokud chcete vytvořit produkční prostředky, musíte vytvořit spravovanou identitu přiřazenou uživatelem a pak ji přiřadit k prostředkům se správnými rolemi.
Pro produkční aplikaci se navrhuje následující role:
Název role | ID |
---|---|
Čtečka dat indexu vyhledávání | 1407120a-92aa-4202-b7e9-c0e197c7c71c8f |
Ověřování pro produkční úlohy
Pomocí následující šablony Azure AI Search Bicep vytvořte prostředek a nastavte ověřování pro danou identityId
šablonu . Bicep vyžaduje ID role. Zobrazený name
v tomto fragmentu kódu Bicep není role Azure, je specifická pro nasazení 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
}
}
Soubor main.bicep
volá následující obecný kód Bicep, který vytvoří libovolnou roli. Máte možnost vytvořit několik rolí RBAC, jako je jeden pro uživatele a druhý pro produkční prostředí. To vám umožní povolit vývojová i produkční prostředí ve stejném nasazení 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)
}
}
Konfigurace proměnných prostředí pro produkční úlohy
Pokud se chcete připojit ke službě Azure AI Search, váš kód musí znát koncový bod prostředku a ID spravované identity.
Vytvořte proměnné prostředí pro nasazený a bezklíčový prostředek Azure AI Search:
AZURE_SEARCH_ENDPOINT
: Tato adresa URL je přístupovým bodem vašeho prostředku Azure AI Search. Tato adresa URL má obecně formáthttps://<YOUR-RESOURCE-NAME>.search.windows.net/
.AZURE_CLIENT_ID
: Jedná se o identitu, která se má ověřit jako.