Private eingehende Konnektivität einrichten

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- oder Owner-Zugriff verfügt und das für dieses Tutorial verwendet wird.

  • Die folgenden Ressourcenanbieter , die in Ihrem Abonnement registriert sind:

    • Microsoft.CognitiveServices
    • Microsoft.MachineLearningServices
    • Microsoft.App
    • Microsoft.ContainerService
    • Microsoft.ContainerRegistry
    • Microsoft.Network
    • Microsoft.Search
    • Microsoft.Storage
    • Microsoft.DocumentDB
  • Die Azure CLI ist installiert und bei az login authentifiziert.

  • 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:

  1. 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/16
    
  2. Erstellen Sie zwei Subnetze: agent-subnet für die Agentlaufzeit und pe-subnet für private Endpunkte.

    Wichtig

    Die Bereitstellung erfordert, dass agent-subnet fü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
    
  3. (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:

  1. Rufen Sie Ihre Abonnement-ID ab, um sie in der gesamten Lernreihe als <subscription-id> zu verwenden.

    az account show --query id -o tsv
    
  2. Legen 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'
    
  3. Ü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 aiSearchResourceId Vorlagenparameter 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 disabled
    
  4. Stellen 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 anaiSearchResourceId='<search-resource-id>'.

  5. 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 tsv
    

    Der Befehl sollte Succeeded zurückgeben. Die genaue Anzahl privater Endpunkte und DNS-Zonen kann sich ändern, wenn sich die Beispielbereitstellung weiterentwickelt. Verwenden Sie daher die Bereitstellungsausgabe als Wahrheitsquelle.

  6. 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:

  1. Ü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 Disabled zurückgeben.

  2. Ü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 table
    

    Jede private Endpunktverbindung sollte einen Approved Status anzeigen.

  3. Ü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 table
    

    Jeder 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:

  1. 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.net
    

    Diese Endpunkte sollten zu privaten IP-Adressen im Bereich 10.x.x.x aufgelöst werden.

  2. Ü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 OK zurü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:

  1. Stellen Sie sicher, dass mcp-subnet vorhanden ist. Wenn Sie dieses Subnetz noch nicht erstellt haben, führen Sie den optionalen mcp-subnet Schritt unter Erstellen des privaten Netzwerks aus.

  2. 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_LRS
    
  3. Erstellen 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 Static
    
  4. Stellen 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
    

Nachdem Sie die Linux-Jumpbox und Azure Bastion eingerichtet haben:

  1. Stellen Sie mithilfe einer interaktiven Shellsitzung eine Verbindung mit der VM über Azure Bastion her.

  2. 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.

  3. Verwenden Sie az vm run-command invoke zur wiederholbaren, nicht interaktiven Validierung beim Automatisieren von Testworkflows.

  4. 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:

  1. Stellen Sie sicher, dass mcp-subnet vorhanden ist. Wenn Sie dieses Subnetz noch nicht erstellt haben, führen Sie den optionalen mcp-subnet Schritt unter Erstellen des privaten Netzwerks aus.

  2. 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_LRS
    
  3. Erstellen 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 Static
    
  4. Stellen 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
    

Nachdem Sie den Windows virtuellen Computer und Azure Bastion eingerichtet haben:

  1. Ö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.

  2. 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.

  3. 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:

Nächster Schritt