Uitgaande verbindingen maken via een gedeelde privékoppeling

In dit artikel wordt uitgelegd hoe u privé-, uitgaande aanroepen van Azure AI Search configureert naar een Azure PaaS-resource die binnen een virtueel netwerk wordt uitgevoerd.

Als u een privéverbinding instelt, kan een zoekservice verbinding maken met een IP-adres van een virtueel netwerk in plaats van een poort die is geopend op internet. Het object dat voor de verbinding is gemaakt, wordt een gedeelde privékoppeling genoemd. Bij de verbinding gebruikt de zoekservice intern de gedeelde privékoppeling om een Azure PaaS-resource binnen de netwerkgrens te bereiken.

Gedeelde privékoppeling is een Premium-functie die wordt gefactureerd op basis van gebruik. Wanneer u een gedeelde privékoppeling instelt, worden de kosten voor het privé-eindpunt toegevoegd aan uw Azure-factuur. Wanneer u de gedeelde privékoppeling gebruikt, worden ook de tarieven voor gegevensoverdracht voor binnenkomende en uitgaande toegang gefactureerd. Zie prijzen voor Azure Private Link voor meer informatie.

Notitie

Als u een privé-indexeerfunctieverbinding met een SQL Managed Instance instelt, raadpleegt u dit artikel .

Azure AI Search roept uitgaande aanroepen uit naar andere Azure PaaS-resources in de volgende scenario's:

  • Indexeerfunctie of zoekmachine maakt verbinding met Azure OpenAI voor tekst-naar-vector-insluitingen
  • Indexeerfunctie maakt verbinding met ondersteunde gegevensbronnen
  • Indexeerfunctieverbindingen (vaardighedenset) met Azure Storage voor het opslaan van verrijkingen in de cache, foutopsporingssessie of schrijven naar een kennisarchief
  • Aanvragen voor versleutelingssleutels naar Azure Key Vault
  • Aanvragen voor aangepaste vaardigheden voor Azure Functions of een vergelijkbare resource

Gedeelde privékoppelingen werken alleen voor Azure-naar-Azure-verbindingen. Als u verbinding maakt met OpenAI of een ander extern model, moet de verbinding via het openbare internet zijn.

Gedeelde privékoppelingen zijn bedoeld voor bewerkingen en gegevens die worden geopend via een privé-eindpunt voor Azure-resources of -clients die worden uitgevoerd in een virtueel Azure-netwerk.

Een gedeelde privékoppeling is:

  • Gemaakt met behulp van Azure AI Search-hulpprogramma's, API's of SDK's
  • Goedgekeurd door de eigenaar van de Azure PaaS-resource
  • Intern gebruikt door Azure AI Search op een privéverbinding met een specifieke Azure-resource

Alleen uw zoekservice kan de privékoppelingen gebruiken die worden gemaakt en er kan slechts één gedeelde privékoppeling in uw service worden gemaakt voor elke combinatie van resources en subresources.

Zodra u de privékoppeling hebt ingesteld, wordt deze automatisch gebruikt wanneer de zoekservice verbinding maakt met die PaaS-resource. U hoeft de verbindingsreeks niet te wijzigen of de client te wijzigen die u gebruikt om de aanvragen uit te geven, hoewel het apparaat dat voor de verbinding wordt gebruikt, verbinding moet maken met behulp van een geautoriseerd IP-adres in de firewall van de Azure PaaS-resource.

Er zijn twee scenario's voor het gebruik van Azure Private Link en Azure AI Search.

Scenario één wordt behandeld in dit artikel.

Hoewel beide scenario's afhankelijk zijn van Azure Private Link, zijn ze onafhankelijk. U kunt een gedeelde privékoppeling maken zonder dat u uw eigen zoekservice hoeft te configureren voor een privé-eindpunt.

Beperkingen

