Configuración de una conexión de indexador a Azure Storage mediante una identidad administrada

En este artículo se explica cómo configurar una conexión de indexador a una cuenta de Azure Storage mediante una identidad administrada en lugar de proporcionar credenciales en la cadena de conexión.

Puede usar una identidad administrada asignada por el sistema o asignada por el usuario (versión preliminar). Las identidades administradas son inicios de sesión de Microsoft Entra y requieren asignaciones de roles de Azure para acceder a los datos de Azure Storage.

Nota:

Si el almacenamiento está protegido por la red y se encuentra en la misma región que el servicio de búsqueda, debe usar una identidad administrada asignada por el sistema y una de las siguientes opciones de red: conectarse como un servicio de confianza o conectarse mediante la regla de instancia de recursos.

Requisitos previos

Creación del origen de datos

Cree el origen de datos y proporcione una identidad administrada asignada por el sistema o asignada por el usuario (versión preliminar).

Identidad administrada asignada por el sistema

La API de REST, Azure Portal y el SDK de .NET permiten usar una identidad administrada asignada por el sistema.

Cuando se conecte con una identidad administrada asignada por el sistema, el único cambio en la definición del origen de datos será el formato de la propiedad "credentials". Aquí proporcionará un valor de ResourceId que no tenga clave ni contraseña de cuenta. El ResourceId debe incluir el identificador de suscripción de la cuenta de almacenamiento, el grupo de recursos de la cuenta de almacenamiento y el nombre de la cuenta de almacenamiento.

A continuación, se muestra un ejemplo de cómo crear un origen de datos para indexar datos desde una cuenta de almacenamiento mediante la API REST de creación de origen de datos y una cadena de conexión de identidad administrada. El formato de la cadena de conexión de identidad administrada es el mismo para la API REST, el SDK de .NET y Azure Portal.

POST https://[service name].search.windows.net/datasources?api-version=2020-06-30
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>" 
    }
}   

Identidad administrada asignada por el usuario (versión preliminar)

La API REST 2021-04-30-preview admite conexiones basadas en una identidad administrada asignada por el usuario. Al conectarse con una identidad administrada asignada por el usuario, se producen dos cambios en la definición del origen de datos:

  • En primer lugar, el formato de la propiedad "credentials" es un valor de ResourceId que no tiene clave ni contraseña de cuenta. El ResourceId debe incluir el identificador de suscripción de la cuenta de almacenamiento, el grupo de recursos de la cuenta de almacenamiento y el nombre de la cuenta de almacenamiento. Este es el mismo formato que la identidad administrada asignada por el sistema.

  • En segundo lugar, agregará una propiedad "identity" que contiene la colección de identidades administradas asignadas por el usuario. Solo se debe proporcionar una identidad administrada asignada por el usuario al crear el origen de datos. Establece el tipo en "userAssignedIdentities".

A continuación, se ofrece un ejemplo de cómo crear un objeto de origen de datos de indexador mediante la API REST de creación o actualización de origen de datos en versión preliminar:

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

creación del índice

El índice especifica los campos de un documento, los atributos y otras construcciones que conforman la experiencia de búsqueda.

A continuación, se muestra una llamada API REST de creación de índice con un campo content que admite búsquedas para almacenar el texto extraído de los blobs:

POST https://[service name].search.windows.net/indexes?api-version=2020-06-30
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 }
        ]
}

Creación del indexador

Un indizador conecta un origen de datos con un índice de búsqueda de destino y proporciona una programación para automatizar la actualización de datos. Una vez creados el índice y el origen de datos, estará preparado para crear y ejecutar el indexador. Si el indexador se realizó correctamente, la sintaxis de conexión y las asignaciones de roles son válidas.

Esta es una llamada a la API REST de creación de indexador con una definición de indexador de blobs. El indexador se ejecutará cuando envíe la solicitud.

POST https://[service name].search.windows.net/indexers?api-version=2020-06-30
Content-Type: application/json
api-key: [admin key]

{
    "name" : "blob-indexer",
    "dataSourceName" : "blob-datasource",
    "targetIndexName" : "my-target-index"
}

Acceso a datos de red seguros en cuentas de almacenamiento

Las cuentas de almacenamiento de Azure se pueden proteger aún más mediante firewalls y redes virtuales. Si desea indexar el contenido de una cuenta de almacenamiento protegida mediante un firewall o una red virtual, consulte Establecimiento de conexiones de indexador a Azure Storage como un servicio de confianza.

Consulte también