Sdílet prostřednictvím


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

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.

  1. Přihlaste se k Azure CLI.

    az login
    
  2. Získejte svou osobní identitu.

    az ad signed-in-user show \
        --query id -o tsv
    
  3. 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í.

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át https://<YOUR-RESOURCE-NAME>.search.windows.net/.
  • AZURE_CLIENT_ID: Jedná se o identitu, která se má ověřit jako.