Stabilire connessioni in uscita tramite un collegamento privato condiviso

Questo articolo illustra come configurare chiamate private e in uscita da Ricerca di intelligenza artificiale di Azure a una risorsa PaaS di Azure eseguita all'interno di una rete virtuale.

La configurazione di una connessione privata consente a un servizio di ricerca di connettersi a un indirizzo IP di rete virtuale anziché a una porta aperta a Internet. L'oggetto creato per la connessione è denominato collegamento privato condiviso. Nella connessione, il servizio di ricerca usa internamente il collegamento privato condiviso per raggiungere una risorsa PaaS di Azure all'interno del limite di rete.

Il collegamento privato condiviso è una funzionalità Premium fatturata in base all'utilizzo. Quando si configura un collegamento privato condiviso, gli addebiti per l'endpoint privato vengono aggiunti alla fattura di Azure. Quando si usa il collegamento privato condiviso, vengono fatturate anche le tariffe di trasferimento dei dati per l'accesso in ingresso e in uscita. Per informazioni dettagliate, vedere prezzi collegamento privato di Azure.

Nota

Se si sta configurando una connessione dell'indicizzatore privato a un Istanza gestita di SQL, vedere invece questo articolo.

Ricerca di intelligenza artificiale di Azure effettua chiamate in uscita ad altre risorse PaaS di Azure negli scenari seguenti:

  • L'indicizzatore o il motore di ricerca si connette ad Azure OpenAI per incorporamenti da testo a vettore
  • L'indicizzatore si connette alle origini dati supportate
  • Connessioni dell'indicizzatore (set di competenze) a Archiviazione di Azure per l'arricchimento nella cache, lo sate della sessione di debug o la scrittura in un archivio conoscenze
  • Richieste di chiavi di crittografia ad Azure Key Vault
  • Richieste di competenze personalizzate per Funzioni di Azure o risorsa simile

I collegamenti privati condivisi funzionano solo per le connessioni da Azure ad Azure. Se ci si connette a OpenAI o a un altro modello esterno, la connessione deve trovarsi su Internet pubblico.

I collegamenti privati condivisi sono destinati alle operazioni e ai dati a cui si accede tramite un endpoint privato per le risorse di Azure o i client eseguiti in una rete virtuale di Azure.

Un collegamento privato condiviso è:

  • Creato con gli strumenti, le API o gli SDK di Ricerca intelligenza artificiale di Azure
  • Approvato dal proprietario della risorsa PaaS di Azure
  • Usato internamente da Ricerca di intelligenza artificiale di Azure in una connessione privata a una risorsa di Azure specifica

Solo il servizio di ricerca può usare i collegamenti privati creati e nel servizio può essere creato un solo collegamento privato condiviso per ogni combinazione di risorsa e sottorisorsa.

Dopo aver configurato il collegamento privato, viene usato automaticamente ogni volta che il servizio di ricerca si connette a tale risorsa PaaS. Non è necessario modificare il stringa di connessione o modificare il client usato per inviare le richieste, anche se il dispositivo usato per la connessione deve connettersi usando un indirizzo IP autorizzato nel firewall della risorsa PaaS di Azure.

Esistono due scenari per l'uso di collegamento privato di Azure e Ricerca di intelligenza artificiale di Azure insieme.

  • Scenario uno: creare un collegamento privato condiviso quando una connessione in uscita (indicizzatore) ad Azure PaaS richiede una connessione privata.

  • Scenario due: configurare la ricerca di una connessione in ingresso privata dai client eseguiti in una rete virtuale.

Lo scenario 1 è illustrato in questo articolo.

Sebbene entrambi gli scenari abbiano una dipendenza da collegamento privato di Azure, sono indipendenti. È possibile creare un collegamento privato condiviso senza dover configurare il proprio servizio di ricerca per un endpoint privato.

Limiti

Quando si valutano collegamenti privati condivisi per lo scenario, tenere presente questi vincoli.

  • Diversi tipi di risorse usati in un collegamento privato condiviso sono disponibili in anteprima. Se ci si connette a una risorsa di anteprima (Database di Azure per MySQL, Funzioni di Azure o Istanza gestita di SQL di Azure), usare una versione di anteprima dell'API REST di gestione per creare il collegamento privato condiviso. Queste versioni includono 2020-08-01-preview, 2021-04-01-previewe 2024-03-01-preview.

  • L'esecuzione dell'indicizzatore deve usare l'ambiente di esecuzione privato specifico del servizio di ricerca. Le connessioni endpoint private non sono supportate dall'ambiente multi-tenant. L'impostazione di configurazione per questo requisito è descritta in questo articolo.

Prerequisiti

  • Ricerca di intelligenza artificiale di Azure al livello Basic o superiore. Se si usano set di competenze e arricchimento tramite intelligenza artificiale, il livello deve essere Standard 2 (S2) o versione successiva. Per informazioni dettagliate, vedere Limiti del servizio.

  • Una risorsa PaaS di Azure nell'elenco seguente di tipi di risorse supportati, configurata per l'esecuzione in una rete virtuale.

  • Autorizzazioni sia per Ricerca di intelligenza artificiale di Azure che per l'origine dati:

    • Nella risorsa PaaS di Azure è necessario disporre dell'autorizzazione per approvare le connessioni dell'endpoint privato. Ad esempio, se si usa un account Archiviazione di Azure come origine dati ,ad esempio contenitore BLOB, File di Azure condivisione, tabella di Azure, è necessario Microsoft.Storage/storageAccounts/privateEndpointConnectionsApproval/action.

    • Nel servizio di ricerca è necessario disporre delle autorizzazioni di lettura e scrittura per le risorse di collegamento privato condivise e gli stati dell'operazione di lettura:

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

Tipi di risorsa supportati

È possibile creare un collegamento privato condiviso per le risorse seguenti.

Tipo di risorsa Sottorisorsa (o ID gruppo)
Microsoft. Archiviazione/storageAccounts 1 blob, table, dfsfile
Microsoft.DocumentDB/databaseAccounts 2 Sql
Microsoft.Sql/servers sqlServer
Microsoft.KeyVault/vaults vault
Microsoft.DBforMySQL/servers (anteprima) mysqlServer
Microsoft.Web/sites (anteprima) 3 sites
Microsoft.Sql/managedInstances (anteprima) 4 managedInstance
Microsoft.CognitiveServices/accounts (anteprima) 5 openai_account

1 Se Archiviazione di Azure e Ricerca di intelligenza artificiale di Azure si trovano nella stessa area, la connessione all'archiviazione viene stabilita tramite la rete backbone Microsoft, il che significa che un collegamento privato condiviso è ridondante per questa configurazione. Tuttavia, se è già stato configurato un endpoint privato per Archiviazione di Azure, è necessario configurare anche un collegamento privato condiviso o la connessione viene rifiutata sul lato di archiviazione. Inoltre, se si usano più formati di archiviazione per vari scenari di ricerca, assicurarsi di creare un collegamento privato condiviso separato per ogni sottorisorsa.

2 Il Microsoft.DocumentDB/databaseAccounts tipo di risorsa viene usato per le connessioni dell'indicizzatore ad Azure Cosmos DB per NoSQL. Il nome del provider e l'ID gruppo fanno distinzione tra maiuscole e minuscole.

3 Il Microsoft.Web/sites tipo di risorsa viene usato per il servizio app e le funzioni di Azure. Nel contesto di Ricerca di intelligenza artificiale di Azure, una funzione di Azure è lo scenario più probabile. Una funzione di Azure viene comunemente usata per ospitare la logica di una competenza personalizzata. La funzione di Azure include piani di hosting a consumo, Premium e dedicato servizio app. Il ambiente del servizio app (A edizione Standard) e il servizio Azure Kubernetes (servizio Azure Kubernetes) non sono attualmente supportati.

