Verbinding maken naar Azure AI Search met behulp van sleutelverificatie

Azure AI Search biedt verificatie op basis van sleutels die u kunt gebruiken voor verbindingen met uw zoekservice. Een API-sleutel is een unieke tekenreeks die bestaat uit 52 willekeurig gegenereerde cijfers en letters. Een aanvraag die is ingediend bij een eindpunt van de zoekservice wordt geaccepteerd als zowel de aanvraag als de API-sleutel geldig zijn.

Verificatie op basis van sleutels is de standaardinstelling. U kunt dit uitschakelen als u kiest voor verificatie op basis van rollen.

Notitie

Een korte opmerking over belangrijke terminologie. Een API-sleutel is een GUID die wordt gebruikt voor verificatie. Een afzonderlijke term, documentsleutel is een unieke tekenreeks in uw geïndexeerde inhoud waarmee documenten in een zoekindex uniek worden geïdentificeerd.

Typen API-sleutels

Er zijn twee soorten sleutels die worden gebruikt voor het verifiëren van een aanvraag:

Type Machtigingsniveau Maximum Hoe gemaakt
Beheerder Volledige toegang (lezen/schrijven) voor alle inhoudsbewerkingen 2 1 Twee beheerderssleutels, die in de portal primaire en secundaire sleutels worden genoemd, worden gegenereerd wanneer de service wordt gemaakt en kunnen op aanvraag afzonderlijk opnieuw worden gegenereerd.
Query Alleen-lezentoegang, beperkt tot de documentenverzameling van een zoekindex 50 Er wordt één querysleutel gegenereerd met de service. Meer kunnen op aanvraag worden gemaakt door een zoekservicebeheerder.

1 Met twee kunt u één sleutel overrollen terwijl u de tweede sleutel gebruikt voor continue toegang tot de service.

Visueel is er geen onderscheid tussen een beheersleutel of querysleutel. Beide sleutels zijn tekenreeksen die bestaan uit 52 willekeurig gegenereerde alfanumerieke tekens. Als u niet meer weet welk type sleutel is opgegeven in uw toepassing, kunt u de sleutelwaarden in de portal controleren.

API-sleutels gebruiken voor verbindingen

API-sleutels worden gebruikt voor aanvragen voor het gegevensvlak (inhoud), zoals het maken of openen van een index of een andere aanvraag die wordt weergegeven in de REST API's van Search. Bij het maken van een service is een API-sleutel het enige verificatiemechanisme voor gegevensvlakbewerkingen, maar u kunt sleutelverificatie vervangen of aanvullen met Azure-rollen als u geen in code vastgelegde sleutels in uw code kunt gebruiken.

Beheer sleutels worden gebruikt voor het maken, wijzigen of verwijderen van objecten. Beheer sleutels worden ook gebruikt voor GET-objectdefinities en systeeminformatie.

Querysleutels worden doorgaans gedistribueerd naar clienttoepassingen die query's uitgeven.

Hoe API-sleutels worden gebruikt in REST-aanroepen:

Stel een beheerderssleutel in de aanvraagheader in. U kunt geen beheerderssleutels doorgeven aan de URI of in de hoofdtekst van de aanvraag. Beheer sleutels worden gebruikt voor het maken en bijwerken en verwijderen van aanvragen die zijn uitgegeven aan de zoekservice zelf, zoals LIST-indexen of GET-servicestatistieken.

Hier volgt een voorbeeld van het gebruik van beheerders-API-sleutels voor een indexaanvraag maken:

### Create an index
POST {{baseUrl}}/indexes?api-version=2023-11-01  HTTP/1.1
  Content-Type: application/json
  api-key: {{adminApiKey}}

    {
        "name": "my-new-index",  
        "fields": [
            {"name": "docId", "type": "Edm.String", "key": true, "filterable": true},
            {"name": "Name", "type": "Edm.String", "searchable": true }
         ]
   }

Stel een querysleutel in een aanvraagheader in voor POST of op de URI voor GET. Querysleutels worden gebruikt voor bewerkingen die gericht zijn op de index/docs verzameling: Documenten doorzoeken, Automatisch aanvullen, Voorstellen of GET-document.

Hier volgt een voorbeeld van het gebruik van query-API-sleutels voor een GET-aanvraag (Search Documents):

### Query an index
GET /indexes/my-new-index/docs?search=*&api-version=2023-11-01&api-key={{queryApiKey}}

Notitie

Het wordt beschouwd als een slechte beveiligingspraktijk om gevoelige gegevens, zoals een api-key in de aanvraag-URI, door te geven. Daarom accepteert Azure AI Search alleen een querysleutel als een api-key in de querytekenreeks. Als algemene regel raden we u aan om uw api-key als aanvraagheader door te geven.

Machtigingen voor het weergeven of beheren van API-sleutels

Machtigingen voor het weergeven en beheren van API-sleutels worden overgebracht via roltoewijzingen. Leden van de volgende rollen kunnen sleutels weergeven en opnieuw genereren:

De volgende rollen hebben geen toegang tot API-sleutels:

  • Lezer
  • Inzender voor zoekindexgegevens
  • Zoekindexgegevenslezer

Bestaande sleutels zoeken

U kunt API-sleutels weergeven en beheren in Azure Portal of via PowerShell, Azure CLI of REST API.

  1. Meld u aan bij Azure Portal en zoek uw zoekservice.

  2. Selecteer onder Instellingen Sleutels om de beheer- en querysleutels weer te geven.

Schermopname van een portalpagina met API-sleutels.

Querysleutels maken

Querysleutels worden gebruikt voor alleen-lezentoegang tot documenten in een index voor bewerkingen die gericht zijn op een documentenverzameling. Zoek-, filter- en suggestiequery's zijn alle bewerkingen die een querysleutel gebruiken. Voor elke alleen-lezenbewerking die systeemgegevens- of objectdefinities retourneert, zoals een indexdefinitie of indexeerfunctiestatus, is een beheerderssleutel vereist.

Het beperken van de toegang en bewerkingen in client-apps is essentieel voor het beveiligen van de zoekassets op uw service. Gebruik altijd een querysleutel in plaats van een beheersleutel voor elke query die afkomstig is van een client-app.

  1. Meld u aan bij Azure Portal en zoek uw zoekservice.

  2. Selecteer onder Instellingen Sleutels om API-sleutels weer te geven.

  3. Gebruik onder Querysleutels beheren de querysleutel die al is gegenereerd voor uw service of maak nieuwe querysleutels. De standaardquerysleutel heeft geen naam, maar andere gegenereerde querysleutels kunnen worden benoemd voor beheerbaarheid.

    Schermopname van de opties voor querysleutelbeheer.

Beheerderssleutels opnieuw genereren

Er worden twee beheerderssleutels gemaakt voor elke service, zodat u een primaire sleutel kunt roteren terwijl u de secundaire sleutel gebruikt voor bedrijfscontinuïteit.

  1. Selecteer onder Instellingen Sleutels en kopieer de secundaire sleutel.

  2. Werk voor alle toepassingen de API-sleutelinstellingen bij om de secundaire sleutel te gebruiken.

  3. Genereer de primaire sleutel opnieuw.

  4. Werk alle toepassingen bij om de nieuwe primaire sleutel te gebruiken.

Als u per ongeluk beide sleutels tegelijk opnieuw genereert, mislukken alle clientaanvragen die deze sleutels gebruiken met HTTP 403 Verboden. Inhoud wordt echter niet verwijderd en u bent niet permanent vergrendeld.

U hebt nog steeds toegang tot de service via de portal of programmatisch. Beheerfuncties werken via een abonnements-id en geen service-API-sleutel en zijn dus nog steeds beschikbaar, zelfs als uw API-sleutels dat niet zijn.

Nadat u nieuwe sleutels hebt gemaakt via de portal of beheerlaag, wordt de toegang hersteld naar uw inhoud (indexen, indexeerfuncties, gegevensbronnen, synoniemenkaarten) zodra u deze sleutels opgeeft voor aanvragen.

Beveiligde API-sleutels

Gebruik roltoewijzingen om de toegang tot API-sleutels te beperken.

Het is niet mogelijk om door de klant beheerde sleutelversleuteling te gebruiken om API-sleutels te versleutelen. Alleen gevoelige gegevens in de zoekservice zelf (bijvoorbeeld indexinhoud of verbindingsreeks s in definities van gegevensbronobjecten) kunnen CMK-versleuteld zijn.

  1. Navigeer naar de pagina van uw zoekservice in Azure Portal.

  2. Selecteer in het linkernavigatiedeelvenster Toegangsbeheer (IAM) en selecteer vervolgens het tabblad Roltoewijzingen .

  3. Selecteer in het rolfilter de rollen die gemachtigd zijn om sleutels weer te geven of te beheren (Eigenaar, Inzender, Inzender voor zoekservice). De resulterende beveiligingsprinciplen die aan deze rollen zijn toegewezen, hebben sleutelmachtigingen voor uw zoekservice.

  4. Controleer als voorzorgsmaatregel ook het tabblad Klassieke beheerders om te bepalen of beheerders en medebeheerders toegang hebben.

Aanbevolen procedures

  • Gebruik alleen API-sleutels als openbaarmaking van gegevens geen risico is (bijvoorbeeld wanneer u voorbeeldgegevens gebruikt) en als u achter een firewall werkt. Blootstelling van API-sleutels is een risico voor zowel gegevens als onbevoegd gebruik van uw zoekservice.

  • Controleer altijd code, voorbeelden en trainingsmateriaal voordat u publiceert om ervoor te zorgen dat u geen geldige API-sleutels achterlaat.

  • Schakel voor productieworkloads over naar Microsoft Entra-id en op rollen gebaseerde toegang. Als u API-sleutels wilt blijven gebruiken, moet u ook altijd controleren wie toegang heeft tot uw API-sleutels en API-sleutels regelmatig opnieuw genereren.

Zie ook