Anslut en söktjänst till andra Azure-resurser med hjälp av en hanterad identitet

Du kan konfigurera en Azure AI-tjänsten Search för att ansluta till andra Azure-resurser med hjälp av en systemtilldelad eller användartilldelad hanterad identitet och en Azure-rolltilldelning. Hanterade identiteter och rolltilldelningar eliminerar behovet av att skicka hemligheter och autentiseringsuppgifter i en anslutningssträng eller kod.

Förutsättningar

  • En söktjänst på basic-nivån eller senare.

  • En Azure-resurs som accepterar inkommande begäranden från en Microsoft Entra-inloggning som har en giltig rolltilldelning.

Stödda scenarier

Azure AI Search kan använda en systemtilldelad eller användartilldelad hanterad identitet vid utgående anslutningar till Azure-resurser. En systemhanterad identitet anges när en anslutningssträng är det unika resurs-ID:t för en Microsoft Entra-ID-medveten tjänst eller ett program. En användartilldelad hanterad identitet anges via en identitetsegenskap.

En söktjänst använder Azure Storage som en indexerares datakälla och som datamottagare för felsökningssessioner, cachelagring av berikning och kunskapslager. För sökfunktioner som skrivs tillbaka till lagringen behöver den hanterade identiteten en rolltilldelning för deltagare enligt beskrivningen i avsnittet "Tilldela en roll" .

Scenario Systemhanterad identitet Användartilldelad hanterad identitet (förhandsversion)
Indexerareanslutningar till Azure-datakällor somstöds 1,3 Ja Ja
Azure Key Vault för kundhanterade nycklar Ja Ja
Felsökningssessioner (finns i Azure Storage)1 Ja Nej
Berikningscache (finns i Azure Storage)1,2 Ja Ja
Knowledge Store (finns i Azure Storage)1 Ja Ja
Anpassade kunskaper (som finns i Azure Functions eller motsvarande) Ja Ja
Inbäddningsfärdighet för Azure OpenAI Ja Ja
Azure OpenAI-vektoriserare Ja Ja

1 För anslutning mellan sökning och lagring medför nätverkssäkerhetskonfigurationen begränsningar för vilken typ av hanterad identitet du kan använda. Endast en systemhanterad identitet kan användas för en anslutning till lagring i samma region via undantaget för betrodda tjänster eller resursinstansregeln. Mer information finns i Åtkomst till ett nätverksskyddat lagringskonto .

2 En metod för att ange en berikningscache finns i guiden Importera data. För närvarande accepterar inte guiden en hanterad identitet anslutningssträng för berikningscache. När guiden är klar kan du dock uppdatera anslutningssträng i indexerarens JSON-definition för att ange antingen ett system eller en användartilldelad hanterad identitet och sedan köra indexeraren igen.

3 Observera att inaktivering av nycklar i Azure Storage-kontot för närvarande inte stöds för Azure Table som används som datakälla. Även om hanterad identitet används för att inte uttryckligen tillhandahålla lagringsnycklarna använder AI-söktjänsten fortfarande nycklarna för den här implementeringen.

Skapa en systemhanterad identitet

När en systemtilldelad hanterad identitet är aktiverad skapar Azure en identitet för söktjänsten som kan användas för att autentisera till andra Azure-tjänster inom samma klientorganisation och prenumeration. Du kan sedan använda den här identiteten i rollbaserade Azure-åtkomstkontrolltilldelningar (Azure RBAC) som tillåter åtkomst till data under indexering.

En systemtilldelad hanterad identitet är unik för din söktjänst och bunden till tjänsten under dess livslängd.

  1. Logga in på Azure-portalen och leta reda på söktjänsten.

  2. Under Inställningar väljer du Identitet.

  3. På fliken Systemtilldelat går du till Status och väljer .

  4. Välj Spara.

    Skärmbild av identitetssidan i Azure-portalen.

    När du har sparat visas en objektidentifierare som har tilldelats söktjänsten.

    Skärmbild av en systemidentitetsobjektidentifierare.

Skapa en användartilldelad hanterad identitet (förhandsversion)

En användartilldelad hanterad identitet är en resurs i Azure. Det är användbart om du behöver mer kornighet i rolltilldelningar eftersom du kan skapa separata identiteter för olika program och scenarier.

Viktigt!

Den här funktionen är i offentlig förhandsversion under kompletterande användningsvillkor. Användartilldelade hanterade identiteter stöds för närvarande inte för anslutningar till ett nätverksskyddat lagringskonto. Sökbegäran kräver för närvarande en offentlig IP-adress.

  1. Logga in på Azure-portalen

  2. Välj + Skapa en resurs.

  3. I sökfältet "tjänsten Search s and marketplace" söker du efter "Användartilldelad hanterad identitet" och väljer sedan Skapa.

    Skärmbild av panelen för användartilldelad hanterad identitet på Azure Marketplace.

  4. Välj prenumeration, resursgrupp och region. Ge identiteten ett beskrivande namn.

  5. Välj Skapa och vänta tills resursen har distribuerats klart.

    I nästa steg tilldelar du den användartilldelade hanterade identiteten till söktjänsten.

  6. Välj Identitet under Inställningar på söktjänstsidan.

  7. På fliken Användartilldelade väljer du Lägg till.

  8. Välj prenumerationen och välj sedan den användartilldelade hanterade resursen som du skapade i föregående steg.

Tillåt brandväggsåtkomst

Om din Azure-resurs finns bakom en brandvägg kontrollerar du att det finns en inkommande regel som tar emot begäranden från din söktjänst.

Tilldela en roll

En hanterad identitet måste paras ihop med en Azure-roll som bestämmer behörigheter för Azure-resursen.

  • Dataläsarbehörigheter krävs för indexerarens dataanslutningar och för åtkomst till en kundhanterad nyckel i Azure Key Vault.

  • Deltagarbehörigheter (skrivbehörigheter) krävs för AI-berikningsfunktioner som använder Azure Storage för att hantera felsökningssessionsdata, cachelagring av berikning och långsiktig innehållslagring i ett kunskapslager.

Följande steg gäller för Azure Storage. Om din resurs är Azure Cosmos DB eller Azure SQL är stegen liknande.

  1. Logga in på Azure-portalen och leta reda på din Azure-resurs som söktjänsten måste ha åtkomst till.

  2. I Azure Storage väljer du Åtkomstkontroll (AIM) i det vänstra navigeringsfönstret.

  3. Välj Lägg till rolltilldelning.

  4. På sidan Roll väljer du de roller som behövs för söktjänsten:

    Uppgift Rolltilldelning
    Blobindexering med hjälp av en indexerare Lägg till Storage Blob Data Reader
    ADLS Gen2-indexering med hjälp av en indexerare Lägg till Storage Blob Data Reader
    Tabellindexering med hjälp av en indexerare Lägg till läsare och dataåtkomst
    Filindexering med hjälp av en indexerare Lägg till läsare och dataåtkomst
    Skriva till ett kunskapslager Lägg till Storage Blob DataContributor för objekt- och filprojektioner samt Läsare och Dataåtkomst för tabellprojektioner.
    Skriva till en berikningscache Lägg till Storage Blob Data-deltagare
    Spara sessionstillstånd för felsökning Lägg till Storage Blob Data-deltagare
    Bädda in data (vektorisera) med inbäddningsmodeller för Azure OpenAI Lägga till Cognitive Services OpenAI-användare
  5. På sidan Medlemmar väljer du Hanterad identitet.

  6. Välj medlemmar. På sidan Välj hanterad identitet väljer du din prenumeration och filtrerar sedan efter tjänsttyp och väljer sedan tjänsten. Endast de tjänster som har en hanterad identitet är tillgängliga att välja.

    Skärmbild av fönstret Välj hanterad identitet i guiden rolltilldelning.

  7. Välj Granska + tilldela.

Anslut ionssträngsexempel

När en hanterad identitet har definierats för söktjänsten och fått en rolltilldelning kan utgående anslutningar ändras för att använda det unika resurs-ID:t för den andra Azure-resursen. Här följer några exempel på anslutningssträng för olika scenarier.

Blobdatakälla (system):

En indexerares datakälla innehåller en egenskap för "autentiseringsuppgifter" som avgör hur anslutningen görs till datakällan. I följande exempel visas en anslutningssträng som anger det unika resurs-ID:t för ett lagringskonto. Microsoft Entra-ID autentiserar begäran med hjälp av söktjänstens systemhanterade identitet. Observera att anslutningssträng inte innehåller någon container. I en datakälladefinition anges ett containernamn i egenskapen "container" (visas inte), inte anslutningssträng.

"credentials": {
    "connectionString": "ResourceId=/subscriptions/{subscription-ID}/resourceGroups/{resource-group-name}/providers/Microsoft.Storage/storageAccounts/{storage-account-name};"
    }

Blobdatakälla (användare):

En sökbegäran till Azure Storage kan också göras under en användartilldelad hanterad identitet, för närvarande i förhandsversion. Användaridentiteten för söktjänsten anges i egenskapen "identitet". Du kan använda antingen portalen eller REST API preview version 2021-04-30-Preview för att ange identiteten.

"credentials": {
    "connectionString": "ResourceId=/subscriptions/{subscription-ID}/resourceGroups/{resource-group-name}/providers/Microsoft.Storage/storageAccounts/{storage-account-name};"
    },
  . . .
"identity": {
    "@odata.type": "#Microsoft.Azure.Search.DataUserAssignedIdentity",
    "userAssignedIdentity": "/subscriptions/{subscription-ID}/resourceGroups/{resource-group-name}/providers/Microsoft.ManagedIdentity/userAssignedIdentities/{user-assigned-managed-identity-name}"
  }

Kunskapslager:

En definition för kunskapslager innehåller en anslutningssträng till Azure Storage. I Azure Storage skapar ett kunskapslager projektioner som blobar och tabeller. Anslutningssträng är det unika resurs-ID:t för ditt lagringskonto. Observera att strängen inte innehåller containrar eller tabeller i sökvägen. Dessa definieras i den inbäddade projektionsdefinitionen, inte i anslutningssträng.

"knowledgeStore": {
  "storageConnectionString": "ResourceId=/subscriptions/{subscription-ID}/resourceGroups/{resource-group-name}/providers/Microsoft.Storage/storageAccounts/storage-account-name};"
}

Berikningscache:

En indexerare skapar, använder och kommer ihåg containern som används för cachelagrade berikanden. Det är inte nödvändigt att inkludera containern i cachen anslutningssträng. Du hittar objekt-ID:t på identitetssidan för söktjänsten i portalen.

"cache": {
  "enableReprocessing": true,
  "storageConnectionString": "ResourceId=/subscriptions/{subscription-ID}/resourceGroups/{resource-group-name}/providers/Microsoft.Storage/storageAccounts/{storage-account-name};"
}

Felsökningssession:

En felsökningssession körs i portalen och tar en anslutningssträng när du startar sessionen. Du kan klistra in en sträng som liknar följande exempel.

"ResourceId=/subscriptions/{subscription-ID}/resourceGroups/{resource-group-name}/providers/Microsoft.Storage/storageAccounts/{storage-account-name}/{container-name};",

Anpassad färdighet:

En anpassad färdighet riktar sig mot slutpunkten för en Azure-funktion eller app som är värd för anpassad kod. Slutpunkten anges i den anpassade färdighetsdefinitionen. Förekomsten av "authResourceId" instruerar söktjänsten att ansluta med hjälp av en hanterad identitet och skickar program-ID:t för målfunktionen eller appen i egenskapen.

{
  "@odata.type": "#Microsoft.Skills.Custom.WebApiSkill",
  "description": "A custom skill that can identify positions of different phrases in the source text",
  "uri": "https://contoso.count-things.com",
  "authResourceId": "<Azure-AD-registered-application-ID>",
  "batchSize": 4,
  "context": "/document",
  "inputs": [ ... ],
  "outputs": [ ...]
}

Azure OpenAI-inbäddningsfärdighet och Azure OpenAI-vektoriserare:

En Azure OpenAI-inbäddningsfärdighet och vektoriserare i AI Search riktar in sig på slutpunkten för en Azure OpenAI-tjänst som är värd för en inbäddningsmodell. Slutpunkten anges i Azure OpenAI-inbäddningsfärdighetsdefinitionen och/eller i Azure OpenAI-vektoriserardefinitionen. Den systemhanterade identiteten används om den konfigureras och om "apikey" och "authIdentity" är tomma. Egenskapen "authIdentity" används endast för användartilldelade hanterade identiteter.

{
  "@odata.type": "#Microsoft.Skills.Text.AzureOpenAIEmbeddingSkill",
  "description": "Connects a deployed embedding model.",
  "resourceUri": "https://url.openai.azure.com/",
  "deploymentId": "text-embedding-ada-002",
  "inputs": [
    {
      "name": "text",
      "source": "/document/content"
    }
  ],
  "outputs": [
    {
      "name": "embedding"
    }
  ]
}
 "vectorizers": [
    {
      "name": "my_azure_open_ai_vectorizer",
      "kind": "azureOpenAI",
      "azureOpenAIParameters": {
        "resourceUri": "https://url.openai.azure.com",
        "deploymentId": "text-embedding-ada-002"
      }
    }
  ]

Se även