4 Per istruzioni, vedere Creare un collegamento privato condiviso per un Istanza gestita di SQL.

5 Il Microsoft.CognitiveServices/accounts tipo di risorsa viene usato per le connessioni dell'indicizzatore ad Azure OpenAI quando si implementa la vettorializzazione integrata.

Usare la portale di Azure, l'API REST di gestione, l'interfaccia della riga di comando di Azure o Azure PowerShell per creare un collegamento privato condiviso.

Di seguito sono riportati alcuni suggerimenti:

  • Assegnare un nome significativo al collegamento privato. Nella risorsa PaaS di Azure viene visualizzato un collegamento privato condiviso insieme ad altri endpoint privati. Un nome come "shared-private-link-for-search" può ricordare come viene usato.

Quando si completano i passaggi di questa sezione, si dispone di un collegamento privato condiviso di cui è stato effettuato il provisioning in uno stato in sospeso. La creazione del collegamento richiede alcuni minuti. Dopo la creazione, il proprietario della risorsa deve approvare la richiesta prima che sia operativa.

  1. Accedere al portale di Azure e trovare il servizio di ricerca.

  2. In Impostazioni nel riquadro di spostamento a sinistra selezionare Rete.

  3. Nella pagina Accesso privato condiviso selezionare + Aggiungi accesso privato condiviso.

  4. Selezionare Connessione a una risorsa di Azure nella directory o Connessione a una risorsa di Azure in base all'ID risorsa.

  5. Se si seleziona la prima opzione (scelta consigliata), il portale consente di selezionare la risorsa di Azure appropriata e di compilare altre proprietà, ad esempio l'ID gruppo della risorsa e il tipo di risorsa.

    Screenshot della pagina Aggiungi accesso privato condiviso, che mostra un'esperienza guidata per la creazione di una risorsa di collegamento privato condiviso.

  6. Se si seleziona la seconda opzione, immettere manualmente l'ID risorsa di Azure e scegliere l'ID gruppo appropriato dall'elenco all'inizio di questo articolo.

    Screenshot della pagina Aggiungi accesso privato condiviso, che mostra l'esperienza manuale per la creazione di una risorsa di collegamento privato condiviso.

  7. Verificare che lo stato del provisioning sia "Aggiornamento".

    Screenshot della pagina Aggiungi accesso privato condiviso, che mostra la creazione della risorsa in corso.

  8. Dopo aver creato la risorsa, lo stato di provisioning della risorsa viene modificato in "Succeeded".

    Screenshot della pagina Aggiungi accesso privato condiviso che mostra la creazione della risorsa completata.

Viene restituita una 202 Accepted risposta in caso di esito positivo. Il processo di creazione di un endpoint privato in uscita è un'operazione a esecuzione prolungata (asincrona). Comporta la distribuzione delle risorse seguenti:

  • Endpoint privato, allocato con un indirizzo IP privato in uno "Pending" stato. L'indirizzo IP privato viene ottenuto dallo spazio indirizzi allocato alla rete virtuale dell'ambiente di esecuzione per l'indicizzatore privato specifico del servizio di ricerca. Dopo l'approvazione dell'endpoint privato, qualsiasi comunicazione da Ricerca di intelligenza artificiale di Azure alla risorsa di Azure proviene dall'indirizzo IP privato e da un canale di collegamento privato sicuro.

  • Zona DNS privata per il tipo di risorsa, in base all'ID gruppo. Distribuendo questa risorsa, assicurarsi che qualsiasi ricerca DNS nella risorsa privata usi l'indirizzo IP associato all'endpoint privato.

2 - Approvare la connessione all'endpoint privato

L'approvazione della connessione all'endpoint privato viene concessa sul lato PaaS di Azure. È necessaria l'approvazione esplicita da parte del proprietario della risorsa. I passaggi seguenti illustrano l'approvazione usando il portale di Azure, ma ecco alcuni collegamenti per approvare la connessione a livello di codice dal lato PaaS di Azure:

Usando il portale di Azure, seguire questa procedura:

  1. Aprire la pagina Rete della risorsa PaaS di Azure.Testo

  2. Trovare la sezione in cui sono elencate le connessioni dell'endpoint privato. L'esempio seguente è relativo a un account di archiviazione.

    Screenshot del portale di Azure, che mostra il riquadro Connessioni endpoint privato.

  3. Selezionare la connessione e quindi approva. L'aggiornamento dello stato nel portale può richiedere alcuni minuti.

    Screenshot del portale di Azure, che mostra lo stato Approvato nel riquadro Connessioni endpoint privato.

Dopo l'approvazione dell'endpoint privato, Ricerca di intelligenza artificiale di Azure crea i mapping di zona DNS necessari nella zona DNS creata.

Anche se il collegamento all'endpoint privato nella pagina Rete è attivo, non verrà risolto.

Screenshot del collegamento all'endpoint privato nella pagina Rete PaaS di Azure.

La selezione del collegamento genera un errore. Viene visualizzato un messaggio di stato di "The access token is from the wrong issuer" e must match the tenant associated with this subscription perché viene effettuato il provisioning della risorsa endpoint privato back-end da Microsoft in un tenant gestito da Microsoft, mentre la risorsa collegata (Ricerca intelligenza artificiale di Azure) si trova nel tenant. Per impostazione predefinita, non è possibile accedere alla risorsa endpoint privato selezionando il collegamento di connessione all'endpoint privato.

Seguire le istruzioni nella sezione successiva per controllare lo stato del collegamento privato condiviso.

Sul lato Ricerca intelligenza artificiale di Azure è possibile confermare l'approvazione della richiesta rivedendo la pagina Accesso privato condiviso della pagina Rete del servizio di ricerca. Connessione lo stato deve essere approvato.

Screenshot della portale di Azure, che mostra una risorsa collegamento privato condiviso approvata.

In alternativa, è anche possibile ottenere lo stato della connessione usando l'API GET Shared collegamento privato.

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

Verrà restituito un codice JSON, in cui lo stato della connessione viene visualizzato come "status" nella sezione "properties". Di seguito è riportato un esempio per un account di archiviazione.

{
      "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"
      }
}

Se lo stato di provisioning (properties.provisioningState) della risorsa è "Succeeded" e connection state(properties.status) è "Approvato", significa che la risorsa collegamento privato condiviso è funzionale e l'indicizzatore può essere configurato per comunicare tramite l'endpoint privato.

4 - Configurare l'indicizzatore per l'esecuzione nell'ambiente privato

L'esecuzione dell'indicizzatore si verifica in un ambiente privato specifico del servizio di ricerca o in un ambiente multi-tenant usato internamente per eseguire l'offload di costose elaborazioni del set di competenze per più clienti.

L'ambiente di esecuzione è trasparente, ma dopo aver iniziato a creare regole del firewall o stabilire connessioni private, è necessario tenere conto dell'esecuzione dell'indicizzatore. Per una connessione privata, configurare l'esecuzione dell'indicizzatore per l'esecuzione sempre nell'ambiente privato.

Questo passaggio illustra come configurare l'indicizzatore per l'esecuzione nell'ambiente privato usando l'API REST. È anche possibile impostare l'ambiente di esecuzione usando l'editor JSON nel portale.

Nota

È possibile eseguire questo passaggio prima dell'approvazione della connessione all'endpoint privato. Tuttavia, finché la connessione all'endpoint privato non viene visualizzata come approvata, qualsiasi indicizzatore esistente che tenta di comunicare con una risorsa sicura (ad esempio l'account di archiviazione) finirà in uno stato di errore temporaneo e non verranno creati nuovi indicizzatori.

  1. Creare la definizione, l'indice e il set di competenze dell'origine dati (se ne usi uno) come normalmente. Non esistono proprietà in nessuna di queste definizioni che variano quando si usa un endpoint privato condiviso.

  2. Creare un indicizzatore che punti all'origine dati, all'indice e al set di competenze creato nel passaggio precedente. Forzare inoltre l'esecuzione dell'indicizzatore nell'ambiente di esecuzione privato impostando la proprietà di configurazione dell'indicizzatore executionEnvironment su private.

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

