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 di Azure.
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 di Collegamento privato di Azure.
Nota
Se si configura una connessione dell'indicizzatore privato a un'istanza gestita di SQL, vedere invece questo articolo per i passaggi specifici del tipo di risorsa.
Quando usare un collegamento privato condiviso
Ricerca di intelligenza artificiale di Azure effettua chiamate in uscita ad altre risorse PaaS di Azure negli scenari seguenti:
- Connessioni dell'indicizzatore o del motore di ricerca ad Azure OpenAI per incorporamenti da testo a vettore
- Connessioni dell'indicizzatore a origini dati supportate
- Connessioni dell'indicizzatore (set di competenze) ad Archiviazione di Azure per l'arricchimento nella cache, lo stato della sessione di debug o la scrittura in un archivio conoscenze
- Richieste di chiavi di crittografia ad Azure Key Vault
- Richieste di competenze personalizzate a Funzioni di Azure o a una 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 la 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 dal 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 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-preview
,2024-03-01-preview
e2024-06-01-preview
. È consigliabile usare l'API di anteprima più recente.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
Solo per la vettorializzazione integrata, le connessioni in uscita tramite collegamento privato condiviso sono supportate in tutti i livelli fatturabili, solo nei servizi creati dopo il 3 aprile 2024 che si trovano nelle aree che offrono una capacità superiore.
Per l'arricchimento tramite intelligenza artificiale, l'elaborazione del set di competenze che non include una competenza di incorporamento e nei servizi creati prima del 3 aprile 2024, Ricerca di intelligenza artificiale di Azure deve essere Standard 2 (S2) o versione successiva.
Per tutti gli altri casi d'uso, che non coinvolgono set di competenze, Ricerca di intelligenza artificiale di Azure può essere Basic o superiore.
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 di archiviazione di Azure come origine dati, ad esempio contenitore BLOB, condivisione file di Azure, 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.Storage/storageAccounts 1 | blob , table , dfs file |
Microsoft.DocumentDB/databaseAccounts 2 | Sql |
Microsoft.Sql/servers 3 | sqlServer |
Microsoft.KeyVault/vaults | vault |
Microsoft.DBforMySQL/servers (anteprima) | mysqlServer |
Microsoft.Web/sites 4 | sites |
Microsoft.Sql/managedInstances (anteprima) 5 | managedInstance |
Microsoft.CognitiveServices/accounts 6 7 | 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 tipo di risorsa Microsoft.DocumentDB/databaseAccounts
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 tipo di risorsa Microsoft.Sql/servers
viene usato per le connessioni al database SQL di Azure. Attualmente non è disponibile alcun supporto per un collegamento privato condiviso ad Azure Synapse SQL.
4 Il tipo di risorsa Microsoft.Web/sites
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 del servizio app A consumo, Premium e Dedicato. L'ambiente del servizio app (ASE), il servizio Azure Kubernetes (AKS) e Gestione API di Azure non sono attualmente supportati.
5 Per istruzioni, vedere Creare un collegamento privato condiviso per un'istanza gestita di SQL.
6 Il tipo di risorsa Microsoft.CognitiveServices/accounts
viene usato per le connessioni vettoriali e indicizzatore ad Azure OpenAI quando si implementa la vettorizzazione integrata. Attualmente non è disponibile alcun supporto per il collegamento privato condiviso per l'incorporamento di modelli nel catalogo dei modelli di Azure AI Studio o per l'API multi-visione artificiale di Azure.
7 Le collegamento privato condivise per Azure OpenAI sono supportate solo nel cloud pubblico. Altre offerte cloud, ad esempio Microsoft Azure per enti pubblici non supportano le collegamento privato condivise per openai_account
l'ID gruppo.
1 - Creare un collegamento privato condiviso
Usare il 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 "link-privato-condiviso-per-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. Una volta creato, il proprietario della risorsa deve approvare la richiesta affinché sia operativa.
Accedere al portale di Azure e trovare il servizio di ricerca.
Nel riquadro di spostamento a sinistra, in Impostazioni selezionare Rete.
Nella pagina accesso privato condiviso selezionare + Aggiungi accesso privato condiviso.
Selezionare Connettersi a una risorsa di Azure nella directory o Connettersi a una risorsa di Azure in base all'ID risorsa.
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.
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.
Verificare che lo stato del provisioning sia "In aggiornamento".
Dopo aver creato la risorsa, lo stato di provisioning della risorsa viene modificato in "Completato".
Flusso di lavoro di creazione di collegamenti privati condivisi
Viene restituita una risposta 202 Accepted
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 stato
"Pending"
. 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 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:
- In Archiviazione di Azure usare le connessioni endpoint private - Put
- In Azure Cosmos DB usare le connessioni endpoint private - Creare o aggiornare
- In Azure OpenAI usare le connessioni endpoint private - Creare o aggiornare
Usando il portale di Azure, seguire questa procedura:
Aprire la pagina Rete della risorsa PaaS di Azure.testo
Trovare la sezione in cui sono elencate le connessioni dell'endpoint privato. L'esempio seguente è relativo a un account di archiviazione.
Selezionare la connessione e quindi Approva. L'aggiornamento dello stato nel portale può richiedere alcuni minuti.
Dopo l'approvazione dell'endpoint privato, Azure AI Search 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.
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.
3 - Controllare lo stato del collegamento privato condiviso
Lato Azure AI Search è possibile confermare l'approvazione della richiesta rivedendo la pagina Accesso privato condiviso della pagina Rete del servizio di ricerca. Lo stato della connessione dovrebbe essere approvato.
In alternativa, è anche possibile ottenere lo stato della connessione usando le risorse collegamento privato condiviso - Ottieni.
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
Verrà restituito un codice JSON, in cui lo stato della connessione viene visualizzato come "status" nella sezione "proprietà". Di seguito è riportato un esempio per un account di archiviazione.
{
"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"
}
}
Se lo stato di provisioning (properties.provisioningState
) della risorsa è "Completato" e lo stato di connessione (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 avviene 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.
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.
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
suprivate
.{ "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 executionEnvironment
su private
o usando l'editor JSON nel portale.
5 - Testare il collegamento privato condiviso
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.
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 a Search può essere eseguita tramite Internet pubblico.
Impostare la stringa di connessione sulla risorsa PaaS di Azure privata. Il formato della 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, la 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=..." }
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": [] }
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 proprietàproperties.provisioningState
. Se èIncomplete
, potrebbe verificarsi un problema con le dipendenze sottostanti. In questo caso, eseguire nuovamente la richiesta diPUT
per 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
executionEnvironment
proprietà sull'indicizzatore. Il valore deve essere impostato suprivate
. 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: