Az alkalmazást csatlakoztassa az Azure AI Kereséshez identitások használatával

Note

Azure AI Keresés a Azure portálon, REST API-kon és Azure SDK-k keresztül érhető el. Emellett a Foundry IQ-t is támogatja, amely a vállalati tartalmakat újrafelhasználható, engedélytudatos tudásbázisokká alakítja át az Microsoft Foundry portálon található ügynökök számára.

Az alkalmazáskódban beállíthat egy kulcs nélküli kapcsolatot Azure AI Keresés, amely Microsoft Entra ID és szerepköröket használ hitelesítéshez és engedélyezéshez. A legtöbb Azure szolgáltatáshoz irányuló alkalmazáskéréseket kulcsokkal vagy kulcs nélküli kapcsolatokkal kell hitelesíteni. A fejlesztőknek szorgalmasnak kell lenniük ahhoz, hogy a kulcsok ne legyenek biztonságos helyen elérhetővé. Bárki, aki hozzáfér a kulcshoz, hitelesítheti magát a szolgáltatásban. A kulcs nélküli hitelesítés jobb felügyeleti és biztonsági előnyöket biztosít a fiókkulcson keresztül, mivel nincs tárolandó kulcs (vagy kapcsolati karakterlánc).

Ez a cikk bemutatja, hogyan használható DefaultAzureCredential az alkalmazáskódban.

A kulcs nélküli kapcsolatok kódban való implementálásához kövesse az alábbi lépéseket:

  • Szerepköralapú hozzáférés engedélyezése a keresési szolgáltatásban
  • Szükség szerint állítsa be a környezeti változókat.
  • Azure Identitástár hitelesítő adattípusának használatával hozzon létre egy Azure AI Keresés ügyfélobjektumot.

Előfeltételek

  • Azure AI Keresés, bármely régió, de számlázható szintnek kell lennie (alapszintű vagy magasabb).

  • A szerepköralapú hozzáférés engedélyezve van a keresési szolgáltatásban.

  • Szerepkör-hozzárendelések Azure AI Keresés. Rendelje hozzá ezeket a szerepköröket az identitásához:

    • Keresési szolgáltatás közreműködője és keresési index adatszolgáltatója helyi fejlesztéshez (teljes hozzáférés)
    • Keresési index adatolvasó éles, csak olvasható lekérdezésekhez

    Részletes útmutatásért lásd: Szerepkörök hozzárendelése a fejlesztéshez.

Azure Identity-ügyfélkódtár telepítése

Kulcs nélküli megközelítés használatához frissítse az AI Search-kompatibilis kódot az Azure Identity ügyfélkódtárával.

Telepítse a .NET Azure Identity klienskönyvtárat és az Azure Search Documents klienskönyvtárat:

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

Forráskód frissítése a DefaultAzureCredential használatára

Az Azure Identitástár DefaultAzureCredential lehetővé teszi ugyanazt a kódot a helyi fejlesztési környezetben és a Azure felhőben. Hozzon létre egyetlen hitelesítő adatot, és szükség szerint használja újra a hitelesítő adat példányát a token-gyorsítótárazás előnyeinek kihasználásához.

További információért a használatáról .NET-ben, tekintse meg az Azure Identity ügyfélkönyvtárát .NET-hez.

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);

Referencia:SearchClient, SearchIndexClient, DefaultAzureCredential

A kapcsolat ellenőrzése

Az ügyfél beállítása után egy egyszerű művelet futtatásával ellenőrizze a kapcsolatot. Az alábbi példa a keresési szolgáltatás indexeit sorolja fel:

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

A sikeres kapcsolat kinyomtatja az indexek nevét (vagy üres listát, ha nincsenek indexek). Ha hitelesítési hibát kap, ellenőrizze, hogy engedélyezve van-e a szerepköralapú hozzáférés, és hogy az identitása rendelkezik-e a szükséges szerepkör-hozzárendelésekkel.

Az alapértelmezett szolgáltató a nyilvános felhő Azure. A szuverén vagy specializált felhők egyéni audience értékei a következők:

  • https://search.azure.us az Azure Government számára
  • https://search.azure.cn a 21Vianet által üzemeltetett Azure
  • https://search.microsoftazure.de Németországban lévő Azure számára

Helyi fejlesztés

A szerepköröket használó helyi fejlesztés az alábbi lépéseket tartalmazza:

  • Rendelje hozzá személyes identitását az adott erőforrás RBAC-szerepköreihez.
  • A Azure hitelesítéséhez használjon olyan eszközt, mint a Azure CLI vagy a Azure PowerShell.
  • Környezeti változók létrehozása az erőforráshoz.

Szerepkörök helyi fejlesztéshez

Helyi fejlesztőként az Azure identitásának teljes körű vezérlésre van szüksége az adatsík-műveletek felett. Ezek a javasolt szerepkörök:

  • Keresési szolgáltatás közreműködője, objektumok létrehozása és kezelése
  • Indexadat-közreműködő keresése, index betöltése és lekérdezése, valamint tudásbázisból való lekérés

Keresse meg a személyes identitását az alábbi eszközök egyikével. Használja ezt az identitást <identity-id> értékként.

Cserélje le a helyőrzőket <role-name>, <identity-id>, <subscription-id> és <resource-group-name> a saját tényleges értékeire az alábbi parancsokban.

  1. Jelentkezzen be az Azure CLI-be.

    az login
    

    Megnyílik egy böngészőablak a hitelesítéshez. A sikeres bejelentkezés után a terminál megjeleníti az előfizetés adatait.

  2. Szerezze be a személyes személyazonosságát.

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

    A parancs a felhasználói objektum azonosítóját (GUID) adja vissza. Mentse ezt az értéket a következő lépéshez.

  3. Rendelje hozzá a szerepköralapú hozzáférés-vezérlési (RBAC) szerepkört az erőforráscsoport identitásához.

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

    A sikeres hozzárendelés egy JSON-objektumot ad vissza a szerepkör-hozzárendelés részleteivel.

Hitelesítés helyi fejlesztéshez

Az Azure identitás hitelesítéséhez használjon eszközt a helyi fejlesztési környezetben. A hitelesítés után a DefaultAzureCredential példány a forráskódban megtalálja és a hitelesítéshez használja az Ön identitását.

Válasszon egy eszközt a hitelesítéshez a helyi fejlesztés során.

Környezeti változók konfigurálása helyi fejlesztéshez

A Azure AI Keresés való csatlakozáshoz a kódnak ismernie kell az erőforrásvégpontot.

Hozzon létre egy AZURE_SEARCH_ENDPOINT nevű környezeti változót a Azure AI Keresés végponthoz. Ennek az URL-címnek általában a formátuma https://<YOUR-RESOURCE-NAME>.search.windows.net/van.

Üzemi munkaterhelések

Az éles számítási feladatok üzembe helyezése az alábbi lépéseket tartalmazza:

  • Válassza ki azokat az RBAC-szerepköröket, amelyek megfelelnek a minimális jogosultság elvének.
  • RBAC-szerepkörök hozzárendelése az adott erőforrás éles identitásához.
  • Környezeti változók beállítása az erőforráshoz.

Szerepkörök termelési munkaterhelésekhez

Az éles erőforrások létrehozásához először létre kell hoznia egy felhasználó által hozzárendelt felügyelt identitást, majd hozzá kell rendelnie ezt az identitást az erőforrásokhoz a megfelelő szerepkörökkel.

Éles alkalmazás esetén a következő szerepkör javasolt:

Szerepkör neve Azonosító
Keresési index adatolvasója 1407120a-92aa-4202-b7e9-c0e197c71c8f

Hitelesítés üzemelő környezethez tartozó feladatokhoz

Az alábbi Azure AI Keresés Bicep sablon használatával hozza létre az erőforrást, és állítsa be a hitelesítést a identityId. Bicep a szerepkör-azonosítót igényli. Az ebben a Bicep kódrészletben látható name nem az Azure szerepkör, hanem a Bicep üzembe helyezésre jellemző.

// 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
    }
}

A main.bicep fájl a következő általános Bicep kódot hívja meg bármilyen szerepkör létrehozására. Több RBAC-szerepet is létrehozhat, például egyet a felhasználónak és egy másikat pedig a termelési környezetnek. Ez lehetővé teszi, hogy a fejlesztési és éles környezeteket egyazon Bicep telepítésen belül engedélyezd.

// 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)
    }
}

Környezeti változók konfigurálása éles számítási feladatokhoz

A Azure AI Keresés való csatlakozáshoz a kódnak ismernie kell az erőforrásvégpontot és a felügyelt identitás azonosítóját.

Környezeti változók létrehozása az üzembe helyezett és kulcs nélküli Azure AI Keresés erőforráshoz:

  • AZURE_SEARCH_ENDPOINT: Ez az URL-cím a Azure AI Keresés erőforrás hozzáférési pontja. Ennek az URL-címnek általában a formátuma https://<YOUR-RESOURCE-NAME>.search.windows.net/van.
  • AZURE_CLIENT_ID: Ez a hitelesítéshez szükséges identitás.

Gyakori hibák elhárítása

Error Oka Solution
AuthenticationFailedException Hiányzó vagy érvénytelen hitelesítő adatok Győződjön meg arról, hogy bejelentkezett a az login (CLI) vagy Connect-AzAccount a (PowerShell) szolgáltatásba. Ellenőrizze, hogy Azure fiókja rendelkezik-e hozzáféréssel az előfizetéshez.
403 Forbidden Az identitásból hiányzik egy szükséges szerepkör Rendelje hozzá a megfelelő szerepkört (keresési index adatolvasója lekérdezésekhez, keresési index adatszolgáltatója indexeléshez). A szerepkör-hozzárendelések propagálása akár 10 percet is igénybe vehet.
401 Unauthorized Az RBAC nincs engedélyezve a keresési szolgáltatásban Engedélyezze a szerepköralapú hozzáférést a Azure portálon a Settings>Keys>Role-alapú hozzáférés-vezérlés alatt.
ResourceNotFoundException Érvénytelen végpont vagy indexnév Ellenőrizze, hogy a AZURE_SEARCH_ENDPOINT környezeti változó megegyezik-e a keresési szolgáltatás URL-címével (formátum: https://<service-name>.search.windows.net).
CredentialUnavailableException Nem található érvényes hitelesítő adat DefaultAzureCredential több hitelesítési módszert is kipróbál. Győződjön meg arról, hogy legalább egy konfigurálva van (Azure CLI, Visual Studio, környezeti változók).