Připojení aplikace k Azure AI Vyhledávač pomocí identit

Note

Azure AI Vyhledávač je k dispozici prostřednictvím portálu Azure, rozhraní REST API a Sady Azure SDK. Podporuje také Foundry IQ, spravovanou znalostní vrstvu, která transformuje podnikový obsah na opakovaně použitelné znalostní báze s podporou oprávnění pro agenty na portálu Microsoft Foundry.

V kódu aplikace můžete nastavit připojení bez klíčů na Azure AI Vyhledávač, které k ověřování a autorizaci používá Microsoft Entra ID a role. Žádosti aplikací na většinu Azure služeb musí být ověřeny pomocí klíčů nebo bez klíčů připojení. 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í.

Tento článek vysvětluje, jak se používá DefaultAzureCredential v kódu aplikace.

Pokud chcete do kódu implementovat bezklíčová připojení, postupujte takto:

  • Povolení přístupu na základě role ve vyhledávací službě
  • Podle potřeby nastavte proměnné prostředí.
  • Pomocí typu přihlašovacích údajů knihovny identit Azure vytvořte objekt klienta Azure AI Vyhledávač.

Požadavky

Instalace klientské knihovny Azure Identity

Pokud chcete použít bezklíčový přístup, aktualizujte kód s povoleným vyhledáváním AI pomocí klientské knihovny Azure Identity.

Nainstalujte klientskou knihovnu Azure Identity pro .NET a klientskou knihovnu Azure Search Documents:

dotnet add package Azure.Identity
dotnet add package Azure.Search.Documents

Aktualizace zdrojového kódu tak, aby používal DefaultAzureCredential

Knihovna identit Azure identity DefaultAzureCredential 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 pro .NET najdete v tématu Azure Klientská knihovna identit 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);

Reference:SearchClient, SearchIndexClient, DefaultAzureCredential

Ověření připojení

Po nastavení klienta ověřte připojení spuštěním jednoduché operace. Následující příklad uvádí indexy ve vyhledávací službě:

// List indexes to verify connection
var indexes = searchIndexClient.GetIndexNames();
foreach (var name in indexes)
{
    Console.WriteLine(name);
}

Úspěšné připojení vytiskne názvy indexů (nebo prázdný seznam, pokud neexistují žádné indexy). Pokud se zobrazí chyba ověřování, ověřte, že je povolený přístup na základě role a že vaše identita má požadovaná přiřazení rolí.

Výchozí autorita je Azure Public Cloud. Vlastní hodnoty audience pro suverénní nebo specializované cloudy zahrnují:

  • https://search.azure.us pro Azure Government
  • https://search.azure.cn pro Azure provozovaný společností 21Vianet
  • https://search.microsoftazure.de pro Azure (Německo)

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 Azure identita ú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 údajů do indexu vyhledávání, načtení a dotazování se na index a vyhledání ze znalostní báze

Najděte svou osobní identitu pomocí jednoho z následujících nástrojů. Tuto identitu použijte jako <identity-id> hodnotu.

Zástupné symboly <role-name>, <identity-id>, <subscription-id>, a <resource-group-name> nahraďte skutečnými hodnotami v následujících příkazech.

  1. Přihlaste se k Azure CLI.

    az login
    

    Otevře se okno prohlížeče pro ověřování. Po úspěšném přihlášení se v terminálu zobrazí informace o vašem předplatném.

  2. Získejte svou osobní identitu.

    az ad signed-in-user show \
        --query id -o tsv
    

    Příkaz vrátí ID objektu uživatele (GUID). Uložte tuto hodnotu pro další krok.

  3. Přiřaďte roli řízení přístupu na základě role (RBAC) identitě respektive skupiny zdrojů.

    az role assignment create \
        --role "<role-name>" \
        --assignee "<identity-id>" \
        --scope "/subscriptions/<subscription-id>/resourceGroups/<resource-group-name>"
    

    Úspěšné přiřazení vrátí objekt JSON s podrobnostmi o přiřazení role.

Ověřování pro lokální vývoj

K ověřování Azure identity použijte nástroj v místním vývojovém prostředí. Po ověření DefaultAzureCredential instance ve zdrojovém kódu vyhledá a použije vaši identitu pro účely 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 k Azure AI Vyhledávač, je třeba, aby váš kód znal koncový bod prostředku.

Vytvořte proměnnou prostředí s názvem AZURE_SEARCH_ENDPOINT pro koncový bod Azure AI Vyhledávač. 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áš zdroj.

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 identifikační číslo
Čtečka dat vyhledávacího indexu 1407120a-92aa-4202-b7e9-c0e197c71c8f

Ověřování pro produkční úlohy

Pomocí následující šablony služby Azure AI Vyhledávač Bicep vytvořte prostředek a nastavte ověřování pro identityId. Pro Bicep je nutné ID role. name zobrazený v tomto fragmentu kódu Bicep není rolí 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ý Bicep kód pro vytváření rolí. 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í aktivovat jak vývojová, tak produkční prostředí v rámci stejného nasazení pomocí 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 k Azure AI Vyhledávač, váš kód musí znát koncový bod prostředku a ID spravované identity.

Vytvořte proměnné prostředí pro nasazené prostředí Azure AI Vyhledávač bez použití klíčů.

  • AZURE_SEARCH_ENDPOINT: Tato adresa URL je přístupovým bodem vašeho prostředku Azure AI Vyhledávač. Tato adresa URL má obecně formát https://<YOUR-RESOURCE-NAME>.search.windows.net/.
  • AZURE_CLIENT_ID: Toto je identita, pod kterou se má ověřit.

Řešení běžných chyb

Error Příčina Solution
AuthenticationFailedException Chybějící nebo neplatné přihlašovací údaje Ujistěte se, že jste přihlášení pomocí az login rozhraní příkazového řádku (CLI) nebo Connect-AzAccount (PowerShellu). Ověřte, že váš účet Azure má přístup k předplatnému.
403 Forbidden Identita nemá požadovanou roli Přiřaďte odpovídající roli (Čtenář dat indexu vyhledávání pro dotazy, Přispěvatel dat indexu vyhledávání pro indexování). Může trvat až 10 minut, než se přiřazení rolí projeví.
401 Unauthorized Řízení přístupu na základě role není povoleno ve vyhledávací službě. Na portálu Azure v části Settings>Klíče> Řízení přístupu na základě role povolte přístup na základě role.
ResourceNotFoundException Neplatný název koncového bodu nebo indexu Ověřte, že proměnná prostředí AZURE_SEARCH_ENDPOINT odpovídá zadané adrese URL vaší vyhledávací služby (formát: https://<service-name>.search.windows.net).
CredentialUnavailableException Nebyly nalezeny žádné platné přihlašovací údaje. DefaultAzureCredential zkouší více metod ověřování. Ujistěte se, že je nakonfigurovaná aspoň jedna (Azure CLI, Visual Studio, proměnné prostředí).