Configurare una connessione dell'indicizzatore per Archiviazione di Azure usando un'identità gestita
Questo articolo illustra come configurare una connessione dell'indicizzatore a un account Archiviazione di Azure usando un'identità gestita anziché fornire le credenziali nella stringa di connessione.
È possibile usare un'identità gestita assegnata dal sistema o un'identità gestita assegnata dall'utente (anteprima). Le identità gestite sono account di accesso di Microsoft Entra e richiedono assegnazioni di ruolo di Azure per accedere ai dati in Archiviazione di Azure.
Nota
Se l'archiviazione è protetta dalla rete e nella stessa area del servizio di ricerca, è necessario usare un'identità gestita assegnata dal sistema e una delle opzioni di rete seguenti: connettersi come servizio attendibile o connettersi usando la regola dell'istanza della risorsa.
Prerequisiti
Creare un'identità gestita per il servizio di ricerca.
Assegnare un ruolo in Archiviazione di Azure:
Scegliere Archiviazione lettore di dati BLOB per l'accesso in lettura ai dati in BLOB Archiviazione e ADLS Gen2.
Scegliere Lettore e dati per l'accesso in lettura ai dati in Archiviazione tabella e Archiviazione file.
È necessario avere familiarità con i concetti e la configurazione dell'indicizzatore.
Suggerimento
Per un esempio di codice in C#, vedere Index Data Lake Gen2 using Microsoft Entra ID on GitHub (Index Data Lake Gen2 using Microsoft Entra ID on GitHub).
Creare l'origine dati
Creare l'origine dati e fornire un'identità gestita assegnata dal sistema o un'identità gestita assegnata dall'utente (anteprima).
Identità gestita assegnata dal sistema
L'API REST, portale di Azure e .NET SDK supportano l'uso di un'identità gestita assegnata dal sistema.
Quando ci si connette con un'identità gestita assegnata dal sistema, l'unica modifica alla definizione dell'origine dati è il formato della proprietà "credentials". Specificare un Id risorsa senza chiave o password dell'account. ResourceId deve includere l'ID sottoscrizione dell'account di archiviazione, il gruppo di risorse dell'account di archiviazione e il nome dell'account di archiviazione.
Ecco un esempio di come creare un'origine dati per indicizzare i dati da un account di archiviazione usando l'API REST Crea origine dati e un'identità gestita stringa di connessione. Il formato dell'identità gestita stringa di connessione è lo stesso per l'API REST, .NET SDK e l'portale di Azure.
POST https://[service name].search.windows.net/datasources?api-version=2023-11-01
Content-Type: application/json
api-key: [admin key]
{
"name" : "blob-datasource",
"type" : "azureblob",
"credentials" : {
"connectionString" : "ResourceId=/subscriptions/[subscription ID]/resourceGroups/[resource group name]/providers/Microsoft.Storage/storageAccounts/[storage account name]/;"
},
"container" : {
"name" : "my-container", "query" : "<optional-virtual-directory-name>"
}
}
Identità gestita assegnata dall'utente (anteprima)
L'API REST 2021-04-30-preview supporta le connessioni basate su un'identità gestita assegnata dall'utente. Quando ci si connette con un'identità gestita assegnata dall'utente, vengono apportate due modifiche alla definizione dell'origine dati:
In primo luogo, il formato della proprietà "credentials" è un ResourceId senza chiave o password dell'account. ResourceId deve includere l'ID sottoscrizione dell'account di archiviazione, il gruppo di risorse dell'account di archiviazione e il nome dell'account di archiviazione. Questo formato è lo stesso formato dell'identità gestita assegnata dal sistema.
In secondo luogo, aggiungere una proprietà "identity" che contiene la raccolta di identità gestite assegnate dall'utente. Quando si crea l'origine dati, è necessario specificare un'unica identità gestita assegnata dall'utente. Impostarlo sul tipo "userAssignedIdentities".
Di seguito è riportato un esempio di come creare un oggetto origine dati dell'indicizzatore usando l'anteprima Creare o aggiornare l'API REST dell'origine dati:
POST https://[service name].search.windows.net/datasources?api-version=2021-04-30-preview
Content-Type: application/json
api-key: [admin key]
{
"name" : "blob-datasource",
"type" : "azureblob",
"credentials" : {
"connectionString" : "ResourceId=/subscriptions/[subscription ID]/resourceGroups/[resource group name]/providers/Microsoft.Storage/storageAccounts/[storage account name]/;"
},
"container" : {
"name" : "my-container", "query" : "<optional-virtual-directory-name>"
},
"identity" : {
"@odata.type": "#Microsoft.Azure.Search.DataUserAssignedIdentity",
"userAssignedIdentity" : "/subscriptions/[subscription ID]/resourcegroups/[resource group name]/providers/Microsoft.ManagedIdentity/userAssignedIdentities/[managed identity name]"
}
}
Creare l'indice
L'indice consente di specificare i campi in un documento, gli attributi e altri costrutti che danno forma all'esperienza della ricerca.
Ecco una chiamata all'API REST Create Index con un campo ricercabile content
per archiviare il testo estratto dai BLOB:
POST https://[service name].search.windows.net/indexes?api-version=2023-11-01
Content-Type: application/json
api-key: [admin key]
{
"name" : "my-target-index",
"fields": [
{ "name": "id", "type": "Edm.String", "key": true, "searchable": false },
{ "name": "content", "type": "Edm.String", "searchable": true, "filterable": false, "sortable": false, "facetable": false }
]
}
Creare l'indicizzatore
Un indicizzatore si connette a un'origine dati con un indice di ricerca di destinazione e consente di pianificare l'automatizzazione dell'aggiornamento dei dati. Dopo aver creato l'indice e l'origine dati, è possibile creare ed eseguire l'indicizzatore. Se l'indicizzatore ha esito positivo, la sintassi di connessione e le assegnazioni di ruolo sono valide.
Ecco una chiamata API REST Create Indexer con una definizione di indicizzatore BLOB. L'indicizzatore viene eseguito quando si invia la richiesta.
POST https://[service name].search.windows.net/indexers?api-version=2023-11-01
Content-Type: application/json
api-key: [admin key]
{
"name" : "blob-indexer",
"dataSourceName" : "blob-datasource",
"targetIndexName" : "my-target-index"
}
Accesso ai dati protetti dalla rete negli account di archiviazione
Gli account di archiviazione di Azure possono essere ulteriormente protetti usando firewall e reti virtuali. Per indicizzare il contenuto da un account di archiviazione protetto tramite un firewall o una rete virtuale, vedere Stabilire connessioni indicizzate a Archiviazione di Azure come servizio attendibile.