Onthoud deze beperkingen bij het evalueren van gedeelde privékoppelingen voor uw scenario.

  • Verschillende resourcetypen die in een gedeelde privékoppeling worden gebruikt, zijn in preview. Als u verbinding maakt met een preview-resource (Azure Database for MySQL, Azure Functions of Azure SQL Managed Instance), gebruikt u een preview-versie van de MANAGEMENT REST API om de gedeelde privékoppeling te maken. Deze versies omvatten 2020-08-01-preview, 2021-04-01-previewen 2024-03-01-preview.

  • De uitvoering van de indexeerfunctie moet gebruikmaken van de privé-uitvoeringsomgeving die specifiek is voor uw zoekservice. Privé-eindpuntverbindingen worden niet ondersteund vanuit de omgeving met meerdere tenants. De configuratie-instelling voor deze vereiste wordt behandeld in dit artikel.

Vereisten

  • Een Azure AI Search op de Basic-laag of hoger. Als u AI-verrijking en vaardighedensets gebruikt, moet de laag Standard 2 (S2) of hoger zijn. Zie Servicelimieten voor meer informatie.

  • Een Azure PaaS-resource uit de volgende lijst met ondersteunde resourcetypen, geconfigureerd voor uitvoering in een virtueel netwerk.

  • Machtigingen voor zowel Azure AI Search als de gegevensbron:

    • In de Azure PaaS-resource moet u gemachtigd zijn om privé-eindpuntverbindingen goed te keuren. Als u bijvoorbeeld een Azure Storage-account gebruikt als uw gegevensbron (zoals blobcontainer, Azure Files-share, Azure-tabel), hebt u nodig Microsoft.Storage/storageAccounts/privateEndpointConnectionsApproval/action.

    • In de zoekservice moet u lees- en schrijfmachtigingen hebben voor gedeelde private link-resources en bewerkingsstatussen lezen:

      • Microsoft.Search/searchServices/sharedPrivateLinkResources/write
      • Microsoft.Search/searchServices/sharedPrivateLinkResources/read
      • Microsoft.Search/searchServices/sharedPrivateLinkResources/operationStatuses/read

Ondersteunde resourcetypen

U kunt een gedeelde privékoppeling maken voor de volgende resources.

Brontype Subresource (of groeps-id)
Microsoft.Storage/storageAccounts 1 blob, , , tabledfsfile
Microsoft.DocumentDB/databaseAccounts 2 Sql
Microsoft.Sql/servers sqlServer
Microsoft.KeyVault/vaults vault
Microsoft.DBforMySQL/servers (preview) mysqlServer
Microsoft.Web/sites (preview) 3 sites
Microsoft.Sql/managedInstances (preview) 4 managedInstance
Microsoft.CognitiveServices/accounts (preview) 5 openai_account

1 Als Azure Storage en Azure AI Search zich in dezelfde regio bevinden, wordt de verbinding met opslag gemaakt via het Backbone-netwerk van Microsoft. Dit betekent dat een gedeelde privékoppeling overbodig is voor deze configuratie. Als u echter al een privé-eindpunt voor Azure Storage hebt ingesteld, moet u ook een gedeelde privékoppeling instellen of wordt de verbinding geweigerd aan de opslagzijde. Als u meerdere opslagindelingen gebruikt voor verschillende scenario's in de zoekfunctie, moet u ook een afzonderlijke gedeelde privékoppeling maken voor elke subresource.

2 Het Microsoft.DocumentDB/databaseAccounts resourcetype wordt gebruikt voor indexeerverbindingen met Azure Cosmos DB voor NoSQL. De providernaam en groeps-id zijn hoofdlettergevoelig.

3 Het Microsoft.Web/sites resourcetype wordt gebruikt voor App Service- en Azure-functies. In de context van Azure AI Search is een Azure-functie het meest waarschijnlijke scenario. Een Azure-functie wordt vaak gebruikt voor het hosten van de logica van een aangepaste vaardigheid. Azure Function heeft hostingabonnementen voor Verbruik, Premium en Dedicated App Service. De App Service Environment (ASE) en Azure Kubernetes Service (AKS) worden momenteel niet ondersteund.

4 Zie Een gedeelde privékoppeling maken voor een met SQL beheerd exemplaar voor instructies.

5 Het resourcetype wordt gebruikt voor indexeerverbindingen met Azure OpenAI bij het implementeren van geïntegreerde VectorizationMicrosoft.CognitiveServices/accounts.

Gebruik Azure Portal, Beheer REST API, De Azure CLI of Azure PowerShell om een gedeelde privékoppeling te maken.

