Configurare la connettività in uscita privata

Importante

Questa serie di esercitazioni usa l'API REST 2026-08-01-preview per il recupero agentico. La 2026-08-01-preview è concessa in licenza all'utente come parte del proprio abbonamento Azure ed è soggetta alle condizioni applicabili alle "Anteprime" nei Microsoft Product Terms, nel Microsoft Products and Services Data Protection Addendum ("DPA") e nelle Condizioni supplementari per l'uso delle anteprime di Microsoft Azure.

Questo articolo è la seconda parte di una serie di esercitazioni in tre parti. In questa parte dell'esercitazione vengono creati collegamenti privati condivisi in uscita da Azure AI Search a Archiviazione BLOB di Azure e Microsoft Foundry, si approvano le connessioni endpoint private corrispondenti e si concedono all'identità gestita Azure AI Search i ruoli necessari per leggere il contenuto BLOB e chiamare gli endpoint del modello. La convalida end-to-end del percorso di recupero completo avviene nella terza parte.

Prerequisites

  • Completamento della configurazione della connettività in ingresso privata.

  • Accesso aggiuntivo all'account per le due azioni seguenti:

    • Contributoroppure Owner nel servizio Azure AI Search per creare collegamenti privati condivisi.

    • Contributor oppure Owner nell'account Archiviazione di Azure e nella risorsa Foundry per approvare le connessioni dell'endpoint privato sul lato di destinazione.

    • Owner, User Access Administrator o Role Based Controllo di accesso Administrator negli ambiti in cui si creano assegnazioni di ruolo per concedere al runtime l'accesso all'identità gestita della ricerca.

  • Controllo degli accessi in base al ruolo e un'identità gestita assegnata dal sistema abilitata nel servizio Azure AI Search.

Creare collegamenti privati condivisi in Azure AI Search in modo che il servizio di ricerca possa avviare l'accesso in uscita richiesto a ogni destinazione. Nella terza parte del tutorial, si crea un'origine della conoscenza che legge il contenuto dei BLOB dall'account di archiviazione di Azure e chiama un distribuzione di un modello di embedding sulla risorsa Foundry per vettorizzare tale contenuto. La lettura del blob usa il collegamento privato condiviso di Archiviazione di Azure. Il collegamento privato condiviso Foundry è ancora necessario per la relazione di risorse di destinazione, ma la chiamata di incorporamento in fase di inserimento descritta nella terza parte attualmente si basa anche sul bypass del servizio attendibile della risorsa Foundry.

Tip

Per i comandi applicabili in questo articolo, sostituire i <...-name> segnaposto e <subscription-id> con i nomi delle risorse e l'ID sottoscrizione registrati nella prima parte.

Per creare i collegamenti privati condivisi:

  1. Esaminare i collegamenti privati condivisi esistenti.

    az search shared-private-link-resource list \
      --service-name <search-service-name> \
      --resource-group rg-private-retrieval
    
  2. Creare il collegamento privato condiviso Archiviazione BLOB di Azure.

    az search shared-private-link-resource create \
      --name spl-blob-private-retrieval \
      --service-name <search-service-name> \
      --resource-group rg-private-retrieval \
      --group-id blob \
      --resource-id "/subscriptions/<subscription-id>/resourceGroups/rg-private-retrieval/providers/Microsoft.Storage/storageAccounts/<storage-account-name>" \
      --request-message "Approve private blob access for Azure AI Search"
    
  3. Creare il collegamento privato condiviso della risorsa Foundry.

    az rest --method put \
      --uri "https://management.azure.com/subscriptions/<subscription-id>/resourceGroups/rg-private-retrieval/providers/Microsoft.Search/searchServices/<search-service-name>/sharedPrivateLinkResources/spl-foundry-private-retrieval?api-version=2025-05-01" \
      --body '{
        "properties": {
          "groupId": "openai_account",
          "privateLinkResourceId": "/subscriptions/<subscription-id>/resourceGroups/rg-private-retrieval/providers/Microsoft.CognitiveServices/accounts/<foundry-resource-name>",
         "requestMessage": "Approve private model access for Azure AI Search"
        }
      }'
    

    Note

    • Il az search shared-private-link-resource create comando può rifiutare openai_account, anche quando il servizio di ricerca accetta la risorsa tramite l'API REST di gestione della ricerca. Usare l'approccio az rest illustrato di seguito per evitare errori di convalida.

    • Questo collegamento privato condiviso usa openai_account perché Azure AI Search accede all'inferenza del modello sulla risorsa Foundry tramite il tipo di endpoint Azure OpenAI.

Importante

Lascia abilitata per questa esercitazione l'impostazione Consenti ai servizi Azure presenti nell'elenco dei servizi attendibili di accedere alla risorsa Foundry. Il collegamento privato condiviso openai_account attualmente non esegue la chiamata di incorporamento in fase di inserimento dal servizio di ricerca AI Search di Azure a Foundry. Se si disabilita il bypass del servizio attendibile (networkAcls.bypass = AzureServices), l'acquisizione dell'origine dati di conoscenza può non riuscire con 403 Public access is disabled, anche quando il collegamento privato condiviso e gli endpoint privati sono approvati.

Approvare connessioni endpoint privato

I collegamenti privati condivisi definiscono la finalità, ma le approvazioni lato destinazione stabiliscono i limiti di attendibilità che consentono il flusso del traffico. In questa sezione si approva ogni corrispondente connessione a endpoint privato su Archiviazione di Azure e Foundry per autorizzare l'accesso in uscita.

