Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Wichtig
Diese Lernprogrammreihe verwendet die REST-API 2026-08-01-Preview für den agentischen Abruf. Die Vorschau 2026-08-01 wird Ihnen als Teil Ihres Azure-Abonnements lizenziert und unterliegt den Bedingungen für "Vorschauen" in den Microsoft Produktbedingungen, dem Microsoft Produkt- und Dienstdatenschutzzusatz ("DPA") und den ergänzenden Nutzungsbedingungen für Microsoft Azure Previews.
Dieser Artikel ist Teil einer dreiteiligen Lernprogrammreihe. In diesem Teil des Tutorials richten Sie eine eingehende private Verbindung von Microsoft Foundry zu Azure KI-Suche ein. Durch das Einrichten dieses privaten Anforderungspfads stellen Sie sicher, dass der spätere Abruf und die Abhängigkeitsvalidierung innerhalb der vorgesehenen Netzwerkgrenze erfolgen.
Voraussetzungen
Ein Azure-Abonnement, für das Ihr Konto auf Abonnement- oder Ressourcengruppenebene über
Contributor- oderOwner-Zugriff verfügt und das für dieses Tutorial verwendet wird.Die folgenden Ressourcenanbieter , die in Ihrem Abonnement registriert sind:
Microsoft.CognitiveServicesMicrosoft.MachineLearningServicesMicrosoft.AppMicrosoft.ContainerServiceMicrosoft.ContainerRegistryMicrosoft.NetworkMicrosoft.SearchMicrosoft.StorageMicrosoft.DocumentDB
Die Azure CLI ist installiert und bei
az loginauthentifiziert.Ein Client im VNet, z. B. eine Jumpbox, ein virtueller Computer, eine Dev Box oder eine über Azure Bastion verbundene Arbeitsstation, der mit dem in Ihrer Bereitstellung verwendeten privaten Netzwerkpfad verbunden ist und Ihre privaten Endpunkte erreichen kann. Sie verwenden diesen Client in Teil 3, um REST-Aufrufe der Datenebene über private Endpunkte auszuführen.
Erstellen eines privaten Netzwerks
Erstellen Sie die Grenzen für das virtuelle Netzwerk, über die privater Datenverkehr zwischen Foundry und Azure KI-Suche geleitet wird. In diesem Abschnitt werden Subnetze für Laufzeit-, private Endpunkte und optionale In-VNet-Testclients definiert.
So erstellen Sie das private Netzwerk:
Erstellen Sie die Ressourcengruppe und das VNet.
az group create \ --name rg-private-retrieval \ --location westus3 az network vnet create \ --resource-group rg-private-retrieval \ --name vnet-private-retrieval \ --location westus3 \ --address-prefixes 10.42.0.0/16Erstellen Sie zwei Subnetze:
agent-subnetfür die Agentlaufzeit undpe-subnetfür private Endpunkte.Wichtig
Die Bereitstellung erfordert, dass
agent-subnetfür diese Umgebung dediziert ist. Wenn das Subnetz bereits von einer anderen Umgebung oder einem anderen Dienst verwendet wird, kann die Bereitstellung fehlschlagen. Verwenden Sie ein neues VNet oder einen neuen, nicht verwendeten Subnetzbereich für jede isolierte Lernprogrammbereitstellung.# Agent runtime subnet az network vnet subnet create \ --resource-group rg-private-retrieval \ --vnet-name vnet-private-retrieval \ --name agent-subnet \ --address-prefixes 10.42.0.0/24 # Private endpoint subnet az network vnet subnet create \ --resource-group rg-private-retrieval \ --vnet-name vnet-private-retrieval \ --name pe-subnet \ --address-prefixes 10.42.1.0/24(Optional) Erstellen Sie ein In-VNet-Subnetz mit dem Namen
mcp-subnet, wenn Sie Workloads innerhalb des VNet platzieren müssen, z. B. Jumpboxes, Validierungs-VMs oder MCP-Hosts. Wenn Sie keine In-VNet-Komponenten benötigen, überspringen Sie diesen Schritt.# In-VNet test subnet az network vnet subnet create \ --resource-group rg-private-retrieval \ --vnet-name vnet-private-retrieval \ --name mcp-subnet \ --address-prefixes 10.42.2.0/24
Bereitstellen der privaten Infrastruktur
Sobald das Netzwerk eingerichtet ist, verwenden Sie das Bereitstellungsartefakt foundry-samples, um die private Infrastruktur (private Dienste, private Endpunkte und private DNS-Zonen) für diese Tutorialreihe zu erstellen.
So stellen Sie die private Infrastruktur bereit:
Rufen Sie Ihre Abonnement-ID ab, um sie in der gesamten Lernreihe als
<subscription-id>zu verwenden.az account show --query id -o tsvLegen Sie die URL der Bereitstellungsvorlage und die vorhandene VNet-Ressourcen-ID fest, die von der Bereitstellung verwendet wird.
templateUri='https://raw.githubusercontent.com/microsoft-foundry/foundry-samples/main/infrastructure/infrastructure-setup-bicep/15-private-network-standard-agent-setup/azuredeploy.json' vnetId='/subscriptions/<subscription-id>/resourceGroups/rg-private-retrieval/providers/Microsoft.Network/virtualNetworks/vnet-private-retrieval'Überprüfen Sie die Bereitstellungskonfiguration.
az deployment group validate \ --resource-group rg-private-retrieval \ --template-uri "$templateUri" \ --parameters \ location='westus3' \ aiServices='private-retrieval' \ firstProjectName='project-private-retrieval' \ displayName='private foundry project' \ projectDescription='Private Foundry plus private Azure AI Search' \ vnetName='vnet-private-retrieval' \ existingVnetResourceId="$vnetId" \ agentSubnetName='agent-subnet' \ peSubnetName='pe-subnet' \ agentSubnetPrefix='10.42.0.0/24' \ peSubnetPrefix='10.42.1.0/24'Wenn Ihr Abonnement eine Richtlinie durchsetzt, die vorschreibt, dass Azure KI-Suche die lokale Authentifizierung deaktiviert, kann diese Beispielbereitstellung bei der Validierung oder Bereitstellung abgelehnt werden. Erstellen Sie in diesem Fall einen kompatiblen Azure KI-Suche Dienst, und verwenden Sie ihn wieder, indem Sie den optionalen
aiSearchResourceIdVorlagenparameter angeben.Ein kompatibler Bring-your-own Suchdienst für dieses Lernprogramm sollte die folgenden Anforderungen erfüllen, bevor Sie die Ressourcen-ID an die Vorlage übergeben:
- Eine unterstützte Region und SKU für den agentischen Abruf.
- Eine vom System zugewiesene verwaltete Identität.
- Rollenbasierter Zugriff für die Datenebene aktiviert.
- Lokale Authentifizierung deaktiviert, wenn durch Richtlinie vorgeschrieben.
- Der Zugriff auf öffentliche Netzwerke ist bei Bedarf durch die Richtlinie deaktiviert.
Beispiel:
az search service create \ --name <search-service-name> \ --resource-group rg-private-retrieval \ --location westus3 \ --sku standard \ --identity-type SystemAssigned \ --disable-local-auth true \ --public-access disabledStellen Sie die privaten Dienste, Endpunkte und DNS-Zonen bereit.
Die Bereitstellung dauert in der Regel 10 bis 20 Minuten, und der Befehl wird erst nach Abschluss zurückgegeben.
az deployment group create \ --name dg-private-retrieval \ --resource-group rg-private-retrieval \ --template-uri "$templateUri" \ --parameters \ location='westus3' \ aiServices='private-retrieval' \ firstProjectName='project-private-retrieval' \ displayName='private foundry project' \ projectDescription='Private Foundry plus private Azure AI Search' \ vnetName='vnet-private-retrieval' \ existingVnetResourceId="$vnetId" \ agentSubnetName='agent-subnet' \ peSubnetName='pe-subnet' \ agentSubnetPrefix='10.42.0.0/24' \ peSubnetPrefix='10.42.1.0/24'Wenn Sie einen vorhandenen Azure KI-Suche Dienst wiederverwenden, um eine Abonnementrichtlinie zu erfüllen, fügen Sie die Bereitstellungsparameter an
aiSearchResourceId='<search-resource-id>'.Vergewissern Sie sich, dass die Bereitstellung die folgenden Ressourcen erstellt hat:
- Foundry-Ressource und Projekt
- Azure KI-Suche-Dienst
- Azure Storage-Konto
- Azure Cosmos DB-Konto
- Azure Container Registry, die die Standard-Agent-Umgebung unterstützt
- Private Endpunkte für die bereitgestellten Ressourcen
- Für die Bereitstellung erforderliche private DNS-Zonen mit Verknüpfungen zu virtuellen Netzwerken
az deployment group show \ --resource-group rg-private-retrieval \ --name dg-private-retrieval \ --query properties.provisioningState \ -o tsvDer Befehl sollte
Succeededzurückgeben. Die genaue Anzahl privater Endpunkte und DNS-Zonen kann sich ändern, wenn sich die Beispielbereitstellung weiterentwickelt. Verwenden Sie daher die Bereitstellungsausgabe als Wahrheitsquelle.Notieren Sie die generierten Ressourcennamen.
Die Bereitstellung fügt ein eindeutiges Suffix an global eindeutige Ressourcen an, um Namenskonflikte zu vermeiden, sodass die bereitgestellten Namen von den Eingabenamen abweichen. Notieren Sie sich jetzt die tatsächlichen Namen. Ersetzen Sie diese in dieser Lernprogrammreihe durch die Platzhalter
<foundry-resource-name>, ,<search-service-name>,<storage-account-name>und<cosmos-account-name>.# Foundry resource name az cognitiveservices account list \ --resource-group rg-private-retrieval \ --query "[?kind=='AIServices'].name | [0]" \ -o tsv # Azure AI Search service name az search service list \ --resource-group rg-private-retrieval \ --query "[0].name" \ -o tsv # Azure Storage account name az storage account list \ --resource-group rg-private-retrieval \ --query "[0].name" \ -o tsv # Azure Cosmos DB account name az cosmosdb list \ --resource-group rg-private-retrieval \ --query "[0].name" \ -o tsv
Überprüfen der privaten Infrastruktur
Die eingehende private Konnektivität hängt von drei Steuerelementen ab, die zusammenarbeiten: Netzwerkexpositionseinstellungen, Status der privaten Endpunktanlage und private DNS-Auflösungspfade. In diesem Abschnitt überprüfen Sie jedes Steuerelement, damit Sie vertrauen können, dass Anforderungen auf private Netzwerkrouten beschränkt sind.
So überprüfen Sie die private Infrastruktur:
Überprüfen Sie, ob der öffentliche Zugriff für alle vier Dienste deaktiviert ist.
# Foundry resource az cognitiveservices account show \ --name <foundry-resource-name> \ --resource-group rg-private-retrieval \ --query 'properties.publicNetworkAccess' # Azure AI Search az search service show \ --name <search-service-name> \ --resource-group rg-private-retrieval \ --query 'publicNetworkAccess' # Azure Storage az storage account show \ --name <storage-account-name> \ --resource-group rg-private-retrieval \ --query 'publicNetworkAccess' # Azure Cosmos DB az cosmosdb show \ --name <cosmos-account-name> \ --resource-group rg-private-retrieval \ --query 'publicNetworkAccess'Jeder Dienst sollte
Disabledzurückgeben.Überprüfen Sie, ob die privaten Endpunktverbindungen für die vier Kerndienste genehmigt wurden.
# Foundry resource az network private-endpoint-connection list \ --id /subscriptions/<subscription-id>/resourceGroups/rg-private-retrieval/providers/Microsoft.CognitiveServices/accounts/<foundry-resource-name> \ --query "[].{name:name,status:properties.privateLinkServiceConnectionState.status}" \ -o table # Azure AI Search az network private-endpoint-connection list \ --id /subscriptions/<subscription-id>/resourceGroups/rg-private-retrieval/providers/Microsoft.Search/searchServices/<search-service-name> \ --query "[].{name:name,status:properties.privateLinkServiceConnectionState.status}" \ -o table # Azure Storage az network private-endpoint-connection list \ --id /subscriptions/<subscription-id>/resourceGroups/rg-private-retrieval/providers/Microsoft.Storage/storageAccounts/<storage-account-name> \ --query "[].{name:name,status:properties.privateLinkServiceConnectionState.status}" \ -o table # Azure Cosmos DB az network private-endpoint-connection list \ --id /subscriptions/<subscription-id>/resourceGroups/rg-private-retrieval/providers/Microsoft.DocumentDB/databaseAccounts/<cosmos-account-name> \ --query "[].{name:name,status:properties.privateLinkServiceConnectionState.status}" \ -o tableJede private Endpunktverbindung sollte einen
ApprovedStatus anzeigen.Überprüfen Sie, ob die erforderlichen privaten DNS-Zonen vorhanden sind und mit dem VNet verknüpft sind.
az network private-dns link vnet list \ --resource-group rg-private-retrieval \ --zone-name privatelink.cognitiveservices.azure.com \ --query "[].name" \ -o table az network private-dns link vnet list \ --resource-group rg-private-retrieval \ --zone-name privatelink.openai.azure.com \ --query "[].name" \ -o table az network private-dns link vnet list \ --resource-group rg-private-retrieval \ --zone-name privatelink.services.ai.azure.com \ --query "[].name" \ -o table az network private-dns link vnet list \ --resource-group rg-private-retrieval \ --zone-name privatelink.search.windows.net \ --query "[].name" \ -o table az network private-dns link vnet list \ --resource-group rg-private-retrieval \ --zone-name privatelink.blob.core.windows.net \ --query "[].name" \ -o table az network private-dns link vnet list \ --resource-group rg-private-retrieval \ --zone-name privatelink.documents.azure.com \ --query "[].name" \ -o tableJeder Befehl sollte einen VNet-Link zurückgeben, der bestätigt, dass die private DNS-Zone mit Ihrem virtuellen Netzwerk verknüpft ist.
Überprüfen der privaten Konnektivität
Nachdem die Netzwerkkonfiguration abgeschlossen ist, überprüfen Sie die Erreichbarkeit, indem Sie die private DNS-Auflösung und die TCP-Konnektivität über Port 443 bestätigen. Sie müssen diese Prüfungen innerhalb des virtuellen Netzwerks ausführen, z. B. auf einer über Azure Bastion verbundenen VM, einer Jumpbox, einer Dev Box oder über einen anderen privaten Zugriffsweg.
Wenn Sie noch keinen In-VNet-Client haben, erstellen Sie einen in (Optional) Fügen Sie einen Linux-Jumpbox hinzu, und fügen Sie Azure Bastion oder (Optional) einen Windows virtuellen Computer und Azure Bastion hinzu, und kehren Sie dann zu diesem Abschnitt zurück.
So überprüfen Sie die private Konnektivität:
Stellen Sie sicher, dass DNS in private IP-Adressen aufgelöst wird.
getent hosts <search-service-name>.search.windows.net getent hosts <foundry-resource-name>.services.ai.azure.com getent hosts <foundry-resource-name>.openai.azure.com getent hosts <storage-account-name>.blob.core.windows.netDiese Endpunkte sollten zu privaten IP-Adressen im Bereich
10.x.x.xaufgelöst werden.Überprüfen Sie die TCP 443-Konnektivität mit den Endpunkten, die in späteren Teilen des Lernprogramms verwendet werden.
timeout 10 bash -c '</dev/tcp/<search-service-name>.search.windows.net/443' && \ echo 'Azure AI Search: OK' || echo 'Azure AI Search: FAILED' timeout 10 bash -c '</dev/tcp/<foundry-resource-name>.services.ai.azure.com/443' && \ echo 'Foundry: OK' || echo 'Foundry: FAILED' timeout 10 bash -c '</dev/tcp/<foundry-resource-name>.openai.azure.com/443' && \ echo 'Foundry OpenAI endpoint: OK' || echo 'Foundry OpenAI endpoint: FAILED' timeout 10 bash -c '</dev/tcp/<storage-account-name>.blob.core.windows.net/443' && \ echo 'Azure Blob Storage: OK' || echo 'Azure Blob Storage: FAILED'Jeder Endpunkt sollte
OKzurückgeben.
(Optional) Eine Linux-Jumpbox und Azure Bastion hinzufügen
Wenn Sie für die Validierung per CLI und REST über private Endpunkte einen Client in einem VNet benötigen, der sich wiederholt verwenden lässt, stellen Sie eine Linux-Jumpbox hinter Azure Bastion bereit.
So konfigurieren Sie dieses Setup:
Stellen Sie sicher, dass
mcp-subnetvorhanden ist. Wenn Sie dieses Subnetz noch nicht erstellt haben, führen Sie den optionalenmcp-subnetSchritt unter Erstellen des privaten Netzwerks aus.Erstellen Sie die Linux-VM-Netzwerkschnittstelle und den virtuellen Computer.
az network nic create \ --resource-group rg-private-retrieval \ --name vm-linux-nic \ --vnet-name vnet-private-retrieval \ --subnet mcp-subnet az vm create \ --resource-group rg-private-retrieval \ --name vm-linux \ --computer-name vm-linux \ --nics vm-linux-nic \ --image Ubuntu2204 \ --authentication-type password \ --admin-username azureuser \ --admin-password <admin-password> \ --size Standard_B2s \ --storage-sku Premium_LRSErstellen Sie das Azure Bastion Subnetz und die öffentliche IP.
az network vnet subnet create \ --resource-group rg-private-retrieval \ --vnet-name vnet-private-retrieval \ --name AzureBastionSubnet \ --address-prefixes 10.42.3.0/26 az network public-ip create \ --resource-group rg-private-retrieval \ --name bastion-pip \ --sku Standard \ --allocation-method StaticStellen Sie Azure Bastion bereit.
az network bastion create \ --resource-group rg-private-retrieval \ --name bastion-private-retrieval \ --public-ip-address bastion-pip \ --vnet-name vnet-private-retrieval
Empfohlener Workflow
Nachdem Sie die Linux-Jumpbox und Azure Bastion eingerichtet haben:
Stellen Sie mithilfe einer interaktiven Shellsitzung eine Verbindung mit der VM über Azure Bastion her.
Führen Sie auf der Linux-VM die DNS-Auflösung und die TCP-443-Konnektivitätsprüfungen aus Validate private connectivity aus, um zu bestätigen, dass der eingehende Kommunikationspfad funktioniert.
Verwenden Sie
az vm run-command invokezur wiederholbaren, nicht interaktiven Validierung beim Automatisieren von Testworkflows.Speichern Sie die VM-Verbindungsdetails, wenn Sie beabsichtigen, Befehle aus dem VNet in späteren Teilen des Lernprogramms zu überprüfen.
(Optional) Hinzufügen eines Windows virtuellen Computers und Azure Bastion
Wenn Sie das browserbasierte Foundry-Portal oder den Agent-Playground über den privaten Pfad testen möchten, stellen Sie eine Windows VM hinter Azure Bastion bereit.
So konfigurieren Sie dieses Setup:
Stellen Sie sicher, dass
mcp-subnetvorhanden ist. Wenn Sie dieses Subnetz noch nicht erstellt haben, führen Sie den optionalenmcp-subnetSchritt unter Erstellen des privaten Netzwerks aus.Erstellen Sie die Windows VM-Netzwerkschnittstelle und den virtuellen Computer.
az network nic create \ --resource-group rg-private-retrieval \ --name vm-windows-nic \ --vnet-name vnet-private-retrieval \ --subnet mcp-subnet az vm create \ --resource-group rg-private-retrieval \ --name vm-windows \ --computer-name vm-windows \ --nics vm-windows-nic \ --image MicrosoftWindowsServer:WindowsServer:2022-datacenter-azure-edition:latest \ --authentication-type password \ --admin-username azureuser \ --admin-password <admin-password> \ --size Standard_B2s \ --public-ip-address "" \ --storage-sku Premium_LRSErstellen Sie das Azure Bastion Subnetz und die öffentliche IP.
az network vnet subnet create \ --resource-group rg-private-retrieval \ --vnet-name vnet-private-retrieval \ --name AzureBastionSubnet \ --address-prefixes 10.42.3.0/26 az network public-ip create \ --resource-group rg-private-retrieval \ --name bastion-pip \ --sku Standard \ --allocation-method StaticStellen Sie Azure Bastion bereit.
az network bastion create \ --resource-group rg-private-retrieval \ --name bastion-private-retrieval \ --public-ip-address bastion-pip \ --vnet-name vnet-private-retrieval
Empfohlener Workflow
Nachdem Sie den Windows virtuellen Computer und Azure Bastion eingerichtet haben:
Öffnen Sie Azure Bastion im Azure-Portal, und stellen Sie mithilfe des Benutzernamens und kennworts, den Sie während der VM-Erstellung festgelegt haben, eine Verbindung mit dem Windows virtuellen Computer her.
Starten Sie in der VM Edge oder Chrome, und überprüfen Sie, ob Sie über den privaten Netzwerkpfad auf das Foundry-Portal zugreifen können. Dadurch wird die Browserkonnektivität über den eingehenden privaten Endpunkt bestätigt.
Speichern Sie die VM-Verbindungsdetails, wenn Sie beabsichtigen, Befehle aus dem VNet in späteren Teilen des Lernprogramms zu überprüfen.
Tipp
Verwenden Sie für Azure Bastion Benutzernamen- und Kennwortanmeldungen sichere Kennwörter, um Fehler beim Kopieren und Einfügen zu vermeiden.
Problembehandlung
Wenn sich der eingehende private Pfad zwischen Foundry und Azure KI-Suche nicht wie erwartet verhält, bestätigen Sie zunächst die DNS-Auflösung, die Genehmigung privater Endpunkte und die TCP 443-Reichweite von einem In-VNet-Client.
| Prüfung oder Symptom | Wahrscheinliches Problem | Nächste Schritte |
|---|---|---|
403 Forbidden |
Die Anforderung erreicht nicht Azure KI-Suche über den beabsichtigten privaten Pfad. | Überprüfen Sie den privaten Pfad vom Client zu Azure KI-Suche, indem Sie die DNS-Auflösung, die TCP 443-Konnektivität und die Genehmigung privater Endpunkte überprüfen. Ein eingeschränkter Suchdienst kann 403 Forbidden zurückgeben, wenn die Anfrage nicht über einen zulässigen Netzwerkpfad erfolgt. |
| Verbindungstimeout | Der Client befindet sich nicht im privaten Pfad, oder die privaten Endpunkte sind nicht erreichbar. | Führen Sie auf dem virtuellen Testcomputer die DNS- und TCP-Überprüfungen von Validate private Konnektivität aus , um zu bestätigen, dass Sie die Dienste über den privaten Pfad erreichen können. |
Learn more
Weitere Informationen zu den Themen, die in diesem Teil des Lernprogramms behandelt werden, finden Sie in den folgenden Artikeln:
- Hinzufügen, Ändern oder Löschen eines Subnetzes
- Erstellen eines privaten Endpunkts für eine sichere Verbindung mit Azure KI-Suche
- Verwalten von privaten Azure-Endpunkten
- Private DNS-Zonenwerte für Azure Private Endpoint
- Herstellen einer Verbindung mit einer Linux-VM mithilfe von SSH mit Azure Bastion
- Herstellen einer Verbindung mit einer Windows VM mithilfe von RDP mit Azure Bastion