Hier volgen enkele tips:

  • Geef de privékoppeling een betekenisvolle naam. In de Azure PaaS-resource wordt naast andere privé-eindpunten een gedeelde privékoppeling weergegeven. Een naam zoals 'shared-private-link-for-search' kan u eraan herinneren hoe deze wordt gebruikt.

Wanneer u de stappen in deze sectie hebt voltooid, hebt u een gedeelde privékoppeling die in behandeling is ingericht. Het duurt enkele minuten om de koppeling te maken. Zodra deze is gemaakt, moet de resource-eigenaar de aanvraag goedkeuren voordat deze operationeel is.

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

  2. Selecteer Netwerken onder Instellingen in het linkernavigatiedeelvenster.

  3. Selecteer + Gedeelde privétoegang toevoegen op de pagina Gedeelde privétoegang.

  4. Selecteer Verbinding maken naar een Azure-resource in mijn directory of Verbinding maken naar een Azure-resource op resource-id.

  5. Als u de eerste optie selecteert (aanbevolen), helpt de portal u bij het kiezen van de juiste Azure-resource en vult u andere eigenschappen in, zoals de groeps-id van de resource en het resourcetype.

    Schermopname van de pagina Gedeelde privétoegang toevoegen, met een begeleide ervaring voor het maken van een gedeelde private link-resource.

  6. Als u de tweede optie selecteert, voert u de Azure-resource-id handmatig in en kiest u de juiste groeps-id in de lijst aan het begin van dit artikel.

    Schermopname van de pagina Gedeelde privétoegang toevoegen, met de handmatige ervaring voor het maken van een gedeelde private link-resource.

  7. Controleer of de inrichtingsstatus 'Bijwerken' is.

    Schermopname van de pagina Gedeelde privétoegang toevoegen, waarin het maken van de resource wordt uitgevoerd.

  8. Zodra de resource is gemaakt, verandert de inrichtingsstatus van de resource in Geslaagd.

    Schermopname van de pagina Gedeelde privétoegang toevoegen, waarin het maken van de resource is voltooid.

Er wordt een 202 Accepted antwoord geretourneerd bij succes. Het proces voor het maken van een uitgaand privé-eindpunt is een langdurige (asynchrone) bewerking. Dit omvat het implementeren van de volgende resources:

  • Een privé-eindpunt, toegewezen met een privé-IP-adres in een "Pending" status. Het privé-IP-adres wordt opgehaald uit de adresruimte die is toegewezen aan het virtuele netwerk van de uitvoeringsomgeving voor de zoekservicespecifieke privéindexeerfunctie. Na goedkeuring van het privé-eindpunt is elke communicatie van Azure AI Search naar de Azure-resource afkomstig van het privé-IP-adres en een beveiligd private link-kanaal.

  • Een privé-DNS-zone voor het type resource, op basis van de groeps-id. Door deze resource te implementeren, zorgt u ervoor dat elke DNS-zoekopdracht naar de privéresource gebruikmaakt van het IP-adres dat is gekoppeld aan het privé-eindpunt.

2 - De privé-eindpuntverbinding goedkeuren

Goedkeuring van de privé-eindpuntverbinding wordt verleend aan de Zijde van Azure PaaS. Expliciete goedkeuring door de resource-eigenaar is vereist. De volgende stappen hebben betrekking op goedkeuring met behulp van Azure Portal, maar hier volgen enkele koppelingen om de verbinding programmatisch goed te keuren vanuit de Azure PaaS-kant:

Voer de volgende stappen uit met behulp van Azure Portal:

  1. Open de pagina Netwerken van de Azure PaaS-resource.Tekst

  2. Zoek de sectie met de privé-eindpuntverbindingen. Het volgende voorbeeld is voor een opslagaccount.

    Schermopname van Azure Portal, met het deelvenster Privé-eindpuntverbindingen.

  3. Selecteer de verbinding en selecteer vervolgens Goedkeuren. Het kan enkele minuten duren voordat de status in de portal is bijgewerkt.

    Schermopname van Azure Portal, met een goedgekeurde status in het deelvenster Privé-eindpuntverbindingen.

Nadat het privé-eindpunt is goedgekeurd, maakt Azure AI Search de benodigde DNS-zonetoewijzingen in de DNS-zone die hiervoor is gemaakt.