Per approvare la connessione all'endpoint privato per ogni risorsa di destinazione:

  1. Elencare le connessioni all'endpoint privato in <storage-account-name>e quindi copiare il nome della Pending connessione da usare come <storage-connection-name> nel passaggio successivo.

    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
    
  2. Approva la connessione dell'endpoint privato di Archiviazione BLOB di Azure.

    az network private-endpoint-connection approve \
      --id /subscriptions/<subscription-id>/resourceGroups/rg-private-retrieval/providers/Microsoft.Storage/storageAccounts/<storage-account-name>/privateEndpointConnections/<storage-connection-name>
    
  3. Elencare le connessioni all'endpoint privato in <foundry-resource-name>e quindi copiare il nome della Pending connessione da usare come <foundry-connection-name> nel passaggio successivo.

    La visualizzazione di questa connessione può richiedere un minuto o due dopo aver creato il collegamento privato condiviso, quindi se l'elenco è vuoto, attendere brevemente e quindi eseguire di nuovo il comando.

    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
    
  4. Approvare la connessione all'endpoint privato della risorsa Foundry.

    Se il nome della connessione viene restituito nel <foundry-resource-name>/<connection-name> formato , usare solo la parte dopo la barra come <foundry-connection-name>.

    az network private-endpoint-connection approve \
      --id /subscriptions/<subscription-id>/resourceGroups/rg-private-retrieval/providers/Microsoft.CognitiveServices/accounts/<foundry-resource-name>/privateEndpointConnections/<foundry-connection-name>
    
  5. Verifica che i specifici collegamenti privati condivisi creati in Azure AI Search siano nello stato Approved.

    az search shared-private-link-resource list \
      --service-name <search-service-name> \
      --resource-group rg-private-retrieval \
      --query "[].{name:name,status:properties.status}" \
      -o table
    

    Le righe per spl-blob-private-retrieval e spl-foundry-private-retrieval devono visualizzare Approved.

Assegnare ruoli di identità gestita

Dopo aver approvato i collegamenti privati, assegna i ruoli RBAC all'identità gestita di Azure AI Search in modo che le chiamate di runtime nella parte tre dell'esercitazione possano accedere al contenuto dei BLOB e agli endpoint del modello. Il networking privato controlla l'accesso al percorso di rete, mentre RBAC gestisce le autorizzazioni per i dati e il modello.

Per assegnare ruoli all'identità gestita Azure AI Search:

  1. Ottenere l'ID oggetto dell'identità gestita di Azure AI Search da usare come <search-mi-object-id> nei comandi seguenti.

    az search service show \
      --name <search-service-name> \
      --resource-group rg-private-retrieval \
      --query identity.principalId \
      -o tsv
    
  2. Assegnare il ruolo Storage Blob Data Reader all'identità gestita del servizio di ricerca AI Search di Azure a livello dell'account di archiviazione.

    Questo ruolo è obbligatorio per consentire Azure AI Search di leggere il contenuto del BLOB durante l'inserimento e il recupero.

    az role assignment create \
      --assignee-object-id <search-mi-object-id> \
      --assignee-principal-type ServicePrincipal \
      --role "Storage Blob Data Reader" \
      --scope "/subscriptions/<subscription-id>/resourceGroups/rg-private-retrieval/providers/Microsoft.Storage/storageAccounts/<storage-account-name>"
    
  3. Assegnare il ruolo Cognitive Services User all'identità gestita del servizio di ricerca AI Search di Azure a livello della risorsa Foundry.

    Questo ruolo è necessario in modo che Azure AI Search possa chiamare endpoint di inferenza del modello nella risorsa Foundry.

    az role assignment create \
      --assignee-object-id <search-mi-object-id> \
      --assignee-principal-type ServicePrincipal \
      --role "Cognitive Services User" \
      --scope "/subscriptions/<subscription-id>/resourceGroups/rg-private-retrieval/providers/Microsoft.CognitiveServices/accounts/<foundry-resource-name>"
    
  4. Verificare che entrambe le assegnazioni di ruolo siano state create correttamente.

    az role assignment list \
      --assignee-object-id <search-mi-object-id> \
      --query "[].{role:roleDefinitionName,scope:scope}" \
      -o table
    

    Dovresti vedere i ruoli Storage Blob Data Reader e Cognitive Services User elencati.

Risoluzione dei problemi

Il recupero privato outbound funziona solo quando la creazione del collegamento privato condiviso, l'approvazione della destinazione e l'autorizzazione RBAC sono allineati. Usare la tabella seguente per isolare il livello di controllo che ha esito negativo in modo da poter correggere il limite di dipendenza specifico prima della convalida end-to-end.

Controllo o sintomo Problema probabile Operazioni da eseguire successivamente
Lo stato del collegamento privato condiviso rimane Pending La connessione all'endpoint privato non è approvata nella risorsa di destinazione. Approvare la connessione in Archiviazione di Azure o nella risorsa Foundry e quindi controllare nuovamente lo stato del collegamento privato condiviso.
La creazione di collegamenti privati condivisi ha esito negativo ID risorsa, ID gruppo o versione API non corretti. Ricontrollare l'ID della risorsa e l'ID del gruppo. Per il collegamento a Foundry, confermare l'ID del gruppo openai_account e la versione dell'API 2025-05-01.
az role assignment create ha esito negativo con un errore di autorizzazione L'account non dispone dell'autorizzazione per creare assegnazioni di ruolo nell'ambito di destinazione. Verificare che l'account disponga di Owner, User Access Administrator o Role Based Controllo di accesso Administrator nell'account di archiviazione di Azure e negli ambiti della risorsa Foundry.

Learn more

Per altre informazioni sugli argomenti trattati in questa parte dell'esercitazione, vedere gli articoli seguenti:

Passo successivo