Share via


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.

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.

Vedi anche