Hoewel de privé-eindpuntkoppeling op de pagina Netwerken actief is, wordt dit niet opgelost.

Schermopname van de koppeling naar het privé-eindpunt op de azure PaaS-netwerkpagina.

Als u de koppeling selecteert, wordt er een fout gegenereerd. Er wordt een statusbericht van "The access token is from the wrong issuer" en must match the tenant associated with this subscription weergegeven omdat de privé-eindpuntresource van de back-end wordt ingericht door Microsoft in een door Microsoft beheerde tenant, terwijl de gekoppelde resource (Azure AI Search) zich in uw tenant bevindt. Het is standaard dat u geen toegang hebt tot de privé-eindpuntresource door de koppeling voor de privé-eindpuntverbinding te selecteren.

Volg de instructies in de volgende sectie om de status van uw gedeelde privékoppeling te controleren.

Aan de zijde van Azure AI Search kunt u goedkeuring bevestigen door de pagina Gedeelde privétoegang van de pagina Netwerk van de zoekservice te bekijken. Verbinding maken iestatus moet worden goedgekeurd.

Schermopname van Azure Portal met een goedgekeurde gedeelde private link-resource.

U kunt ook de verbindingsstatus verkrijgen met behulp van de GET Shared Private Link-API.

az rest --method get --uri https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/contoso/providers/Microsoft.Search/searchServices/contoso-search/sharedPrivateLinkResources/blob-pe?api-version=2023-11-01

Hiermee wordt een JSON geretourneerd, waarbij de verbindingsstatus wordt weergegeven als 'status' onder de sectie Eigenschappen. Hieronder volgt een voorbeeld voor een opslagaccount.

{
      "name": "blob-pe",
      "properties": {
        "privateLinkResourceId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/contoso/providers/Microsoft.Storage/storageAccounts/contoso-storage",
        "groupId": "blob",
        "requestMessage": "please approve",
        "status": "Approved",
        "resourceRegion": null,
        "provisioningState": "Succeeded"
      }
}

Als de inrichtingsstatus (properties.provisioningState) van de resource 'Geslaagd' is en de verbindingsstatus(properties.status) 'Goedgekeurd' is, betekent dit dat de gedeelde private link-resource functioneel is en dat de indexeerfunctie kan worden geconfigureerd om te communiceren via het privé-eindpunt.

4 - De indexeerfunctie configureren die moet worden uitgevoerd in de privéomgeving

De uitvoering van de indexeerfunctie vindt plaats in een privéomgeving die specifiek is voor de zoekservice of in een omgeving met meerdere tenants die intern wordt gebruikt voor het offloaden van dure vaardighedensetverwerking voor meerdere klanten.

De uitvoeringsomgeving is transparant, maar wanneer u begint met het bouwen van firewallregels of het tot stand brengen van privéverbindingen, moet u rekening houden met de uitvoering van de indexeerfunctie. Voor een privéverbinding configureert u de uitvoering van de indexeerfunctie zodat deze altijd in de privéomgeving wordt uitgevoerd.

In deze stap ziet u hoe u de indexeerfunctie configureert voor uitvoering in de privéomgeving met behulp van de REST API. U kunt de uitvoeringsomgeving ook instellen met behulp van de JSON-editor in de portal.

Notitie

U kunt deze stap uitvoeren voordat de privé-eindpuntverbinding wordt goedgekeurd. Totdat de privé-eindpuntverbinding echter wordt weergegeven als goedgekeurd, krijgt elke bestaande indexeerfunctie die probeert te communiceren met een beveiligde resource (zoals het opslagaccount) een tijdelijke foutstatus en worden er geen nieuwe indexeerfuncties gemaakt.

  1. Maak de definitie, index en vaardighedenset van de gegevensbron (als u er een gebruikt) zoals u normaal zou doen. Er zijn geen eigenschappen in een van deze definities die variëren wanneer u een gedeeld privé-eindpunt gebruikt.

  2. Maak een indexeerfunctie die verwijst naar de gegevensbron, index en vaardighedenset die u in de vorige stap hebt gemaakt. Bovendien dwingt u af dat de indexeerfunctie wordt uitgevoerd in de privé-uitvoeringsomgeving door de configuratie-eigenschap van de indexeerfunctie executionEnvironment in te stellen op private.

    {
        "name": "indexer",
        "dataSourceName": "blob-datasource",
        "targetIndexName": "index",
        "parameters": {
            "configuration": {
                "executionEnvironment": "private"
            }
        },
        "fieldMappings": []
    }
    

