Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
È possibile usare le entità di sicurezza e le assegnazioni di ruolo di Microsoft Entra ID per le connessioni in uscita da Azure AI Search ad altre risorse di Azure che forniscono dati, intelligenza artificiale applicata o vettorizzazione durante l'indicizzazione o le query.
Per usare i ruoli in una connessione in uscita, configurare innanzitutto il servizio di ricerca in modo da usare un'identità gestita assegnata dal sistema o assegnata dall'utente come entità di sicurezza per il servizio di ricerca in un tenant di Microsoft Entra. Dopo aver creato un'identità gestita, è possibile assegnare ruoli per l'accesso autorizzato. Le identità gestite e le assegnazioni di ruolo eliminano la necessità di passare segreti e credenziali in una stringa di connessione o in un codice.
Prerequisiti
Servizio di ricerca al livello Basic o superiore, in qualsiasi area.
Risorsa di Azure che accetta le richieste in ingresso da un'entità di sicurezza di Microsoft Entra con un'assegnazione di ruolo valida.
Per creare un'identità gestita, è necessario avere il ruolo Proprietario o Amministratore accesso utenti. Per assegnare ruoli, è necessario essere proprietario, amministratore accesso utenti, amministratore di controllo degli accessi in base al ruolo o membro di un ruolo personalizzato con autorizzazioni Microsoft.Authorization/roleAssignments/write.
Scenari supportati
È possibile usare le identità gestite per questi scenari.
| Sceneggiatura | Sistema | Assegnata dall'utente |
|---|---|---|
| Connettersi alle origini dati dell'indicizzatore1 | Sì | Sì 2 |
| Connettersi ai modelli di incorporamento e completamento chat in Azure OpenAI, Microsoft Foundry e Funzioni di Azure tramite capacità/vettorizzatori 3 | Sì | Sì |
| Connettersi ad Azure Key Vault per le chiavi gestite dal cliente | Sì | Sì |
| Connettersi alle sessioni di debug (ospitate in Archiviazione di Azure)1 | Sì | NO |
| Connettersi a una cache di arricchimento (ospitata in Azure Storage)1,4 | Sì | Sì 2 |
| Connettersi a un Archivio Conoscenze (ospitato in Archiviazione di Azure)1 | Sì | Sì 2 |
1 Per la connettività tra la ricerca e l'archiviazione, la sicurezza di rete impone vincoli per il tipo di identità gestita che è possibile usare. È possibile usare solo un'identità gestita di sistema per una connessione della stessa area ad Archiviazione di Azure e tale connessione deve essere tramite l'eccezione del servizio attendibile o la regola dell'istanza di risorsa. Per informazioni dettagliate, vedere Accesso a un account di archiviazione protetto dalla rete.
2 Le identità gestite assegnate dall'utente possono essere usate nelle stringhe di connessione dell'origine dati. Tuttavia, solo le API REST di anteprima più recenti e i pacchetti di anteprima supportano un'identità gestita assegnata dall'utente in una stringa di connessione. Assicurarsi di passare a un'API di anteprima se si imposta SearchIndexerDataUserAssignedIdentity come identity in una connessione all'origine dati.
3 Le connessioni ad Azure OpenAI, Foundry e Funzioni di Azure tramite competenze/vettorizzatori includono: competenza personalizzata, vettore personalizzato, competenza di incorporamento di Azure OpenAI, vettorizzatore OpenAI di Azure, competenza AML e vettore del catalogo dei modelli Microsoft Foundry.
4 Il servizio di ricerca di intelligenza artificiale non è attualmente in grado di connettersi alle tabelle in un account di archiviazione con accesso con chiave condivisa disattivato.
Creare un'identità gestita dal sistema
Un'identità gestita assegnata dal sistema è un'entità di sicurezza Microsoft Entra ID creata e collegata automaticamente a una risorsa di Azure, ad esempio un servizio Azure AI Search.
Un servizio di ricerca può avere una sola identità gestita assegnata dal sistema. È univoco per il servizio di ricerca e associato al servizio per tutta la sua durata.
Quando si abilita un'identità gestita assegnata dal sistema, Microsoft Entra ID crea un'entità di sicurezza per il servizio di ricerca usato per l'autenticazione ad altre risorse di Azure. È quindi possibile usare questa identità nelle assegnazioni di ruolo per l'accesso autorizzato ai dati e alle operazioni.
Accedere al portale di Azure e trovare il servizio di ricerca.
Nel riquadro sinistro selezionare Impostazioni>Identità.
Nella scheda Assegnato dal sistema, in Stato, selezionare Sì.
Seleziona Salva.
Dopo aver salvato le impostazioni, la pagina viene aggiornata per visualizzare un identificatore di oggetto assegnato al servizio di ricerca.
Creare un'identità gestita assegnata dall'utente
Un'identità gestita assegnata dall'utente è una risorsa di Azure in cui le sottoscrizioni, i gruppi di risorse o i tipi di risorse possono essere specificate come ambito.
È possibile creare più identità gestite assegnate dall'utente per una maggiore granularità nelle assegnazioni di ruolo. Ad esempio, è possibile che si vogliano identità separate per applicazioni e scenari diversi. Come risorsa gestita e creata in modo indipendente, non è associata al servizio stesso.
I passi per configurare un'identità gestita assegnata dall'utente sono i seguenti:
Nella sottoscrizione di Azure creare un'identità gestita assegnata dall'utente.
Nel servizio di ricerca associare l'identità gestita assegnata dall'utente al servizio di ricerca.
In altri servizi di Azure a cui ci si vuole connettere, creare un'assegnazione di ruolo per l'identità.
L'associazione di un'identità gestita assegnata dall'utente a un servizio ricerca di intelligenza artificiale di Azure è supportata nel portale di Azure, nelle API REST di gestione della ricerca e nei pacchetti SDK che forniscono la funzionalità.
Accedi al portale di Azure.
Nell'angolo superiore sinistro del dashboard selezionare Crea una risorsa.
Usare la casella di ricerca per trovare l'identità gestita assegnata dall'utente e quindi selezionare Crea.
Selezionare la sottoscrizione, il gruppo di risorse e l'area. Assegnare all'identità un nome descrittivo.
Selezionare Crea e attendere il completamento della distribuzione della risorsa.
Prima di poter usare l'identità, sono necessari alcuni minuti.
Nella pagina del servizio di ricerca selezionare Impostazioni>Identità.
Nella scheda Assegnata dall'utente selezionare Aggiungi.
Selezionare la sottoscrizione e l'identità gestita assegnata dall'utente creata in precedenza.
Assegnare un ruolo
Dopo aver ottenuto un'identità gestita, assegnare ruoli che determinano le autorizzazioni del servizio di ricerca per la risorsa di Azure.
Le autorizzazioni di lettura sono necessarie per le connessioni dati dell'indicizzatore e per l'accesso a una chiave gestita dal cliente in Azure Key Vault.
Le autorizzazioni di scrittura sono necessarie per le funzionalità di arricchimento tramite intelligenza artificiale che usano Azure Storage per ospitare dati delle sessioni di debug, la memorizzazione nella cache di arricchimento e l'archiviazione del contenuto a lungo termine in un archivio di conoscenze.
I passaggi seguenti illustrano il flusso di lavoro dell'assegnazione di ruolo. Questo esempio è relativo ad Azure OpenAI. Per altre risorse di Azure, vedere Connettersi ad Archiviazione di Azure, Connettersi ad Azure Cosmos DB o Connettersi ad Azure SQL.
Accedere al portale di Azure con l'account Azure e passare alla risorsa Azure OpenAI.
Selezionare Controllo di accesso dal menu a sinistra.
Selezionare Aggiungi e quindi selezionare Aggiungi un'assegnazione di ruolo.
In Ruoli della funzione di lavoro selezionare Utente dei Servizi Cognitivi OpenAI e quindi selezionare Avanti.
In Membri, selezionare Identità gestita e quindi selezionare Membri.
Filtrare in base alla sottoscrizione e al tipo di risorsa (servizi di ricerca) e quindi selezionare l'identità gestita del servizio di ricerca.
Seleziona Rivedi + assegna.
Esempi di stringhe di connessione
Ricordare, dalla descrizione degli scenari, che è possibile usare le identità gestite nelle stringhe di connessione ad altre risorse di Azure. In questa sezione vengono forniti alcuni esempi. È possibile usare le versioni dell'API REST disponibili a livello generale e i pacchetti azure SDK per le connessioni usando un'identità gestita assegnata dal sistema.
Suggerimento
È possibile creare la maggior parte di questi oggetti nel portale di Azure, specificando un'identità gestita assegnata dal sistema o dall'utente e quindi visualizzare la definizione JSON per ottenere la stringa di connessione.
Ecco alcuni esempi di stringhe di connessione per vari scenari.
Origine dati BLOB (identità gestita dal sistema):
Un'origine dati dell'indicizzatore include una credentials proprietà che determina la modalità di connessione all'origine dati. L'esempio seguente mostra una stringa di connessione che specifica l'ID risorsa univoco di un account di archiviazione.
Un'identità gestita dal sistema è indicata quando una stringa di connessione è l'ID risorsa univoco di un servizio o un'applicazione compatibile con Microsoft Entra ID. Un'identità gestita assegnata dall'utente viene specificata tramite una identity proprietà .
"credentials": {
"connectionString": "ResourceId=/subscriptions/{subscription-ID}/resourceGroups/{resource-group-name}/providers/Microsoft.Storage/storageAccounts/{storage-account-name};"
}
Origine dati BLOB (identità gestita dall'utente):
Le identità gestite assegnate dall'utente possono essere usate anche nelle stringhe di connessione dell'origine dati dell'indicizzatore. Tuttavia, solo le API REST di anteprima più recenti e i pacchetti di anteprima supportano un'identità gestita assegnata dall'utente in una stringa di connessione dell'origine dati. Assicurarsi di passare a un'API di anteprima se si imposta SearchIndexerDataUserAssignedIdentity come identità in una connessione all'origine dati.
Nella proprietà viene specificata un'identità utente del identity servizio di ricerca.
"credentials": {
"connectionString": "ResourceId=/subscriptions/{subscription-ID}/resourceGroups/{resource-group-name}/providers/Microsoft.Storage/storageAccounts/{storage-account-name};"
},
. . .
"identity": {
"@odata.type": "#Microsoft.Azure.Search.DataUserAssignedIdentity",
"userAssignedIdentity": "/subscriptions/{subscription-ID}/resourceGroups/{resource-group-name}/providers/Microsoft.ManagedIdentity/userAssignedIdentities/{user-assigned-managed-identity-name}"
}
Una definizione di archivio di conoscenze include una stringa di connessione ad Azure Storage. La stringa di connessione è l'ID della risorsa univoco dell'account di archiviazione. Si noti che la stringa non include contenitori o tabelle nel percorso. Queste sono definite nella definizione di proiezione incorporata, non nella stringa di connessione.
"knowledgeStore": {
"storageConnectionString": "ResourceId=/subscriptions/{subscription-ID}/resourceGroups/{resource-group-name}/providers/Microsoft.Storage/storageAccounts/storage-account-name};"
}
Un indicizzatore crea, usa e memorizza il contenitore usato per gli arricchimenti memorizzati nella cache. Non è necessario includere il contenitore nella stringa di connessione della cache. È possibile trovare l'ID oggetto nella pagina Identità del servizio di ricerca nel portale di Azure.
"cache": {
"enableReprocessing": true,
"storageConnectionString": "ResourceId=/subscriptions/{subscription-ID}/resourceGroups/{resource-group-name}/providers/Microsoft.Storage/storageAccounts/{storage-account-name};"
}
Una sessione di debug viene eseguita nel portale di Azure e accetta un stringa di connessione all'avvio della sessione. È possibile incollare una stringa simile all'esempio seguente.
"ResourceId=/subscriptions/{subscription-ID}/resourceGroups/{resource-group-name}/providers/Microsoft.Storage/storageAccounts/{storage-account-name}/{container-name};",
Una competenza personalizzata è destinata all'endpoint di una funzione di Azure o di un'app che ospita codice personalizzato.
uriè l'endpoint della funzione o dell'app.authResourceIdindica al servizio di ricerca di connettersi usando un'identità gestita, passando l'ID applicazione della funzione o dell'app di destinazione nella proprietà.
{
"@odata.type": "#Microsoft.Skills.Custom.WebApiSkill",
"description": "A custom skill that can identify positions of different phrases in the source text",
"uri": "https://contoso.count-things.com",
"authResourceId": "<Azure-AD-registered-application-ID>",
"batchSize": 4,
"context": "/document",
"inputs": [ ... ],
"outputs": [ ...]
}
Esempi di connessione per i modelli
Per le connessioni effettuate tramite identità gestite, in questa sezione vengono illustrati esempi di informazioni di connessione usate da un servizio di ricerca per connettersi a un modello in un'altra risorsa. Una connessione tramite un'identità gestita dal sistema è trasparente; l'identità e i ruoli sono presenti e la connessione ha esito positivo se sono configurate correttamente. Al contrario, un'identità gestita dall'utente richiede proprietà di connessione aggiuntive.
Competenza di incorporamento di Azure OpenAI e vettore OpenAI di Azure:
Una competenza di incorporamento e un vettorizzatore di Azure OpenAI in AI Search hanno come destinazione l'endpoint di un'istanza di Azure OpenAI che ospita un modello di incorporamento. L'endpoint viene specificato nella definizione della competenza di incorporamento di Azure OpenAI e/o nella definizione del vettore OpenAI di Azure.
L'identità gestita dal sistema viene usata automaticamente se "apikey" e "authIdentity" sono vuote, come illustrato nell'esempio seguente. La "authIdentity" proprietà viene usata solo per l'identità gestita assegnata dall'utente.
Esempio di identità gestita dal sistema:
{
"@odata.type": "#Microsoft.Skills.Text.AzureOpenAIEmbeddingSkill",
"description": "Connects a deployed embedding model.",
"resourceUri": "https://url.openai.azure.com/",
"deploymentId": "text-embedding-ada-002",
"modelName": "text-embedding-ada-002",
"inputs": [
{
"name": "text",
"source": "/document/content"
}
],
"outputs": [
{
"name": "embedding"
}
]
}
Ecco un esempio di vectorizer configurato per un'identità gestita assegnata dal sistema. Un vettorizzatore è specificato in un indice di ricerca.
"vectorizers": [
{
"name": "my_azure_open_ai_vectorizer",
"kind": "azureOpenAI",
"azureOpenAIParameters": {
"resourceUri": "https://url.openai.azure.com",
"deploymentId": "text-embedding-ada-002",
"modelName": "text-embedding-ada-002"
}
}
]
Esempio di identità gestita assegnata dall'utente:
Viene usata un'identità gestita assegnata dall'utente se "apiKey" è vuota e viene fornito un valore valido "authIdentity" .
{
"@odata.type": "#Microsoft.Skills.Text.AzureOpenAIEmbeddingSkill",
"description": "Connects a deployed embedding model.",
"resourceUri": "https://url.openai.azure.com/",
"deploymentId": "text-embedding-ada-002",
"modelName": "text-embedding-ada-002",
"inputs": [
{
"name": "text",
"source": "/document/content"
}
],
"outputs": [
{
"name": "embedding"
}
],
"authIdentity": {
"@odata.type": "#Microsoft.Azure.Search.DataUserAssignedIdentity",
"userAssignedIdentity": "/subscriptions/<subscription_id>/resourcegroups/<resource_group>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<user-assigned-managed-identity-name>"
}
}
Ecco un esempio di vettorizzatore configurato per un'identità gestita assegnata dall'utente. Un vettorizzatore è specificato in un indice di ricerca.
"vectorizers": [
{
"name": "my_azure_open_ai_vectorizer",
"kind": "azureOpenAI",
"azureOpenAIParameters": {
"resourceUri": "https://url.openai.azure.com",
"deploymentId": "text-embedding-ada-002",
"modelName": "text-embedding-ada-002"
"authIdentity": {
"@odata.type": "#Microsoft.Azure.Search.DataUserAssignedIdentity",
"userAssignedIdentity": "/subscriptions/<subscription_id>/resourcegroups/<resource_group>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<user-assigned-managed-identity-name>"
}
}
}
]
Verificare l'accesso al firewall
Se la risorsa di Azure si trova dietro un firewall, assicurarsi che sia presente una regola in ingresso che ammette le richieste dal servizio di ricerca e dal portale di Azure.
Per le connessioni nella stessa area ad Archiviazione BLOB di Azure o Azure Data Lake Storage Gen2, usare un'identità gestita dal sistema e l'eccezione del servizio attendibile. Facoltativamente, è possibile configurare una regola di istanza della risorsa per ammettere le richieste.
Per tutte le altre risorse e connessioni, configurare una regola del firewall IP che ammette le richieste da Ricerca di intelligenza artificiale di Azure. Per dettagli, vedere Accesso dell'indicizzatore al contenuto protetto dalle funzionalità di sicurezza di rete di Azure.