Anslut till Azure AI Search med hjälp av rollbaserade åtkomstkontroller

Azure tillhandahåller ett globalt rollbaserat auktoriseringssystem för åtkomstkontroll för alla tjänster som körs på plattformen. I Azure AI Search kan du använda Azure-roller för:

  • Kontrollplansåtgärder (tjänstadministrationsuppgifter via Azure Resource Manager).

  • Dataplansåtgärder, till exempel att skapa, läsa in och köra frågor mot index.

Åtkomst per användare över sökresultat (kallas ibland säkerhet på radnivå eller säkerhet på dokumentnivå) stöds inte. Som en lösning skapar du säkerhetsfilter som trimmar resultatet efter användaridentitet och tar bort dokument som beställaren inte ska ha åtkomst till.

Kommentar

En snabbkommentar om terminologi. Kontrollplan refererar till åtgärder som stöds i REST-API:et för hantering eller motsvarande klientbibliotek. Dataplanet refererar till åtgärder mot söktjänstens slutpunkt, till exempel indexering eller frågor, eller någon annan åtgärd som anges i REST API för sökning eller motsvarande klientbibliotek.

Följande roller är inbyggda. Om de här rollerna inte räcker till skapar du en anpassad roll.

Roll Plan beskrivning
Ägare Kontrollera & data Fullständig åtkomst till kontrollplanet för sökresursen, inklusive möjligheten att tilldela Azure-roller. Endast rollen Ägare kan aktivera eller inaktivera autentiseringsalternativ eller hantera roller för andra användare. Prenumerationsadministratörer är medlemmar som standard.

På dataplanet har den här rollen samma åtkomst som rollen Search Service-deltagare. Den innehåller åtkomst till alla dataplansåtgärder förutom möjligheten att fråga eller indexera dokument.
Deltagare Kontrollera & data Samma nivå av kontrollplansåtkomst som Ägare, minus möjligheten att tilldela roller eller ändra autentiseringsalternativ.

På dataplanet har den här rollen samma åtkomst som rollen Search Service-deltagare. Den innehåller åtkomst till alla dataplansåtgärder förutom möjligheten att fråga eller indexera dokument.
Läsare Kontrollera & data Läsåtkomst i hela tjänsten, inklusive sökmått, innehållsmått (förbrukad lagring, antal objekt) och objektdefinitioner av dataplansresurser (index, indexerare och så vidare). Det går dock inte att läsa API-nycklar eller läsa innehåll i index.
Söktjänstdeltagare Kontrollera & data Läs- och skrivåtkomst till objektdefinitioner (index, alias, synonymkartor, indexerare, datakällor och kompetensuppsättningar). Den här rollen är till för utvecklare som skapar objekt och för administratörer som hanterar en söktjänst och dess objekt, men utan åtkomst till indexinnehåll. Använd den här rollen för att skapa, ta bort och lista index, hämta indexdefinitioner, hämta tjänstinformation (statistik och kvoter), testa analysverktyg, skapa och hantera synonymkartor, indexerare, datakällor och kompetensuppsättningar. Se Microsoft.Search/searchServices/* för behörighetslistan.
Search Index Data Contributor Data Läs- och skrivåtkomst till innehåll i index. Den här rollen är avsedd för utvecklare eller indexägare som behöver importera, uppdatera eller köra frågor mot dokumentsamlingen för ett index. Den här rollen stöder inte skapande eller hantering av index. Som standard är den här rollen för alla index i en söktjänst. Se Bevilja åtkomst till ett enda index för att begränsa omfånget.
Dataläsare för sökindex Data Skrivskyddad åtkomst för att fråga efter sökindex. Den här rollen gäller för appar och användare som kör frågor. Den här rollen stöder inte läsåtkomst till objektdefinitioner. Du kan till exempel inte läsa en definition av sökindex eller hämta statistik för söktjänsten. Som standard är den här rollen för alla index i en söktjänst. Se Bevilja åtkomst till ett enda index för att begränsa omfånget.

Kommentar

Om du inaktiverar rollbaserad åtkomst i Azure fortsätter inbyggda roller för kontrollplanet (ägare, deltagare, läsare) att vara tillgängliga. Om du inaktiverar rollbaserad åtkomst tar du bort bara de datarelaterade behörigheter som är associerade med dessa roller. Om dataplansroller är inaktiverade motsvarar Search Service-deltagaren kontrollplansdeltagaren.

Begränsningar

  • Införandet av rollbaserad åtkomstkontroll kan öka svarstiden för vissa begäranden. Varje unik kombination av tjänstresurs (index, indexerare osv.) och tjänstens huvudnamn som används i en begäran utlöser en auktoriseringskontroll. Dessa auktoriseringskontroller kan lägga till upp till 200 millisekunder svarstid till en begäran.

  • I sällsynta fall där begäranden kommer från ett stort antal olika tjänsthuvudnamn, alla riktade mot olika tjänstresurser (index, indexerare osv.), är det möjligt att auktoriseringskontrollerna resulterar i begränsning. Begränsning skulle bara ske om hundratals unika kombinationer av söktjänstens resurs och tjänstens huvudnamn användes inom en sekund.

Konfigurera rollbaserad åtkomst för dataplan

Gäller för: Search Index Data Contributor, Search Index Data Reader, Search Service Contributor

I det här steget konfigurerar du söktjänsten för att identifiera ett auktoriseringshuvud på databegäranden som tillhandahåller en OAuth2-åtkomsttoken.

  1. Logga in på Azure-portalen och öppna söktjänstsidan.

  2. Välj Nycklar i det vänstra navigeringsfönstret.

    Skärmbild av sidan nycklar med autentiseringsalternativ.

  3. Välj ett alternativ för API-åtkomstkontroll . Vi rekommenderar båda om du vill ha flexibilitet eller om du behöver migrera appar.

    Alternativ Description
    API-nyckel (standard). Kräver en administratör eller fråga API-nycklar i begärandehuvudet för auktorisering. Inga roller används.
    Rollbaserad åtkomstkontroll Kräver medlemskap i en rolltilldelning för att slutföra uppgiften, som beskrivs i nästa steg. Det kräver också ett auktoriseringshuvud.
    Båda Begäranden är giltiga med antingen en API-nyckel eller rollbaserad åtkomstkontroll.

Ändringen träder i kraft omedelbart, men vänta några sekunder innan du testar.

Alla nätverksanrop för söktjänståtgärder och innehåll respekterar det alternativ du väljer: API-nycklar, ägartoken eller någon av dem om du väljer Båda.

När du aktiverar rollbaserad åtkomstkontroll i portalen är felläget "http401WithBearerChallenge" om auktoriseringen misslyckas.

Tilldela roller

Rolltilldelningar är kumulativa och genomgripande för alla verktyg och klientbibliotek. Du kan tilldela roller med någon av de metoder som stöds som beskrivs i dokumentationen om rollbaserad åtkomstkontroll i Azure.

Du måste vara ägare eller ha behörigheten Microsoft.Authorization/roleAssignments/write för att hantera rolltilldelningar.

Rolltilldelningar i portalen är tjänstomfattande. Om du vill bevilja behörigheter till ett enda index använder du PowerShell eller Azure CLI i stället.

  1. Logga in på Azure-portalen.

  2. Gå till söktjänsten.

  3. Välj Åtkomstkontroll (IAM) i det vänstra navigeringsfönstret.

  4. Välj + Lägg till>Lägg till rolltilldelning.

    Åtkomstkontrollsidan (IAM) med menyn Lägg till rolltilldelning öppen.

  5. Välj en tillämplig roll:

    • Ägare
    • Deltagare
    • Läsare
    • Söktjänstdeltagare
    • Search Index Data Contributor
    • Dataläsare för sökindex
  6. På fliken Medlemmar väljer du Microsoft Entra-användar- eller gruppidentiteten.

  7. På fliken Granska + tilldela väljer du Granska + tilldela för att tilldela rollen.

Testa rolltilldelningar

Använd en klient för att testa rolltilldelningar. Kom ihåg att roller är kumulativa och ärvda roller som är begränsade till prenumerationen eller resursgruppen inte kan tas bort eller nekas på resursnivå (söktjänst).

Kontrollera att du registrerar klientprogrammet med Microsoft Entra-ID och har rolltilldelningar på plats innan du testar åtkomsten.

  1. Logga in på Azure-portalen.

  2. Gå till söktjänsten.

  3. På sidan Översikt väljer du fliken Index :

    • Search Service-deltagare kan visa och skapa ett objekt, men kan inte läsa in dokument eller köra frågor mot ett index. Om du vill verifiera behörigheter skapar du ett sökindex.

    • Search Index Data Contributors kan läsa in och fråga dokument. Om du vill verifiera behörigheter använder du Sökutforskaren för att fråga dokument. Det finns inget alternativ för att läsa in dokument i portalen utanför guiden Importera data. Eftersom guiden också skapar objekt behöver du Search Service-deltagare, plus Search Index Data Contributor.

    • Search Index Data Readers kan köra frågor mot indexet. Om du vill verifiera behörigheter använder du Sökutforskaren. Du bör kunna skicka frågor och visa resultat, men du bör inte kunna visa indexdefinitionen.

Testa som aktuell användare

Om du redan är deltagare eller ägare av söktjänsten kan du presentera en ägartoken för din användaridentitet för autentisering till Azure AI Search.

  1. Hämta en ägartoken för den aktuella användaren med hjälp av Azure CLI:

    az account get-access-token --scope https://search.azure.com/.default
    

    Eller genom att använda PowerShell:

    Get-AzAccessToken -ResourceUrl https://search.azure.com
    
  2. I en ny textfil i Visual Studio Code klistrar du in följande variabler:

    @baseUrl = PASTE-YOUR-SEARCH-SERVICE-URL-HERE
    @index-name = PASTE-YOUR-INDEX-NAME-HERE
    @token = PASTE-YOUR-TOKEN-HERE
    
  3. Klistra in och skicka sedan en begäran för att bekräfta åtkomsten. Här är en som frågar indexet hotels-quickstart

    POST https://{{baseUrl}}/indexes/{{index-name}}/docs/search?api-version=2023-11-01 HTTP/1.1
      Content-type: application/json
      Authorization: Bearer {{token}}
    
        {
             "queryType": "simple",
             "search": "motel",
             "filter": "",
             "select": "HotelName,Description,Category,Tags",
             "count": true
         }
    

Bevilja åtkomst till ett enda index

I vissa scenarier kanske du vill begränsa ett programs åtkomst till en enskild resurs, till exempel ett index.

Portalen stöder för närvarande inte rolltilldelningar på den här detaljnivån, men det kan göras med PowerShell eller Azure CLI.

I PowerShell använder du New-AzRoleAssignment, anger Azure-användaren eller gruppnamnet och tilldelningens omfattning.

  1. Läs in modulerna Azure och AzureAD och anslut till ditt Azure-konto:

    Import-Module -Name Az
    Import-Module -Name AzureAD
    Connect-AzAccount
    
  2. Lägg till en rolltilldelning som är begränsad till ett enskilt index:

    New-AzRoleAssignment -ObjectId <objectId> `
        -RoleDefinitionName "Search Index Data Contributor" `
        -Scope  "/subscriptions/<subscription>/resourceGroups/<resource-group>/providers/Microsoft.Search/searchServices/<search-service>/indexes/<index-name>"
    

Skapa en anpassad roll

Om inbyggda roller inte ger rätt kombination av behörigheter kan du skapa en anpassad roll för att stödja de åtgärder du behöver

Det här exemplet klonar Search Index Data Reader och lägger sedan till möjligheten att lista index efter namn. Normalt betraktas en lista över index i en söktjänst som en administrativ rättighet.

De här stegen härleds från Skapa eller uppdatera anpassade Azure-roller med hjälp av Azure-portalen. Kloning från en befintlig roll stöds på en söktjänstsida.

De här stegen skapar en anpassad roll som utökar sökfrågebehörigheten till att inkludera listindex efter namn. Vanligtvis betraktas listning av index som en administratörsfunktion.

  1. Gå till söktjänsten i Azure-portalen.

  2. I det vänstra navigeringsfönstret väljer du Åtkomstkontroll (IAM).

  3. I åtgärdsfältet väljer du Roller.

  4. Högerklicka på Sök indexdataläsare (eller en annan roll) och välj Klona för att öppna guiden Skapa en anpassad roll .

  5. På fliken Grundläggande anger du ett namn för den anpassade rollen, till exempel "Sök indexdatautforskaren" och väljer sedan Nästa.

  6. På fliken Behörigheter väljer du Lägg till behörighet.

  7. På fliken Lägg till behörigheter söker du efter och väljer sedan panelen Microsoft Search .

  8. Ange behörigheter för din anpassade roll. Överst på sidan använder du standardalternativet Åtgärder :

    • Under Microsoft.Search/operations (Microsoft.Search/operations) väljer du Läs : Lista alla tillgängliga åtgärder.
    • Under Microsoft.Search/searchServices/index väljer du Läs: Läs index.
  9. På samma sida växlar du till Dataåtgärder och under Microsoft.Search/searchServices/index/documents väljer du Läs : Läs dokument.

    JSON-definitionen ser ut som i följande exempel:

    {
     "properties": {
         "roleName": "search index data explorer",
         "description": "",
         "assignableScopes": [
             "/subscriptions/0000000000000000000000000000000/resourceGroups/free-search-svc/providers/Microsoft.Search/searchServices/demo-search-svc"
         ],
         "permissions": [
             {
                 "actions": [
                     "Microsoft.Search/operations/read",
                     "Microsoft.Search/searchServices/indexes/read"
                 ],
                 "notActions": [],
                 "dataActions": [
                     "Microsoft.Search/searchServices/indexes/documents/read"
                 ],
                 "notDataActions": []
             }
         ]
       }
     }
    
  10. Välj Granska + skapa för att skapa rollen. Nu kan du tilldela användare och grupper till rollen.

Inaktivera API-nyckelautentisering

Nyckelåtkomst, eller lokal autentisering, kan inaktiveras för din tjänst om du använder rollen Search Service-deltagare, Search Index Data Contributor och Search Index Data Reader och Microsoft Entra-autentisering. Om du inaktiverar API-nycklar nekas söktjänsten alla datarelaterade begäranden som skickar en API-nyckel i huvudet.

Kommentar

Administratörs-API-nycklar kan bara inaktiveras, inte tas bort. Fråge-API-nycklar kan tas bort.

Ägar- eller deltagarbehörigheter krävs för att inaktivera funktioner.

Om du vill inaktivera nyckelbaserad autentisering använder du Azure-portalen eller REST-API:et för hantering.

  1. Gå till söktjänsten i Azure-portalen.

  2. I det vänstra navigeringsfönstret väljer du Nycklar.

  3. Välj Rollbaserad åtkomstkontroll.

Ändringen träder i kraft omedelbart, men vänta några sekunder innan du testar. Förutsatt att du har behörighet att tilldela roller som medlem i Ägare, tjänstadministratör eller medadministratör kan du använda portalfunktioner för att testa rollbaserad åtkomst.

Villkorlig åtkomst

Vi rekommenderar villkorsstyrd åtkomst i Microsoft Entra om du behöver tillämpa organisationsprinciper, till exempel multifaktorautentisering.

Följ dessa steg för att aktivera en princip för villkorlig åtkomst för Azure AI Search:

  1. Logga in på Azure-portalen.

  2. Sök efter villkorsstyrd åtkomst i Microsoft Entra.

  3. Välj Principer.

  4. Välj Ny princip.

  5. I avsnittet Molnappar eller åtgärder i principen lägger du till Azure AI Search som en molnapp beroende på hur du vill konfigurera din princip.

  6. Uppdatera de återstående parametrarna för principen. Ange till exempel vilka användare och grupper som den här principen gäller för.

  7. Spara principen.

Viktigt!

Om din söktjänst har tilldelats en hanterad identitet visas den specifika söktjänsten som en molnapp som kan inkluderas eller exkluderas som en del av principen för villkorsstyrd åtkomst. Principer för villkorlig åtkomst kan inte tillämpas på en specifik söktjänst. Kontrollera i stället att du väljer den allmänna Azure AI Search-molnappen .

Felsöka problem med rollbaserad åtkomstkontroll

När du utvecklar program som använder rollbaserad åtkomstkontroll för autentisering kan några vanliga problem uppstå:

  • Om auktoriseringstoken kom från en hanterad identitet och lämpliga behörigheter nyligen har tilldelats kan det ta flera timmar innan dessa behörighetstilldelningar börjar gälla.
  • Standardkonfigurationen för en söktjänst är endast nyckelbaserad autentisering. Om du inte ändrade standardnyckelinställningen till Både eller Rollbaserad åtkomstkontroll nekas alla begäranden som använder rollbaserad autentisering automatiskt oavsett underliggande behörigheter.