Connettere un servizio di ricerca ad altre risorse di Azure usando un'identità gestita

È possibile configurare un servizio di ricerca di intelligenza artificiale di Azure per connettersi ad altre risorse di Azure usando un'identità gestita assegnata dal sistema o assegnata dall'utente e un'assegnazione di ruolo di Azure. Le identità gestite e le assegnazioni di ruolo eliminano la necessità di passare segreti e credenziali in un stringa di connessione o codice.

Prerequisiti

  • Un servizio di ricerca al livello Basic o superiore.

  • Risorsa di Azure che accetta le richieste in ingresso da un account di accesso di Microsoft Entra con un'assegnazione di ruolo valida.

Scenari supportati

Ricerca di intelligenza artificiale di Azure può usare un'identità gestita assegnata dal sistema o assegnata dall'utente nelle connessioni in uscita alle risorse di Azure. Un'identità gestita dal sistema viene indicata quando un stringa di connessione è l'ID risorsa univoco di un servizio o un'applicazione compatibile con ID Microsoft Entra. Un'identità gestita assegnata dall'utente viene specificata tramite una proprietà "identity".

Un servizio di ricerca usa Archiviazione di Azure come origine dati dell'indicizzatore e come sink di dati per le sessioni di debug, la memorizzazione nella cache di arricchimento e l'archivio conoscenze. Per le funzionalità di ricerca che esegue il writeback nell'archiviazione, l'identità gestita richiede un'assegnazione di ruolo collaboratore, come descritto nella sezione "Assegnare un ruolo".

Scenario Identità gestita dal sistema Identità gestita assegnata dall'utente (anteprima)
Connessioni dell'indicizzatore alle originidati di Azure supportate 1,3
Azure Key Vault per le chiavi gestite dal cliente
Sessioni di debug (ospitate in Archiviazione di Azure)1 No
Cache di arricchimento (ospitata in Archiviazione di Azure)1,2
Knowledge Store (ospitato in Archiviazione di Azure)1
Competenze personalizzate (ospitate in Funzioni di Azure o equivalenti)
Competenza di incorporamento di Azure OpenAI
Vettore OpenAI di Azure

1 Per la connettività tra la ricerca e l'archiviazione, la configurazione di sicurezza di rete impone vincoli per il tipo di identità gestita che è possibile usare. È possibile usare solo un'identità gestita dal sistema per una connessione alla stessa area all'archiviazione 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 Un metodo per specificare una cache di arricchimento si trova nella procedura guidata Importa dati. Attualmente, la procedura guidata non accetta un'identità gestita stringa di connessione per la cache di arricchimento. Al termine della procedura guidata, è tuttavia possibile aggiornare il stringa di connessione nella definizione JSON dell'indicizzatore per specificare un'identità gestita assegnata dall'utente o di sistema e quindi rieseguire l'indicizzatore.

3 Si noti che la disabilitazione delle chiavi nell'account di archiviazione di Azure non è attualmente supportata per la tabella di Azure usata come origine dati. Anche se l'identità gestita viene usata per non fornire le chiavi di archiviazione in modo esplicito, il servizio di ricerca di intelligenza artificiale usa ancora le chiavi per questa implementazione.

Creare un'identità gestita dal sistema

Quando un'identità gestita assegnata dal sistema è abilitata, Azure crea un'identità per il servizio di ricerca che può essere usata per eseguire l'autenticazione ad altri servizi di Azure all'interno dello stesso tenant e della stessa sottoscrizione. È quindi possibile usare questa identità nelle assegnazioni di controllo degli accessi in base al ruolo di Azure che consentono l'accesso ai dati durante l'indicizzazione.

Un'identità gestita assegnata dal sistema è univoca per il servizio di ricerca e associata al servizio per la sua durata.

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

  2. In Impostazioni selezionare Identità.

  3. Nella scheda Assegnata dal sistema , in Stato, selezionare .

  4. Seleziona Salva.

    Screenshot della pagina Identity in portale di Azure.

    Dopo il salvataggio, verrà visualizzato un identificatore di oggetto assegnato al servizio di ricerca.

    Screenshot di un identificatore dell'oggetto identity di sistema.

Creare un'identità gestita assegnata dall'utente (anteprima)

Un'identità gestita assegnata dall'utente è una risorsa in Azure. È utile se è necessaria una maggiore granularità nelle assegnazioni di ruolo perché è possibile creare identità separate per applicazioni e scenari diversi.

Importante

Questa funzionalità è disponibile in anteprima pubblica in condizioni supplementari per l'utilizzo. Le identità gestite assegnate dall'utente non sono attualmente supportate per le connessioni a un account di archiviazione protetto dalla rete. La richiesta di ricerca richiede attualmente un indirizzo IP pubblico.

  1. Accedere al portale di Azure

  2. Selezionare + Crea una risorsa.

  3. Nella barra di ricerca "servizio di ricerca e marketplace" cercare "Identità gestita assegnata dall'utente" e quindi selezionare Crea.

    Screenshot del riquadro Identità gestita assegnata dall'utente in Azure Marketplace.

  4. Selezionare la sottoscrizione, il gruppo di risorse e l'area. Assegnare all'identità un nome descrittivo.

  5. Selezionare Crea e attendere il completamento della distribuzione della risorsa.

    Nei passaggi successivi si assegnerà l'identità gestita assegnata dall'utente al servizio di ricerca.

  6. Nella pagina del servizio di ricerca, in Impostazioni selezionare Identità.

  7. Nella scheda Assegnata dall'utente selezionare Aggiungi.

  8. Scegliere la sottoscrizione e quindi selezionare la risorsa gestita assegnata dall'utente creata nel passaggio precedente.

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

Assegnare un ruolo

Un'identità gestita deve essere associata a un ruolo di Azure che determina le autorizzazioni per la risorsa di Azure.

  • Le autorizzazioni di lettura dati 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 collaboratore (scrittura) sono necessarie per le funzionalità di arricchimento tramite intelligenza artificiale che usano Archiviazione di Azure per ospitare i dati delle sessioni di debug, la memorizzazione nella cache di arricchimento e l'archiviazione del contenuto a lungo termine in un archivio conoscenze.

Per Archiviazione di Azure sono necessari i passaggi seguenti. Se la risorsa è Azure Cosmos DB o Azure SQL, i passaggi sono simili.

  1. Accedere al portale di Azure e trovare la risorsa di Azure a cui il servizio di ricerca deve avere accesso.

  2. In Archiviazione di Azure selezionare Controllo di accesso (AIM) nel riquadro di spostamento a sinistra.

  3. Selezionare Aggiungi un'assegnazione di ruolo.

  4. Nella pagina Ruolo selezionare i ruoli necessari per il servizio di ricerca:

    Attività Assegnazione di ruolo
    Indicizzazione BLOB tramite un indicizzatore Aggiungere Archiviazione lettore di dati BLOB
    Indicizzazione di ADLS Gen2 tramite un indicizzatore Aggiungere Archiviazione lettore di dati BLOB
    Indicizzazione di tabelle tramite un indicizzatore Aggiungere lettore e accesso ai dati
    Indicizzazione di file tramite un indicizzatore Aggiungere lettore e accesso ai dati
    Scrivere in un archivio conoscenze Aggiungere Archiviazione Blob DataContributor per le proiezioni di oggetti e file e Lettore e Accesso ai dati per le proiezioni di tabelle.
    Scrivere in una cache di arricchimento Aggiungere Archiviazione Collaboratore dati BLOB
    Salvare lo stato della sessione di debug Aggiungere Archiviazione Collaboratore dati BLOB
    Incorporamento di dati (vettorizzazione) con i modelli di incorporamento di Azure OpenAI Aggiungere l'utente OpenAI di Servizi cognitivi
  5. Nella pagina Membri selezionare Identità gestita.

  6. Selezionare i membri. Nella pagina Seleziona identità gestita scegliere la sottoscrizione e quindi filtrare in base al tipo di servizio e quindi selezionare il servizio. Solo i servizi con un'identità gestita saranno disponibili per la selezione.

    Screenshot del riquadro Seleziona identità gestita nella procedura guidata per l'assegnazione di ruolo.

  7. Seleziona Rivedi + assegna.