Nadat de indexeerfunctie is gemaakt, moet deze verbinding maken met de Azure-resource via de privé-eindpuntverbinding. U kunt de status van de indexeerfunctie controleren met behulp van de indexeerfunctiestatus-API.

Notitie

Als u al bestaande indexeerfuncties hebt, kunt u deze bijwerken via de PUT-API door de executionEnvironmentprivate JSON-editor in te stellen of te gebruiken in de portal.

  1. Als u dit nog niet hebt gedaan, controleert u of uw Azure PaaS-resource verbindingen van het openbare internet weigert. Als verbindingen worden geaccepteerd, controleert u de DNS-instellingen op de pagina Netwerken van uw Azure PaaS-resource.

  2. Kies een hulpprogramma dat een scenario voor uitgaande aanvragen kan aanroepen, zoals een indexeerfunctieverbinding met een privé-eindpunt. Een eenvoudige keuze is het gebruik van de wizard Gegevens importeren, maar u kunt ook een REST-client en REST API's proberen voor meer precisie. Ervan uitgaande dat uw zoekservice niet ook is geconfigureerd voor een privéverbinding, kan de REST-clientverbinding om te zoeken via het openbare internet zijn.

  3. Stel de verbindingsreeks in op de persoonlijke Azure PaaS-resource. De indeling van de verbindingsreeks wordt niet gewijzigd voor een gedeelde privékoppeling. De zoekservice roept de gedeelde privékoppeling intern aan.

    Voor indexeerworkloads bevindt de verbindingsreeks zich in de definitie van de gegevensbron. Een voorbeeld van een gegevensbron kan er als volgt uitzien:

     {
       "name": "my-blob-ds",
       "type": "azureblob",
       "subtype": null,
       "credentials": {
         "connectionString": "DefaultEndpointsProtocol=https;AccountName=<YOUR-STORAGE-ACCOUNT>;AccountKey=..."
       }
    
  4. Voor indexeerwerkbelastingen moet u de uitvoeringsomgeving instellen in de definitie van de indexeerfunctie. Een voorbeeld van een indexeerfunctiedefinitie kan er als volgt uitzien:

    "name": "indexer",
    "dataSourceName": "my-blob-ds",
    "targetIndexName": "my-index",
    "parameters": {
       "configuration": {
           "executionEnvironment": "private"
           }
       },
    "fieldMappings": []
    }
    
  5. Voer de indexeerfunctie uit. Als de uitvoering van de indexeerfunctie is geslaagd en de zoekindex is ingevuld, werkt de gedeelde privékoppeling.

Probleemoplossing

  • Als het maken van de indexeerfunctie mislukt met 'Gegevensbronreferenties zijn ongeldig', controleert u de goedkeuringsstatus van de gedeelde privékoppeling voordat de verbinding wordt opgespoord. Als de status is Approved, controleert u de properties.provisioningState eigenschap. Als dit het probleem is Incomplete, is er mogelijk een probleem met onderliggende afhankelijkheden. In dit geval wordt de PUT aanvraag opnieuw verzonden om de gedeelde privékoppeling opnieuw te maken. Mogelijk moet u ook de goedkeuringsstap herhalen.

  • Als indexeerfuncties consistent of onregelmatig mislukken, controleert u de executionEnvironment eigenschap in de indexeerfunctie. De waarde moet worden ingesteld op private. Als u deze eigenschap niet hebt ingesteld en de indexeerfunctie in het verleden is uitgevoerd, komt dit doordat de zoekservice een privéomgeving van eigen goeddunken heeft gebruikt. Een zoekservice verplaatst de verwerking uit de standaardomgeving als het systeem wordt belast.

  • Als er een fout optreedt bij het maken van een gedeelde privékoppeling, controleert u de servicelimieten om te controleren of u onder het quotum voor uw laag zit.

Volgende stappen

Meer informatie over privé-eindpunten en andere veilige verbindingsmethoden: