Verbinding maken naar Azure AI Search met behulp van op rollen gebaseerd toegangsbeheer van Azure (Azure RBAC)

Azure biedt een globaal op rollen gebaseerd autorisatiesysteem voor toegangsbeheer voor alle services die op het platform worden uitgevoerd. In Azure AI Search kunt u Azure-rollen gebruiken voor:

  • Besturingsvlakbewerkingen (servicebeheertaken via Azure Resource Manager).

  • Gegevensvlakbewerkingen, zoals het maken, laden en opvragen van indexen.

Toegang per gebruiker via zoekresultaten (ook wel beveiliging op rijniveau of beveiliging op documentniveau genoemd) wordt niet ondersteund. Als tijdelijke oplossing kunt u beveiligingsfilters maken die de resultaten op gebruikersidentiteit bijsnijden, waardoor documenten worden verwijderd waarvoor de aanvrager geen toegang mag hebben.

Notitie

In Azure AI Search verwijst 'besturingsvlak' naar bewerkingen die worden ondersteund in de REST API van Management of equivalente clientbibliotheken. Het gegevensvlak verwijst naar bewerkingen op basis van het eindpunt van de zoekservice, zoals indexering of query's, of een andere bewerking die is opgegeven in de Search REST API of equivalente clientbibliotheken.

De volgende rollen zijn ingebouwd. Als deze rollen onvoldoende zijn, maakt u een aangepaste rol.

Role Vliegtuig Beschrijving
Eigenaar Control & Data Volledige toegang tot het besturingsvlak van de zoekresource, inclusief de mogelijkheid om Azure-rollen toe te wijzen. Alleen de rol Eigenaar kan verificatieopties in- of uitschakelen of rollen voor andere gebruikers beheren. Abonnementsbeheerders zijn standaard leden.

Op het gegevensvlak heeft deze rol dezelfde toegang als de rol Inzender voor de zoekservice. Het bevat toegang tot alle gegevensvlakacties, behalve de mogelijkheid om documenten op te vragen of te indexeren.
Inzender Control & Data Hetzelfde niveau van toegang tot het besturingsvlak als eigenaar, minus de mogelijkheid om rollen toe te wijzen of verificatieopties te wijzigen.

