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

Note

Azure AI Zoeken is beschikbaar via de Azure-portal, REST API's en Azure-SDK's. Het vormt ook een basis voor Foundry IQ, de beheerde kennislaag die bedrijfsinhoud transformeert in herbruikbare, machtigingsbewuste knowledge bases voor agents in de Microsoft Foundry-portal.

In dit artikel wordt uitgelegd hoe u een indexeerfunctieverbinding met Azure SQL Database 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 gebruiken. Beheerde identiteiten zijn Microsoft Entra aanmeldingen en vereisen Azure roltoewijzingen voor toegang tot gegevens in Azure SQL.

Voorwaarden

1 - Machtigingen toewijzen om de database te lezen

Volg de onderstaande stappen om de machtiging voor de zoekservice of de door de gebruiker toegewezen beheerde identiteit toe te wijzen zodat ze de database kunnen lezen.

  1. Maak verbinding met Visual Studio.

    Verbinding maken met Visual Studio

  2. Verifieer met uw Microsoft Entra-account.

    Verificatie verifiëren

  3. Voer de volgende opdrachten uit:

    Neem de haken rond de naam van uw zoekservice of door de gebruiker toegewezen beheerde identiteitsnaam op.

    CREATE USER [insert your search service name here or user-assigned managed identity name] FROM EXTERNAL PROVIDER;
    EXEC sp_addrolemember 'db_datareader', [insert your search service name here or user-assigned managed identity name];
    

    Nieuwe query

    Query uitvoeren

Als u later de identiteit van de zoekservice of door de gebruiker toegewezen identiteit wijzigt nadat u machtigingen hebt toegewezen, moet u het rollidmaatschap verwijderen en de gebruiker in de SQL-database verwijderen en vervolgens de machtigingstoewijzing herhalen. U kunt het rollenlidmaatschap en de gebruikersaccount verwijderen door de volgende opdrachten uit te voeren:

sp_droprolemember 'db_datareader', [insert your search service name or user-assigned managed identity name];

DROP USER IF EXISTS [insert your search service name or user-assigned managed identity name];

2 - Een roltoewijzing toevoegen

In deze sectie geeft u uw Azure AI Zoeken service toestemming om gegevens uit uw SQL Server te lezen. Zie Assign Azure roles using the Azure portal voor gedetailleerde stappen.

  1. Navigeer in de Azure-portal naar uw Azure SQL Server pagina.

  2. Selecteer Toegangsbeheer (IAM).

  3. Selecteer Roltoewijzing toevoegen.>

    Schermopname van de pagina Toegangsbeheer (IAM) met het menu Roltoewijzing toevoegen geopend.

  4. Selecteer op het tabblad Rol de juiste rol Lezer .

  5. Selecteer beheerde identiteit op het tabblad Leden en selecteer vervolgens Leden selecteren.

  6. Selecteer uw Azure-abonnement.

  7. Als u een door het systeem toegewezen beheerde identiteit gebruikt, selecteert u door het systeem toegewezen beheerde identiteit, zoekt u uw zoekservice en selecteert u deze.

  8. Als u een door de gebruiker toegewezen beheerde identiteit gebruikt, selecteert u gebruikers toegewezen beheerde identiteit, zoekt u de naam van de gebruikers toegewezen beheerde identiteit en selecteert u deze.

  9. Selecteer Op het tabblad Beoordelen en toewijzen de optie Controleren + toewijzen om de rol toe te wijzen.

3 - De gegevensbron maken

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

Door het systeem toegewezen beheerde identiteit

De REST API, Azure portal en de Azure SDK's ondersteunen systeemtoegewezen 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. U geeft een initiële catalogus of databasenaam en een ResourceId op die geen accountsleutel of wachtwoord heeft. De ResourceId moet de abonnements-id van Azure SQL Database, de resourcegroep van SQL Database en de naam van de SQL-database bevatten.

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

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

{
    "name" : "sql-datasource",
    "type" : "azuresql",
    "credentials" : { 
        "connectionString" : "Database=[SQL database name];ResourceId=/subscriptions/[subscription ID]/resourceGroups/[resource group name]/providers/Microsoft.Sql/servers/[SQL Server name];Connection Timeout=30;"
    },
    "container" : { 
        "name" : "my-table" 
    }
} 

Door de gebruiker toegewezen beheerde identiteit

REST API-versie 2026-04-01 en hoger ondersteunen 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 het formaat van de eigenschap "referenties" een initiële catalogus of databasenaam en een ResourceId zonder accountsleutel of wachtwoord. De ResourceId moet de abonnements-id van Azure SQL Database, de resourcegroep van SQL Database en de naam van de SQL-database bevatten. Dit 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 gegevensbronobject voor een indexeerfunctie met behulp van gegevensbronnen - Maken of bijwerken:

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

{
    "name" : "sql-datasource",
    "type" : "azuresql",
    "credentials" : { 
        "connectionString" : "Database=[SQL database name];ResourceId=/subscriptions/[subscription ID]/resourceGroups/[resource group name]/providers/Microsoft.Sql/servers/[SQL Server name];Connection Timeout=30;"
    },
    "container" : { 
        "name" : "my-table" 
    },
    "identity" : { 
        "@odata.type": "#Microsoft.Azure.Search.DataUserAssignedIdentity",
        "userAssignedIdentity" : "/subscriptions/[subscription ID]/resourcegroups/[resource group name]/providers/Microsoft.ManagedIdentity/userAssignedIdentities/[managed identity name]"
    }
}   

4 - 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 booktitle veld:

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

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

5 - 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 de gegevensbron zijn gemaakt, kunt u de indexeerfunctie maken. Als de indexeerfunctie is geslaagd, zijn de verbindingssyntaxis en roltoewijzingen geldig.

Hier volgt een Create Indexer REST API-aanroep met een Azure SQL indexeerfunctiedefinitie. De indexeerfunctie wordt uitgevoerd wanneer u de aanvraag indient.

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

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

Als er een fout optreedt wanneer de indexeerfunctie verbinding probeert te maken met de gegevensbron met de mededeling dat de client geen toegang heeft tot de server, bekijkt u veelvoorkomende indexeerfunctiefouten.

Zie ook

Azure SQL-indexer