esempi di stringhe di Connessione ion

Dopo aver definito un'identità gestita per il servizio di ricerca e assegnato un'assegnazione di ruolo, è possibile modificare le connessioni in uscita per usare l'ID risorsa univoco dell'altra risorsa di Azure. Ecco alcuni esempi di stringa di connessione per vari scenari.

Origine dati BLOB (sistema):

Un'origine dati dell'indicizzatore include una proprietà "credentials" che determina la modalità di connessione all'origine dati. Nell'esempio seguente viene illustrato un stringa di connessione che specifica l'ID risorsa univoco di un account di archiviazione. Microsoft Entra ID autentica la richiesta usando l'identità gestita dal sistema del servizio di ricerca. Si noti che il stringa di connessione non include un contenitore. In una definizione di origine dati, un nome di contenitore viene specificato nella proprietà "container" (non visualizzata), non nella stringa di connessione.

"credentials": {
    "connectionString": "ResourceId=/subscriptions/{subscription-ID}/resourceGroups/{resource-group-name}/providers/Microsoft.Storage/storageAccounts/{storage-account-name};"
    }

Origine dati BLOB (utente):

Una richiesta di ricerca per Archiviazione di Azure può essere effettuata anche con un'identità gestita assegnata dall'utente, attualmente in anteprima. L'identità utente del servizio di ricerca viene specificata nella proprietà "identity". È possibile usare il portale o l'anteprima dell'API REST versione 2021-04-30-Preview per impostare l'identità.

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

Archivio conoscenze:

Una definizione dell'archivio conoscenze include un stringa di connessione da Archiviazione di Azure. In Archiviazione di Azure, un archivio conoscenze creerà proiezioni come BLOB e tabelle. Il stringa di connessione è l'ID risorsa univoco dell'account di archiviazione. Si noti che la stringa non include contenitori o tabelle nel percorso. Questi vengono definiti 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};"
}

Cache di arricchimento:

Un indicizzatore crea, usa e memorizza il contenitore usato per gli arricchimenti memorizzati nella cache. Non è necessario includere il contenitore nella cache stringa di connessione. È possibile trovare l'ID oggetto nella pagina Identità del servizio di ricerca nel portale.

"cache": {
  "enableReprocessing": true,
  "storageConnectionString": "ResourceId=/subscriptions/{subscription-ID}/resourceGroups/{resource-group-name}/providers/Microsoft.Storage/storageAccounts/{storage-account-name};"
}

Sessione di debug:

Una sessione di debug viene eseguita nel portale 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};",

Competenza personalizzata:

Una competenza personalizzata è destinata all'endpoint di una funzione di Azure o di un'app che ospita codice personalizzato. L'endpoint viene specificato nella definizione della competenza personalizzata. La presenza di "authResourceId" indica 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": [ ...]
}

Competenza di incorporamento di Azure OpenAI e vettore OpenAI di Azure:

Una competenza e un vettore di incorporamento di Azure OpenAI nella ricerca di intelligenza artificiale hanno come destinazione l'endpoint di un servizio 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 se configurata e se "apikey" e "authIdentity" sono vuoti. La proprietà "authIdentity" viene usata solo per l'identità gestita assegnata dall'utente.

{
  "@odata.type": "#Microsoft.Skills.Text.AzureOpenAIEmbeddingSkill",
  "description": "Connects a deployed embedding model.",
  "resourceUri": "https://url.openai.azure.com/",
  "deploymentId": "text-embedding-ada-002",
  "inputs": [
    {
      "name": "text",
      "source": "/document/content"
    }
  ],
  "outputs": [
    {
      "name": "embedding"
    }
  ]
}
 "vectorizers": [
    {
      "name": "my_azure_open_ai_vectorizer",
      "kind": "azureOpenAI",
      "azureOpenAIParameters": {
        "resourceUri": "https://url.openai.azure.com",
        "deploymentId": "text-embedding-ada-002"
      }
    }
  ]

Vedi anche