Op het gegevensvlak heeft deze rol dezelfde toegang als de rol Inzender voor de zoekservice. Het bevat toegang tot alle gegevensvlakacties, behalve de mogelijkheid om documenten op te vragen of te indexeren.
Lezer Control & Data Leestoegang voor de hele service, inclusief metrische zoekgegevens, metrische gegevens over inhoud (verbruikte opslag, aantal objecten) en de objectdefinities van gegevensvlakbronnen (indexen, indexeerfuncties, enzovoort). Api-sleutels kunnen echter niet worden gelezen of inhoud in indexen worden gelezen.
Inzender voor zoekservice Control & Data Lees-schrijftoegang tot objectdefinities (indexen, synoniemen, indexeerfuncties, gegevensbronnen en vaardighedensets). Zie Microsoft.Search/searchServices/* voor de lijst met machtigingen. Deze rol heeft geen toegang tot inhoud in een index, dus geen query's of indexeringen, maar kan indexen maken, verwijderen en vermelden, indexdefinities en statistieken retourneren en analyseanalyses testen. Deze rol is bedoeld voor zoekservicebeheerders die de zoekservice en de bijbehorende objecten moeten beheren, maar zonder toegang tot inhoud.
Inzender voor zoekindexgegevens Gegevens Lees-schrijftoegang tot inhoud in alle indexen in de zoekservice. Deze rol is bedoeld voor ontwikkelaars of indexeigenaren die de documentenverzameling van een index moeten importeren, vernieuwen of er query's op moeten uitvoeren.
Zoekindexgegevenslezer Gegevens Alleen-lezentoegang tot alle zoekindexen in de zoekservice. Deze rol is bedoeld voor apps en gebruikers die query's uitvoeren.

Notitie

Als u op rollen gebaseerde toegang van Azure uitschakelt, zijn ingebouwde rollen voor het besturingsvlak (Eigenaar, Inzender, Lezer) nog steeds beschikbaar. Als u Azure RBAC uitschakelt, worden alleen de gegevensmachtigingen verwijderd die aan deze rollen zijn gekoppeld. In een scenario met uitgeschakelde RBAC is Inzender voor zoekservice gelijk aan inzender in het besturingsvlak.

Beperkingen

  • De acceptatie van op rollen gebaseerd toegangsbeheer kan de latentie van sommige aanvragen verhogen. Elke unieke combinatie van serviceresources (index, indexeerfunctie, enzovoort) en service-principal die worden gebruikt voor een aanvraag, activeert een autorisatiecontrole. Deze autorisatiecontroles kunnen maximaal 200 milliseconden van latentie toevoegen aan een aanvraag.

  • In zeldzame gevallen waarin aanvragen afkomstig zijn van een groot aantal verschillende service-principals, die allemaal gericht zijn op verschillende servicebronnen (indexen, indexeerfuncties, enzovoort), is het mogelijk dat de autorisatiecontroles leiden tot beperking. Beperking vindt alleen plaats als er binnen een seconde honderden unieke combinaties van zoekserviceresources en service-principals worden gebruikt.

Op rollen gebaseerde toegang configureren voor het gegevensvlak

Van toepassing op: Inzender voor zoekindexgegevens, Zoekindexgegevenslezer, Inzender voor zoekservice

In deze stap configureert u uw zoekservice voor het herkennen van een autorisatieheader voor gegevensaanvragen die een OAuth2-toegangstoken bieden.

  1. Meld u aan bij Azure Portal en open de zoekservicepagina.

  2. Selecteer Sleutels in het linkernavigatiedeelvenster.

    Schermopname van de pagina sleutels met verificatieopties.

  3. Kies een optie voor API-toegangsbeheer . We raden beide aan als u flexibiliteit wilt of apps wilt migreren.

    Optie Omschrijving
    API-sleutel (standaard). Vereist een beheerder of query-API-sleutels in de aanvraagheader voor autorisatie. Er worden geen rollen gebruikt.
    Op rollen gebaseerd toegangsbeheer Vereist dat u lid bent van een roltoewijzing om de taak te voltooien, zoals beschreven in de volgende stap. Er is ook een autorisatieheader vereist.
    Beide Aanvragen zijn geldig met behulp van een API-sleutel of op rollen gebaseerd toegangsbeheer.

De wijziging is onmiddellijk van kracht, maar wacht enkele seconden voordat u gaat testen.

Alle netwerkoproepen voor zoekservicebewerkingen en -inhoud respecteren de optie die u selecteert: API-sleutels, bearer-token of een van beide als u Beide selecteert.

Wanneer u op rollen gebaseerd toegangsbeheer inschakelt in de portal, is de foutmodus http401WithBearerChallenge als de autorisatie mislukt.

Rollen toewijzen

Roltoewijzingen zijn cumulatief en verspreid over alle hulpprogramma's en clientbibliotheken. U kunt rollen toewijzen met behulp van een van de ondersteunde benaderingen die worden beschreven in documentatie voor op rollen gebaseerd toegangsbeheer van Azure.

U moet eigenaar zijn of beschikken over Microsoft.Authorization/roleAssignments/write-machtigingen voor het beheren van roltoewijzingen.

Roltoewijzingen in de portal zijn servicebreed. Als u machtigingen wilt verlenen aan één index, gebruikt u In plaats daarvan PowerShell of de Azure CLI.

  1. Meld u aan bij het Azure-portaal.

  2. Navigeer naar uw zoekservice.

  3. Selecteer Toegangsbeheer (IAM) in het linkernavigatiedeelvenster.

  4. Selecteer + Toevoegen>Roltoewijzing toevoegen.

    De pagina Toegangsbeheer (IAM) met het menu Roltoewijzing toevoegen geopend.

  5. Selecteer een toepasselijke rol:

    • Eigenaar
    • Inzender
    • Lezer
    • Inzender voor zoekservice
    • Inzender voor zoekindexgegevens
    • Zoekindexgegevenslezer
  6. Selecteer op het tabblad Leden de microsoft Entra-gebruikers- of groepsidentiteit.

  7. Selecteer op het tabblad Beoordelen en toewijzen de optie Beoordelen en toewijzen om de rol toe te wijzen.

Roltoewijzingen testen

Gebruik een client om roltoewijzingen te testen. Houd er rekening mee dat rollen cumulatief en overgenomen rollen zijn die zijn afgestemd op het abonnement of de resourcegroep, niet kunnen worden verwijderd of geweigerd op het niveau van de resource (zoekservice).

Zorg ervoor dat u uw clienttoepassing registreert bij Microsoft Entra-id en roltoewijzingen hebt ingesteld voordat u de toegang test.

  1. Meld u aan bij het Azure-portaal.

  2. Navigeer naar uw zoekservice.

  3. Selecteer op de pagina Overzicht het tabblad Indexen :

    • Inzenders kunnen objecten weergeven en maken, maar kunnen geen query's uitvoeren op een index met Behulp van Search Explorer.

    • Search Index Data Readers kan Search Explorer gebruiken om een query uit te voeren op de index. U kunt elke API-versie gebruiken om te controleren op toegang. U moet query's kunnen verzenden en resultaten kunnen weergeven, maar u moet de indexdefinitie niet kunnen weergeven.

    • Inzenders voor zoekindexgegevens kunnen Nieuwe index selecteren om een nieuwe index te maken. Als u een nieuwe index opslaat, wordt schrijftoegang voor de service geverifieerd.

Testen als huidige gebruiker

Als u al een inzender of eigenaar van uw zoekservice bent, kunt u een bearer-token voor uw gebruikersidentiteit presenteren voor verificatie bij Azure AI Search.

  1. Een Bearer-token ophalen voor de huidige gebruiker met behulp van de Azure CLI:

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

    Of met behulp van PowerShell:

    Get-AzAccessToken -ResourceUrl "https://graph.microsoft.com/"
    
  2. Plak deze variabelen in een nieuw tekstbestand in Visual Studio Code:

    @baseUrl = PASTE-YOUR-SEARCH-SERVICE-URL-HERE
    @index-name = PASTE-YOUR-INDEX-NAME-HERE
    @token = PASTE-YOUR-TOKEN-HERE
    
  3. Plak in en verzend vervolgens een aanvraag om de toegang te bevestigen. Hier volgt een query op de index 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
         }
    

Toegang verlenen tot één index

In sommige scenario's wilt u de toegang van een toepassing tot één resource beperken, zoals een index.

De portal biedt momenteel geen ondersteuning voor roltoewijzingen op dit niveau van granulariteit, maar kan worden uitgevoerd met PowerShell of de Azure CLI.

Gebruik in PowerShell New-AzRoleAssignment, waarbij u de Azure-gebruikers- of groepsnaam en het bereik van de toewijzing oplevert.

  1. Laad de Azure- en AzureAD-modules en maak verbinding met uw Azure-account:

    Import-Module -Name Az
    Import-Module -Name AzureAD
    Connect-AzAccount
    
  2. Voeg een roltoewijzing toe die is afgestemd op een afzonderlijke 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>"
    

Een aangepaste rol maken

Als ingebouwde rollen niet de juiste combinatie van machtigingen bieden, kunt u een aangepaste rol maken ter ondersteuning van de bewerkingen die u nodig hebt

In dit voorbeeld wordt de zoekindexgegevenslezer gekloond en wordt vervolgens de mogelijkheid toegevoegd om indexen op naam weer te geven. Normaal gesproken wordt het weergeven van de indexen voor een zoekservice beschouwd als een beheerrecht.

Deze stappen zijn afgeleid van aangepaste Azure-rollen maken of bijwerken met behulp van Azure Portal. Klonen van een bestaande rol wordt ondersteund op een zoekservicepagina.

Met deze stappen maakt u een aangepaste rol waarmee zoekqueryrechten worden uitgebreid, zodat indexen op naam worden opgenomen. Het vermelden van indexen wordt doorgaans beschouwd als een beheerfunctie.

  1. Navigeer in Azure Portal naar uw zoekservice.

  2. Selecteer toegangsbeheer (IAM) in het linkernavigatiedeelvenster.

  3. Selecteer Rollen in de actiebalk.

  4. Klik met de rechtermuisknop op Zoekindexgegevenslezer (of een andere rol) en selecteer Klonen om de wizard Een aangepaste rol maken te openen.

  5. Geef op het tabblad Basisinformatie een naam op voor de aangepaste rol, zoals Search Index Data Explorer, en selecteer Vervolgens.

  6. Selecteer Op het tabblad Machtigingen de optie Machtiging toevoegen.

  7. Zoek op het tabblad Machtigingen toevoegen naar en selecteer vervolgens de tegel Microsoft Search .

  8. Stel de machtigingen voor uw aangepaste rol in. Boven aan de pagina gebruikt u de standaardselectie Acties :

    • Selecteer onder Microsoft.Search/operations de optie Lezen: alle beschikbare bewerkingen weergeven.
    • Selecteer Onder Microsoft.Search/searchServices/indexen de optie Lezen: Index lezen.
  9. Schakel op dezelfde pagina over naar gegevensacties en selecteer onder Microsoft.Search/searchServices/indexen/documenten de optie Lezen: Documenten lezen.

    De JSON-definitie ziet er als volgt uit:

    {
     "properties": {
         "roleName": "search index data explorer",
         "description": "",
         "assignableScopes": [
             "/subscriptions/a5b1ca8b-bab3-4c26-aebe-4cf7ec4791a0/resourceGroups/heidist-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. Selecteer Beoordelen en maken om de rol te maken. U kunt nu gebruikers en groepen toewijzen aan de rol.

VERIFICATIE van API-sleutel uitschakelen

Sleuteltoegang of lokale verificatie kan worden uitgeschakeld op uw service als u de rollen Inzender voor zoekservice, Inzender voor zoekindexgegevens en Zoekindexgegevenslezer en Microsoft Entra-verificatie gebruikt. Als u API-sleutels uitschakelt, weigert de zoekservice alle gegevensgerelateerde aanvragen die een API-sleutel doorgeven in de header.

Notitie

Beheer API-sleutels kunnen alleen worden uitgeschakeld, niet verwijderd. Query-API-sleutels kunnen worden verwijderd.

Machtigingen voor eigenaar of inzender zijn vereist om functies uit te schakelen.

Als u verificatie op basis van sleutels wilt uitschakelen, gebruikt u Azure Portal of de REST API voor Beheer.

  1. Navigeer in Azure Portal naar uw zoekservice.

  2. Selecteer Sleutels in het linkernavigatiedeelvenster.

  3. Selecteer op rollen gebaseerd toegangsbeheer.

De wijziging is onmiddellijk van kracht, maar wacht enkele seconden voordat u gaat testen. Ervan uitgaande dat u gemachtigd bent om rollen toe te wijzen als lid van eigenaar, servicebeheerder of medebeheerder, kunt u portalfuncties gebruiken om op rollen gebaseerde toegang te testen.

Voorwaardelijke toegang

Voorwaardelijke toegang is een hulpprogramma in Microsoft Entra-id dat wordt gebruikt om organisatiebeleid af te dwingen. Met behulp van beleid voor voorwaardelijke toegang kunt u de juiste toegangsbeheer toepassen wanneer dat nodig is om uw organisatie veilig te houden. Wanneer u toegang krijgt tot een Azure AI-Search-service met behulp van op rollen gebaseerd toegangsbeheer, kan voorwaardelijke toegang organisatiebeleid afdwingen.

Volg de onderstaande stappen om beleid voor voorwaardelijke toegang in te schakelen voor Azure AI Search:

  1. Meld u aan bij de Azure-portal.

  2. Zoek naar voorwaardelijke toegang van Microsoft Entra.

  3. Selecteer Beleidsregels.

  4. Selecteer + Nieuw beleid.

  5. Voeg in de sectie Cloud-apps of -acties van het beleid Azure AI Search toe als een cloud-app, afhankelijk van hoe u uw beleid wilt instellen.

  6. Werk de resterende parameters van het beleid bij. Geef bijvoorbeeld op op welke gebruikers en groepen dit beleid van toepassing is.

  7. Sla het beleid op.

Belangrijk

Als aan uw zoekservice een beheerde identiteit is toegewezen, wordt de specifieke zoekservice weergegeven als een cloud-app die kan worden opgenomen of uitgesloten als onderdeel van het beleid voor voorwaardelijke toegang. Beleid voor voorwaardelijke toegang kan niet worden afgedwongen voor een specifieke zoekservice. Zorg er in plaats daarvan voor dat u de algemene Azure AI Search-cloud-app selecteert.

Problemen met op rollen gebaseerd toegangsbeheer oplossen

Bij het ontwikkelen van toepassingen die gebruikmaken van op rollen gebaseerd toegangsbeheer voor verificatie, kunnen er enkele veelvoorkomende problemen optreden:

  • Als het autorisatietoken afkomstig is van een beheerde identiteit en de juiste machtigingen onlangs zijn toegewezen, kan het enkele uren duren voordat deze machtigingentoewijzingen van kracht worden.
  • De standaardconfiguratie voor een zoekservice is alleen verificatie op basis van sleutels. Als u de standaardsleutelinstelling niet hebt gewijzigd in Zowel of op rollen gebaseerd toegangsbeheer, worden alle aanvragen met verificatie op basis van rollen automatisch geweigerd, ongeacht de onderliggende machtigingen.