Erstellen ausgehender Verbindungen über eine freigegebene private Verbindung
In diesem Artikel wird erläutert, wie Sie private ausgehende Aufrufe der Azure KI-Suche an eine Azure-Ressource konfigurieren, die in einem virtuellen Azure-Netzwerk ausgeführt wird.
Durch das Einrichten einer privaten Verbindung kann ein Suchdienst eine Verbindung mit einer IP-Adresse eines virtuellen Netzwerks herstellen, anstatt mit einem Port, der für das Internet geöffnet ist. Das für die Verbindung erstellte Objekt wird als geteilte private Verbindung bezeichnet. Bei der Verbindung verwendet der Suchdienst die geteilte private Verbindung intern, um eine Azure-Ressource innerhalb der Netzwerkgrenze zu erreichen.
Die geteilte private Verbindung ist eine Premium-Funktion mit nutzungsbasierter Abrechnung. Wenn Sie eine geteilte private Verbindung einrichten, werden Gebühren für den privaten Endpunkt zu Ihrer Azure-Rechnung hinzugefügt. Wenn Sie die geteilte private Verbindung verwenden, werden auch Datenübertragungsraten für eingehenden und ausgehenden Zugriff in Rechnung gestellt. Ausführliche Informationen finden Sie unter Azure Private Link – Preise.
Hinweis
Wenn Sie eine private Indexerverbindung mit SQL Managed Instance einrichten, lesen Sie stattdessen diesen Artikel mit den spezifischen Schritten für diesen Ressourcentyp.
Wann eine geteilte private Verbindung zu nutzen ist
Die Azure KI-Suche führt ausgehende Aufrufe an andere Azure-Ressourcen in den folgenden Szenarien aus:
- Indexer- oder Abfrageverbindungen mit Azure OpenAI, Azure KI Vision oder dem Azure KI Foundry-Modellkatalog für die Vektorisierung
- Indexerverbindungen mit unterstützten Datenquellen
- Indexerverbindungen (Skillset)-Verbindungen mit Azure Storage zum Zwischenspeichern von Anreicherungen, Ausfüllen von Debug-Sitzungen oder Schreiben in einen Wissensspeicher
- Indexerverbindungen (Skillset) zu Azure KI-Diensten für Abrechnungszwecke
- Anforderungen des Verschlüsselungsschlüssels an Azure Key Vault
- Benutzerdefinierte Skill-Anforderungen an Azure Functions oder ähnliche Ressourcen
Gemeinsame private Links funktionieren nur für Azure-zu-Azure-Verbindungen. Wenn Sie eine Verbindung mit OpenAI oder einem anderen externen Modell herstellen, muss die Verbindung über das öffentliche Internet erfolgen.
Freigegebene private Links gelten für Vorgänge und Daten, auf die über einen privaten Endpunkt zugegriffen wird, für Azure-Ressourcen oder -Clients, die in einem virtuellen Azure-Netzwerk ausgeführt werden.
Für eine geteilte private Verbindung gilt Folgendes:
- Erstellt mit Azure KI Cognitive Search-Tools, APIs oder SDKs
- Genehmigt vom Azure-Ressourcenbesitzer
- Intern von der Azure KI-Suche für eine private Verbindung mit einer bestimmten Azure-Ressource verwendet
Nur Ihr Suchdienst kann die von ihm erstellten privaten Verbindungen verwenden, und für jede Ressourcen- und Unterressourcenkombination kann es im Dienst nur eine erstellte geteilte private Verbindung geben.
Nachdem Sie die private Verbindung eingerichtet haben, wird sie immer automatisch verwendet, wenn der Suchdienst eine Verbindung mit dieser Ressource herstellt. Sie müssen weder die Verbindungszeichenfolge noch den Client ändern, den Sie zum Ausgeben der Anforderungen verwenden, obwohl das für die Verbindung verwendete Gerät eine Verbindung über eine autorisierte IP in der Firewall der Azure-Ressource herstellen muss.
Es gibt zwei Szenarien für die gemeinsame Verwendung von Azure Private Link und Azure KI Cognitive Search.
Szenario 1: Erstellen Sie eine geteilte private Verbindung, wenn eine ausgehende (Indexer-)Verbindung mit Azure eine private Verbindung erfordert.
Szenario 2: Konfigurieren Sie die Suche nach einer privaten eingehenden Verbindung von Clients, die in einem virtuellen Netzwerk ausgeführt werden.
Szenario 1 wird in diesem Artikel behandelt.
Obwohl beide Szenarien eine Abhängigkeit von Azure Private Link haben, sind sie unabhängig. Sie können eine geteilte private Verbindung erstellen, ohne Ihren eigenen Suchdienst für einen privaten Endpunkt konfigurieren zu müssen.
Begrenzungen
Beachten Sie beim Auswerten geteilter privater Verbindung für Ihr Szenario diese Einschränkungen.
Einige der Ressourcentypen, die in einer geteilten privaten Verbindung verwendet werden, befinden sich in der Vorschau. Falls Sie eine Verbindung mit einer Vorschauressource (Azure Database for MySQL oder Azure SQL Managed Instance) herstellen, verwenden Sie eine Vorschauversion der Verwaltungs-REST-API, um die geteilte private Verbindung zu erstellen. Zu diesen Versionen gehören
2020-08-01-preview
,2021-04-01-preview
,2024-03-01-preview
und2024-06-01-preview
. Wir empfehlen die neueste Vorschau-API.Für die Indexerausführung muss die private Ausführungsumgebung verwendet werden, die spezifisch für Ihren Suchdienst ist. Private Endpunktverbindungen werden von der Inhaltsverarbeitungsumgebung mit mehreren Mandanten nicht unterstützt. Die Konfigurationseinstellung für diese Anforderung wird in diesem Artikel behandelt.
Überprüfen Sie die Ressourcengrenzwerte für jede Ebene für eine geteilte private Verbindung.
Voraussetzungen
Eine unterstützte Azure-Ressource, die für die Ausführung in einem virtuellen Netzwerk konfiguriert ist.
Ein Azure KI-Suchdienst mit Ebenen- und Regionsanforderungen nach Workload:
Workload Anforderungen für die Ebene Anforderungen für die Region Anforderungen für die Diensterstellung Indexer ohne Skillsets Basic und höher Keine Keine Skillsets mit Einbettungsskills (integrierte Vektorisierung) Basic und höher Regionen mit hoher Kapazität Nach dem 3. April 2024 Skillsets, die andere integrierte oder benutzerdefinierte Skills verwenden Standard 2 (S2) und höher Keine Nach dem 3. April 2024 Berechtigungen für die Azure KI-Suche und die Azure-Ressource:
Resource Berechtigungen Azure KI Cognitive Search Microsoft.Search/searchServices/sharedPrivateLinkResources/write
Microsoft.Search/searchServices/sharedPrivateLinkResources/read
Microsoft.Search/searchServices/sharedPrivateLinkResources/operationStatuses/read
Andere Azure-Ressource Berechtigung zum Genehmigen privater Endpunktverbindungen. Beispielsweise benötigen Sie in Azure Storage Microsoft.Storage/storageAccounts/privateEndpointConnectionsApproval/action
.
Unterstützte Ressourcentypen
Sie können eine geteilte private Verbindung für die folgenden Ressourcen erstellen.
Ressourcentyp | Unterressource (oder Gruppen-ID) |
---|---|
Microsoft.Storage/storageAccounts 1 | blob , table , dfs , file |
Microsoft.DocumentDB/databaseAccounts 2 | Sql |
Microsoft.Sql/servers 3 | sqlServer |
Microsoft.KeyVault/vaults | vault |
Microsoft.DBforMySQL/servers (Vorschau) | mysqlServer |
Microsoft.Web/sites 4 | sites |
Microsoft.Sql/managedInstances (Vorschau) 5 | managedInstance |
Microsoft.CognitiveServices/accounts 6 7 | openai_account |
Microsoft.CognitiveServices/accounts 8 | cognitiveservices_account |
1 Wenn sich Azure Storage und Azure KI Cognitive Search in derselben Region befinden, wird die Verbindung zum Speicher über das Microsoft-Backbone-Netzwerk hergestellt, was bedeutet, dass eine geteilte private Verbindung für diese Konfiguration redundant ist. Wenn Sie jedoch bereits einen privaten Endpunkt für Azure Storage eingerichtet haben, sollten Sie auch eine geteilte private Verbindung einrichten, oder die Verbindung wird auf der Speicherseite abgelehnt. Wenn Sie für verschiedene Suchszenarien mehrere Speicherformate verwenden, müssen Sie außerdem für jede Unterressource eine separate geteilte private Verbindung erstellen.
2 Der Ressourcentyp Microsoft.DocumentDB/databaseAccounts
wird für Indexerverbindungen zu Azure Cosmos DB for NoSQL verwendet. Bei dem Anbieternamen und der Gruppen-ID muss die Groß-/Kleinschreibung beachtet werden.
3 Der Ressourcentyp Microsoft.Sql/servers
wird für Verbindungen mit Azure SQL-Datenbank verwendet. Derzeit wird eine freigegebene private Verbindung mit Azure Synapse SQL nicht unterstützt.
4 Der Ressourcentyp Microsoft.Web/sites
wird für App Service und Azure Functions verwendet. Im Kontext von Azure KI Cognitive Search ist eine Azure-Funktion das wahrscheinlichere Szenario. Eine Azure-Funktion wird häufig zum Hosten der Logik eines benutzerdefinierten Skills verwendet. Azure Function verfügt über Verbrauchs-, Premium- und dedizierte App Service-Hostingpläne. Die App Service-Umgebung (ASE), Azure Kubernetes Service (AKS) und Azure API Management werden derzeit nicht unterstützt.
5 Weitere Anweisungen finden Sie unter Erstellen einer geteilten privaten Verbindung für SQL Managed Instance.
6 Der Ressourcentyp Microsoft.CognitiveServices/accounts
wird für Vektorisierer- und Indexerverbindungen mit Azure OpenAI-Einbettungsmodellen verwendet, wenn die integrierte Vektorisierung implementiert wird. Ab dem 19. November 2024 gibt es Unterstützung für freigegebene private Verbindungen mit Einbettungsmodellen im Azure KI Foundry-Modellkatalog oder zur multimodalen Azure KI Vision-API.
7 Eine freigegebene private Verbindung für Azure OpenAI wird nur in der öffentlichen Cloud unterstützt. Andere Cloudangebote wie Microsoft Azure Government bieten keine Unterstützung für freigegebene private Verbindungen für die openai_account
-Gruppen-ID.
8 Freigegebene private Verbindungen werden jetzt (ab November 2024) für Verbindungen mit Azure KI-Konten mit mehreren Diensten unterstützt. Azure KI-Suche stellt eine Verbindung mit Azure KI mit mehreren Diensten für Abrechnungszwecke her. Diese Verbindungen können jetzt über eine freigegebene private Verbindung privat sein. Der freigegebene private Link wird nur unterstützt, wenn eine verwaltete Identität (schlüssellose Konfiguration) in der Skillsetdefinition konfiguriert wird.
1. Erstellen einer freigegebenen privaten Verbindung
Verwenden Sie das Azure-Portal, die Verwaltungs-REST-API, die Azure CLI oder Azure PowerShell, um eine geteilte private Verbindung zu erstellen.
Im Folgenden einige Tipps:
- Geben Sie der geteilten privaten Verbindung einen aussagekräftigen Namen. Eine geteilte private Verbindung wird in der Azure PaaS-Ressource zusammen mit anderen privaten Endpunkten angezeigt. Ein Name wie „geteilte-private-verbindung-für-cognitive-search“ kann Sie daran erinnern, wie er verwendet wird.
Wenn Sie diese Schritte ausführen, sollten Sie über eine geteilte private Verbindung verfügen, die mit einem Status „Ausstehend“ bereitgestellt wird. Die Erstellung der Verbindung dauert einige Minuten. Nachdem sie erstellt wurde, muss die Person, der die Ressource gehört, die Anforderung genehmigen, bevor sie betriebsbereit ist.
Melden Sie sich beim Azure-Portal an, und finden Sie Ihren Suchdienst.
Wählen Sie im linken Navigationsbereich unter Einstellungen die Option Netzwerk aus.
Wählen Sie auf der Seite Gemeinsamer privater Zugriff die Option + Gemeinsamen privaten Zugriff hinzufügen aus.
Wählen Sie entweder Verbindung mit einer Azure-Ressource in meinem Verzeichnis herstellen oder Verbindung mit einer Azure-Ressource nach Ressourcen-ID herstellen aus.
Bei Verwendung der ersten Option (empfohlen) werden Sie vom Azure-Portal bei der Wahl der geeigneten Azure-Ressource unterstützt und es füllt andere Eigenschaften wie die Gruppen-ID der Ressource und den Ressourcentyp aus.
Geben Sie bei Verwendung der zweiten Option die Azure-Ressourcen-ID manuell ein, und wählen Sie aus der Liste am Anfang dieses Artikels die entsprechende Gruppen-ID aus.
Stellen Sie sicher, dass der Bereitstellungsstatus „Aktualisierung läuft“ lautet.
Nachdem die Ressource erfolgreich erstellt wurde, wird der Bereitstellungsstatus der Ressource zu „erfolgreich“ geändert.
Erstellungsworkflow für geteilte private Verbindungen
Bei Erfolg wird die Antwort 202 Accepted
zurückgegeben. Der Prozess der Erstellung eines ausgehenden privaten Endpunkts ist ein zeitintensiver (asynchroner) Vorgang. Er umfasst die Bereitstellung der folgenden Ressourcen:
Ein privater Endpunkt, dem eine private IP-Adresse in einem
"Pending"
-Zustand zugeordnet wurde. Die private IP-Adresse wird aus dem Adressraum abgerufen, der dem virtuellen Netzwerk der Ausführungsumgebung für den suchdienstspezifischen privaten Indexer zugeordnet ist. Nach der Genehmigung des privaten Endpunkts stammt jede Kommunikation von Azure KI Cognitive Search zur Azure-Ressource von der privaten IP-Adresse und einem sicheren privaten Verbindungskanal.Eine private DNS-Zone für den Ressourcentyp, basierend auf der Gruppen-ID. Durch Bereitstellen dieser Ressource stellen Sie sicher, dass bei jedem DNS-Lookup zur privaten Ressource die dem privaten Endpunkt zugeordnete IP-Adresse verwendet wird.
2 – Genehmigen der Verbindung mit einem privaten Endpunkt
Die Genehmigung der privaten Endpunktverbindung wird auf Azure PaaS-Seite erteilt. Die explizite Genehmigung durch den Ressourcenbesitzer ist erforderlich. Die folgenden Schritte behandeln die Genehmigung über das Azure-Portal, hier sind jedoch einige Links zum programmgesteuerten Genehmigen der Verbindung auf der Azure PaaS-Seite:
- Verwenden Sie in Azure Storage private Endpunktverbindungen-Put
- Verwenden Sie in Azure Cosmos DB private Endpunktverbindungen – Erstellen oder Aktualisieren
- Verwenden Sie in Azure OpenAI Verbindungen mit privaten Endpunkten: Erstellen oder aktualisieren
Führen Sie im Azure-Portal folgende Schritte aus:
Öffnen Sie im Azure-Portal die Seite Netzwerk der Azure PaaS-Ressource.text
Suchen Sie nach dem Abschnitt, in dem die Verbindungen mit privaten Endpunkten aufgeführt sind. Im Folgenden finden Sie ein Beispiel für ein Speicherkonto.
Wählen Sie die Verbindung und dann wählen Sie dannGenehmigen aus. Es kann einige Minuten dauern, bis der Status im Azure-Portal aktualisiert wird.
Nachdem der private Endpunkt genehmigt wurde, erstellt Azure KI Cognitive Search die erforderlichen DNS-Zonenzuordnungen in der dafür erstellten DNS-Zone.
Obwohl der private Endpunktlink auf der Seite Netzwerk aktiv ist, wird er nicht aufgelöst.
Wenn Sie den Link auswählen, wird ein Fehler erzeugt. Es wird eine Statusmeldung von "The access token is from the wrong issuer"
und must match the tenant associated with this subscription
angezeigt, da die private Back-End-Endpunktressource auf einem von Microsoft verwalteten Mandanten von Microsoft bereitgestellt wird, während sich die verknüpfte Ressource (Azure KI-Suche) auf Ihrem Mandanten befindet. Es ist beabsichtigt, dass Sie nicht auf die Ressource des privaten Endpunkts zugreifen können, indem Sie den Link zur Verbindung mit dem privaten Endpunkt auswählen.
Folgen Sie den Anweisungen im nächsten Abschnitt, um den Status des freigegebenen privaten Links zu überprüfen.
3 – Überprüfen des Status der geteilten privaten Verbindung
Auf der Seite der Azure KI-Suche können Sie die Genehmigung bestätigen, indem Sie die Seite „Freigegebener privater Zugriff“ der Seite Netzwerk des Suchdienstes überarbeiten. Der Verbindungsstatus sollte „Genehmigt“ lauten.
Alternativ können Sie den Verbindungsstatus auch mithilfe von Freigegebene Private Link-Ressourcen – Abrufen abrufen.
az rest --method get --uri https://management.azure.com/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/contoso/providers/Microsoft.Search/searchServices/contoso-search/sharedPrivateLinkResources/blob-pe?api-version=2024-07-01
Dadurch wird JSON-Code zurückgegeben, bei dem der Verbindungsstatus im Abschnitt „Eigenschaften“ als „Status“ angezeigt wird. Im Folgenden finden Sie ein Beispiel für ein Speicherkonto.
{
"name": "blob-pe",
"properties": {
"privateLinkResourceId": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/contoso/providers/Microsoft.Storage/storageAccounts/contoso-storage",
"groupId": "blob",
"requestMessage": "please approve",
"status": "Approved",
"resourceRegion": null,
"provisioningState": "Succeeded"
}
}
Wenn der „Bereitstellungsstatus“ (properties.provisioningState
) der Ressource „Erfolgreich“ und der Verbindungsstatus (properties.status
) „Genehmigt“ lautet, bedeutet dies, dass die geteilte private Verbindungsressource funktionsfähig ist und der Indexer so konfiguriert werden kann, dass er über den privaten Endpunkt kommuniziert.
4 – Konfigurieren der Indexerausführung in der privaten Umgebung
Die Indexerausführung erfolgt entweder in einer privaten suchdienstspezifischen Umgebung oder in einer Umgebung mit mehreren Mandanten, die intern verwendet wird, um die aufwendige Skillsetverarbeitung für mehrere Kunden und Kundinnen auszulagern.
Die Ausführungsumgebung ist transparent. Sobald Sie jedoch mit der Erstellung von Firewallregeln oder der Herstellung privater Verbindungen beginnen, müssen Sie die Indexerausführung berücksichtigen. Konfigurieren Sie für eine private Verbindung die Indexerausführung so, dass er immer in der privaten Umgebung ausgeführt wird.
Im folgenden Schritt wird gezeigt, wie Sie den Indexer mithilfe der REST-API für die Ausführung in der privaten Umgebung konfigurieren. Sie können die Ausführungsumgebung auch mit dem JSON-Editor im Azure-Portal festlegen.
Hinweis
Sie können diesen Schritt vor der Genehmigung der privaten Endpunktverbindung ausführen. Bis zur Genehmigung der privaten Endpunktverbindung tritt jedoch für jeden vorhandenen Indexer, der mit einer sicheren Ressource (z. B. dem Speicherkonto) kommunizieren möchte, ein vorübergehender Fehler auf, und es können keine neuen Indexer erstellt werden.
Erstellen Sie die Datenquellendefinition, den Index und das Skillset (wenn Sie eine verwenden) wie gewohnt. In keiner dieser Definitionen gibt es Eigenschaften, die sich bei Verwendung eines freigegebenen privaten Endpunkts ändern.
Erstellen Sie einen Indexer, der auf die Datenquelle, den Index und das Skillset verweist, die Sie im vorhergehenden Schritt erstellt haben. Erzwingen Sie außerdem durch Festlegen der Indexerkonfigurationseigenschaft
executionEnvironment
aufprivate
, dass der Indexer in der privaten Ausführungsumgebung ausgeführt wird.{ "name": "indexer", "dataSourceName": "blob-datasource", "targetIndexName": "index", "parameters": { "configuration": { "executionEnvironment": "private" } }, "fieldMappings": [] }
Nachdem der Indexer erfolgreich erstellt wurde, sollte er sich über die private Endpunktverbindung mit der Azure-Ressource verbinden. Sie können den Status des Indexers mithilfe der Indexer-Status-API überwachen.
Hinweis
Wenn Sie bereits Indexer haben, können Sie sie über die PUT-API aktualisieren, indem Sie die Eigenschaft executionEnvironment
auf private
festlegen oder den JSON-Editor im Arzure-Portal verwenden.
5 – Testen der geteilten privaten Verbindung
Wenn Sie dies noch nicht getan haben, stellen Sie sicher, dass Ihre Azure PaaS-Ressource Verbindungen aus dem öffentlichen Internet ablehnt. Wenn Verbindungen akzeptiert werden, überprüfen Sie die DNS-Einstellungen auf der Seite Netzwerk Ihrer Azure PaaS-Ressource.
Wählen Sie ein Tool aus, das ein ausgehendes Anforderungsszenario aufrufen kann, z. B. eine Indexerverbindung mit einem privaten Endpunkt. Eine einfache Wahl ist die Verwendung des Assistenten für das Importieren von Daten. Sie können aber auch einen REST-Client und REST-APIs ausprobieren, um eine größere Genauigkeit zu erzielen. Vorausgesetzt, Ihr Suchdienst ist nicht ebenfalls für eine private Verbindung konfiguriert, kann die REST-Clientverbindung zur Suche über das öffentliche Internet erfolgen.
Legen Sie die Verbindungszeichenfolge auf die private Azure PaaS-Ressource fest. Das Format der Verbindungszeichenfolge ändert sich nicht für geteilte private Verbindungen. Der Suchdienst ruft die geteilte private Verbindung intern auf.
Bei Indexerworkloads befindet sich die Verbindungszeichenfolge in der Datenquellendefinition. Ein Beispiel für eine Datenquelle könnte wie folgt aussehen:
{ "name": "my-blob-ds", "type": "azureblob", "subtype": null, "credentials": { "connectionString": "DefaultEndpointsProtocol=https;AccountName=<YOUR-STORAGE-ACCOUNT>;AccountKey=..." }
Denken Sie bei Indexerworkloads daran, die Ausführungsumgebung in der Indexerdefinition festzulegen. Ein Beispiel für eine Indexerdefinition könnte wie folgt aussehen:
"name": "indexer", "dataSourceName": "my-blob-ds", "targetIndexName": "my-index", "parameters": { "configuration": { "executionEnvironment": "private" } }, "fieldMappings": [] }
Führen Sie den Indexer aus. Wenn die Indexerausführung erfolgreich ausgeführt wird und der Suchindex aufgefüllt wird, funktioniert die geteilte private Verbindung.
Problembehandlung
Falls bei der Indexererstellung ein Fehler mit dem Hinweis auftritt, dass die Anmeldeinformationen für die Datenquelle ungültig sind, überprüfen Sie vor dem Debuggen der Verbindung zunächst den Genehmigungsstatus der geteilten privaten Verbindung. Sollte der Status
Approved
lauten, überprüfen Sie die Eigenschaftproperties.provisioningState
. Hat sie den WertIncomplete
, liegt möglicherweise ein Problem mit zugrunde liegenden Abhängigkeiten vor. Geben Sie in diesem Fall die AnforderungPUT
erneut aus, um die freigegebene private Verbindung erneut zu erstellen. Unter Umständen muss auch der Genehmigungsschritt wiederholt werden.Wenn bei Indexern konsistent oder zeitweilig Fehler auftreten, überprüfen Sie die Eigenschaft
executionEnvironment
des Indexers. Der Wert sollte aufprivate
festgelegt sein. Wenn Sie diese Eigenschaft nicht festgelegt haben und Indexerausführungen in der Vergangenheit erfolgreich waren, liegt das daran, dass vom Suchdienst eigenständig eine private Umgebung verwendet wurde. Die Verarbeitung wird von einem Suchdienst aus der Umgebung mit mehreren Mandanten ausgelagert, wenn das System ausgelastet ist.Sollte beim Erstellen einer freigegebenen privaten Verbindung eine Fehlermeldung angezeigt werden, vergewissern Sie sich anhand der Dienstgrenzwerte, dass Sie das Kontingent für Ihren Tarif nicht überschritten haben.
Nächste Schritte
Erfahren Sie mehr über private Endpunkte und weitere sichere Verbindungsmethoden: