Een indexeerfunctieverbinding met Azure Storage instellen met behulp van een beheerde identiteit

In dit artikel wordt uitgelegd hoe u een indexeerfunctieverbinding met een Azure Storage-account instelt met behulp van een beheerde identiteit in plaats van referenties op te geven in de verbindingsreeks.

U kunt een door het systeem toegewezen beheerde identiteit of een door de gebruiker toegewezen beheerde identiteit (preview) gebruiken. Beheerde identiteiten zijn Microsoft Entra-aanmeldingen en vereisen Azure-roltoewijzingen voor toegang tot gegevens in Azure Storage.

Notitie

Als de opslag is beveiligd met het netwerk en in dezelfde regio als uw zoekservice, moet u een door het systeem toegewezen beheerde identiteit en een van de volgende netwerkopties gebruiken: verbinding maken als een vertrouwde service of verbinding maken met behulp van de regel voor het resource-exemplaar.

Vereisten

  • Maak een beheerde identiteit voor uw zoekservice.

  • Een rol toewijzen in Azure Storage:

    • Kies Opslagblobgegevenslezer voor leestoegang tot gegevens in Blob Storage en ADLS Gen2.

    • Kies Lezer en gegevens voor leestoegang tot gegevens in Table Storage en File Storage.

  • U moet bekend zijn met de concepten en configuratie van de indexeerfunctie.

Tip

Zie Index Data Lake Gen2 met behulp van Microsoft Entra-id op GitHub voor een codevoorbeeld in C#.

De gegevensbron maken

Maak de gegevensbron en geef een door het systeem toegewezen beheerde identiteit of een door de gebruiker toegewezen beheerde identiteit (preview) op.

Door het systeem toegewezen beheerde identiteit

De REST API, Azure Portal en de .NET SDK-ondersteuning met behulp van een door het systeem toegewezen beheerde identiteit.

Wanneer u verbinding maakt met een door het systeem toegewezen beheerde identiteit, is de enige wijziging in de definitie van de gegevensbron de indeling van de eigenschap Referenties. Geef een ResourceId op die geen accountsleutel of wachtwoord heeft. De ResourceId moet de abonnements-id van het opslagaccount, de resourcegroep van het opslagaccount en de naam van het opslagaccount bevatten.

Hier volgt een voorbeeld van het maken van een gegevensbron voor het indexeren van gegevens uit een opslagaccount met behulp van de REST API voor gegevensbron maken en een beheerde identiteit verbindingsreeks. De indeling van de beheerde identiteit verbindingsreeks is hetzelfde voor de REST API, .NET SDK en Azure Portal.

POST https://[service name].search.windows.net/datasources?api-version=2023-11-01
Content-Type: application/json
api-key: [admin key]

{
    "name" : "blob-datasource",
    "type" : "azureblob",
    "credentials" : { 
        "connectionString" : "ResourceId=/subscriptions/[subscription ID]/resourceGroups/[resource group name]/providers/Microsoft.Storage/storageAccounts/[storage account name]/;" 
    },
    "container" : { 
        "name" : "my-container", "query" : "<optional-virtual-directory-name>" 
    }
}   

Door de gebruiker toegewezen beheerde identiteit (preview)

De REST API 2021-04-30-preview ondersteunt verbindingen op basis van een door de gebruiker toegewezen beheerde identiteit. Wanneer u verbinding maakt met een door de gebruiker toegewezen beheerde identiteit, zijn er twee wijzigingen in de definitie van de gegevensbron:

  • Ten eerste is de indeling van de eigenschap Referenties een ResourceId die geen accountsleutel of wachtwoord heeft. De ResourceId moet de abonnements-id van het opslagaccount, de resourcegroep van het opslagaccount en de naam van het opslagaccount bevatten. Deze indeling is dezelfde indeling als de door het systeem toegewezen beheerde identiteit.

  • Voeg ten tweede een 'identiteit'-eigenschap toe die de verzameling door de gebruiker toegewezen beheerde identiteiten bevat. Er moet slechts één door de gebruiker toegewezen beheerde identiteit worden opgegeven bij het maken van de gegevensbron. Stel deze in om 'userAssignedIdentities' te typen.

Hier volgt een voorbeeld van het maken van een indexeerfunctie voor een gegevensbronobject met behulp van de PREVIEW-api voor het maken of bijwerken van gegevensbron :

POST https://[service name].search.windows.net/datasources?api-version=2021-04-30-preview
Content-Type: application/json
api-key: [admin key]

{
    "name" : "blob-datasource",
    "type" : "azureblob",
    "credentials" : { 
        "connectionString" : "ResourceId=/subscriptions/[subscription ID]/resourceGroups/[resource group name]/providers/Microsoft.Storage/storageAccounts/[storage account name]/;" 
    },
    "container" : { 
        "name" : "my-container", "query" : "<optional-virtual-directory-name>" 
    },
    "identity" : { 
        "@odata.type": "#Microsoft.Azure.Search.DataUserAssignedIdentity",
        "userAssignedIdentity" : "/subscriptions/[subscription ID]/resourcegroups/[resource group name]/providers/Microsoft.ManagedIdentity/userAssignedIdentities/[managed identity name]" 
    }
}   

De index maken

De index geeft de velden in een document, kenmerken en andere constructies op die de zoekervaring vormgeven.

Hier volgt een REST API-aanroep voor index maken met een doorzoekbaar content veld om de tekst op te slaan die is geëxtraheerd uit blobs:

POST https://[service name].search.windows.net/indexes?api-version=2023-11-01
Content-Type: application/json
api-key: [admin key]

{
        "name" : "my-target-index",
        "fields": [
        { "name": "id", "type": "Edm.String", "key": true, "searchable": false },
        { "name": "content", "type": "Edm.String", "searchable": true, "filterable": false, "sortable": false, "facetable": false }
        ]
}

De indexeerfunctie maken

Een indexeerfunctie verbindt een gegevensbron met een doelzoekindex en biedt een schema voor het automatiseren van de gegevensvernieuwing. Zodra de index en gegevensbron zijn gemaakt, kunt u de indexeerfunctie maken en uitvoeren. Als de indexeerfunctie is geslaagd, zijn de verbindingssyntaxis en roltoewijzingen geldig.

Hier volgt een REST API-aanroep voor Indexeerfunctie maken met een definitie van een blob-indexeerfunctie. De indexeerfunctie wordt uitgevoerd wanneer u de aanvraag indient.

POST https://[service name].search.windows.net/indexers?api-version=2023-11-01
Content-Type: application/json
api-key: [admin key]

{
    "name" : "blob-indexer",
    "dataSourceName" : "blob-datasource",
    "targetIndexName" : "my-target-index"
}

Toegang tot met het netwerk beveiligde gegevens in opslagaccounts

Azure-opslagaccounts kunnen verder worden beveiligd met behulp van firewalls en virtuele netwerken. Als u inhoud wilt indexeren van een opslagaccount dat is beveiligd met behulp van een firewall of virtueel netwerk, raadpleegt u Indexeerfunctieverbindingen maken met Azure Storage als een vertrouwde service.

Zie ook