Dopo aver creato correttamente l'indicizzatore, deve connettersi alla risorsa di Azure tramite la connessione all'endpoint privato. È possibile monitorare lo stato dell'indicizzatore usando l'API Stato dell'indicizzatore.

Nota

Se sono già presenti indicizzatori, è possibile aggiornarli tramite l'API PUT impostando su executionEnvironmentprivate o usando l'editor JSON nel portale.

  1. Se non è già stato fatto, verificare che la risorsa PaaS di Azure rifiuti le connessioni dalla rete Internet pubblica. Se le connessioni vengono accettate, esaminare le impostazioni DNS nella pagina Rete della risorsa PaaS di Azure.

  2. Scegliere uno strumento in grado di richiamare uno scenario di richiesta in uscita, ad esempio una connessione dell'indicizzatore a un endpoint privato. Una scelta semplice consiste nell'usare la procedura guidata Importa dati , ma è anche possibile provare un client REST e le API REST per una maggiore precisione. Supponendo che il servizio di ricerca non sia configurato anche per una connessione privata, la connessione client REST da cercare può essere tramite Internet pubblico.

  3. Impostare il stringa di connessione sulla risorsa PaaS di Azure privata. Il formato del stringa di connessione non cambia per il collegamento privato condiviso. Il servizio di ricerca richiama internamente il collegamento privato condiviso.

    Per i carichi di lavoro dell'indicizzatore, il stringa di connessione si trova nella definizione dell'origine dati. Un esempio di origine dati potrebbe essere simile al seguente:

     {
       "name": "my-blob-ds",
       "type": "azureblob",
       "subtype": null,
       "credentials": {
         "connectionString": "DefaultEndpointsProtocol=https;AccountName=<YOUR-STORAGE-ACCOUNT>;AccountKey=..."
       }
    
  4. Per i carichi di lavoro dell'indicizzatore, ricordarsi di impostare l'ambiente di esecuzione nella definizione dell'indicizzatore. Un esempio di definizione dell'indicizzatore potrebbe essere simile al seguente:

    "name": "indexer",
    "dataSourceName": "my-blob-ds",
    "targetIndexName": "my-index",
    "parameters": {
       "configuration": {
           "executionEnvironment": "private"
           }
       },
    "fieldMappings": []
    }
    
  5. Eseguire l'indicizzatore. Se l'esecuzione dell'indicizzatore ha esito positivo e l'indice di ricerca viene popolato, il collegamento privato condiviso funziona.

Risoluzione dei problemi

  • Se la creazione dell'indicizzatore non riesce con "Le credenziali dell'origine dati non sono valide", controllare lo stato di approvazione del collegamento privato condiviso prima di eseguire il debug della connessione. Se lo stato è Approved, controllare la properties.provisioningState proprietà . Se è Incomplete, potrebbe verificarsi un problema con le dipendenze sottostanti. In questo caso, eseguire nuovamente la PUT richiesta di ricreare il collegamento privato condiviso. Potrebbe anche essere necessario ripetere il passaggio di approvazione.

  • Se gli indicizzatori hanno esito negativo in modo coerente o intermittente, controllare la proprietà sull'indicizzatore.executionEnvironment Il valore deve essere impostato su private. Se questa proprietà non è stata impostata e l'indicizzatore ha avuto esito positivo in passato, è perché il servizio di ricerca ha usato un ambiente privato a proprio accordo. Un servizio di ricerca sposta l'elaborazione dall'ambiente standard se il sistema è sotto carico.

  • Se viene visualizzato un errore durante la creazione di un collegamento privato condiviso, controllare i limiti del servizio per verificare di essere sotto la quota per il livello.

Passaggi successivi

Altre informazioni sugli endpoint privati e altri metodi di connessione sicura: