Tutorial: indexar y enriquecer blobs cifrados para la búsqueda de texto completo en Azure AI Search

En este tutorial se muestra cómo usar Azure AI Search para indexar documentos que hayan sido cifrados previamente con una clave administrada por el cliente en Azure Blob Storage.

Normalmente, un indexador no puede extraer contenido de archivos cifrados porque no tiene acceso a la clave de cifrado administrada por el cliente en Azure Key Vault. Sin embargo, al aprovechar la aptitud personalizada DecryptBlobFile, seguida de la aptitud Extracción de documentos, puede proporcionar acceso controlado a la clave para descifrar los archivos y después extraer contenido de ellos. Así, se desbloquea la capacidad de indexar y enriquecer estos documentos, sin poner en peligro el estado de cifrado de los documentos almacenados.

A partir de documentos completos (texto no estructurado) cifrados previamente, como PDF, HTML, DOCX y PPTX en Azure Blob Storage, en esta guía se usa un cliente de REST y las API de REST de Búsqueda para realizar las tareas siguientes:

  • Definir una canalización que descifre los documentos y extraiga texto de ellos.
  • Definir un índice para almacenar la salida.
  • Ejecute la canalización para crear y cargar el índice.
  • Explore los resultados mediante la búsqueda de texto completo y una sintaxis de consulta enriquecida.

Si no tiene una suscripción a Azure, abra una cuenta gratuita antes de empezar.

Requisitos previos

La implementación de aptitudes personalizadas crea una aplicación de Azure Function y una cuenta de Azure Storage. Puesto que estos recursos se crean para usted, no aparecen listados como requisito previo. Cuando haya terminado con este tutorial, recuerde limpiar los recursos, para que no se le facture por los servicios que no usa.

Nota

Los conjuntos de aptitudes suelen requerir la asociación de un recurso multiservicio de Azure AI. Tal y como se ha escrito, este conjunto de aptitudes no tiene dependencia en los servicios de Azure AI y, por tanto, no se requiere ninguna clave. Si más adelante agrega enriquecimientos que invocan aptitudes integradas, recuerde actualizar el conjunto de aptitudes en consecuencia.

1 - Creación de servicios y recopilación de credenciales

Implementación de la aptitud personalizada

En este ejemplo se usa el proyecto DecryptBlobFile de ejemplo del repositorio de GitHub Azure Search Power Skills. En esta sección, implementará la aptitud en una instancia de Azure Functions para que se pueda usar en un conjunto de aptitudes. Un script de implementación integrado crea un recurso de Azure Functions cuyo nombre comienza por psdbf-function-app- y carga la aptitud. Se le pedirá que especifique una suscripción y un grupo de recursos. Asegúrese de elegir la misma suscripción en la que reside la instancia de Azure Key Vault.

A nivel operativo, la aptitud DecryptBlobFile coge la dirección URL y el token de SAS de cada blob como entradas y genera el archivo descifrado descargado mediante el contrato de referencia de archivo que Azure AI Search espera. Recuerde que DecryptBlobFile necesita la clave de cifrado para realizar el descifrado. Como parte de la configuración, también creará una directiva de acceso que concede a la función DecryptBlobFile acceso a la clave de cifrado de Azure Key Vault.

  1. Haga clic en el botón Implementar en Azure que se encuentra en la página de aterrizaje de DecryptBlobFile, que abrirá la plantilla de Resource Manager proporcionada en Azure Portal.

  2. Elija la misma suscripción en la que se encuentra su instancia de Azure Key Vault (este tutorial no funcionará si selecciona otra suscripción).

  3. Seleccione un grupo de recursos existente o cree uno nuevo. Un grupo de recursos dedicado facilita la limpieza más adelante.

  4. Seleccione Revisar y crear, asegúrese de que está de acuerdo con los términos y, luego, seleccione Crear para implementar Azure Functions.

    Captura de pantalla de la página de plantilla de ARM en Azure Portal.

  5. Espere a que finalice la implementación.

Debe tener una aplicación de Azure Function que contenga la lógica de descifrado, y un recurso de Azure Storage que almacenará los datos de la aplicación. En los siguientes pasos, concederá permisos a la aplicación para acceder al almacén de claves y recopilar la información que necesitará para las llamadas REST.

Concesión de permisos en Azure Key Vault

  1. Vaya al servicio de Azure Key Vault en el portal. Cree una directiva de acceso en Azure Key Vault que conceda acceso mediante clave a la aptitud personalizada.

  2. En el panel de navegación izquierdo, seleccione Directivas de acceso. Después, seleccione + Crear para iniciar el Asistente Crear una directiva de acceso.

    Captura de pantalla del comando Directiva de acceso en el panel de navegación izquierdo.

  3. En la página Permisos, en Configurar desde plantilla, seleccione Azure Data Lake Storage o Azure Storage.

  4. Seleccione Next (Siguiente).

  5. En la página Principal, seleccione la instancia de Azure Function que ha implementado. Para buscarla, use el prefijo de recurso que se usó para crearla en el paso 2, que tiene un valor de prefijo predeterminado de psdbf-function-app.

  6. Seleccione Next (Siguiente).

  7. En Revisar y crear, seleccione Crear.

Recopilación de información de la aplicación

  1. Vaya a la función psdbf-function-app en el portal y tome nota de las siguientes propiedades, ya que las necesitará para las llamadas REST:

  2. Obtenga la dirección URL de la función, que se puede encontrar en Essentials (Características esenciales), en la página principal de la función.

    Captura de pantalla de la página de información general y la sección Essentials de la aplicación de funciones de Azure.

  3. Obtenga el código de la clave del host. Puede encontrarlo si se desplaza a Claves de la aplicación y hace clic para mostrar la clave predeterminada. Después, puede copiar el valor.

    Captura de pantalla de la página Claves de aplicación de la aplicación de funciones de Azure.

  1. Inicie sesión en Azure Portal y, en la página Información general del servicio de búsqueda, obtenga el nombre del servicio de búsqueda. Para confirmar el nombre del servicio, revise la dirección URL del punto de conexión. Si la dirección URL del punto de conexión fuera https://mydemo.search.windows.net, el nombre del servicio sería mydemo.

  2. En Configuración>Claves, obtenga una clave de administrador para tener derechos completos en el servicio. Se proporcionan dos claves de administrador intercambiables para lograr la continuidad empresarial, por si necesitara sustituir una de ellas. Puede usar la clave principal o secundaria en las solicitudes para agregar, modificar y eliminar objetos.

    Obtención del nombre del servicio y las claves de consulta y administrador

Todas las solicitudes enviadas al servicio necesitan una clave de API en el encabezado. Una clave válida genera la confianza, solicitud a solicitud, entre la aplicación que la envía y el servicio que se encarga de ella.

Configurar un cliente de REST

Crear variables para puntos de conexión y claves:

Variable Dónde obtenerla
admin-key En la página Claves del servicio de Azure AI Search.
search-service-name El nombre del servicio de Azure AI Search. La dirección URL es https://{{search-service-name}}.search.windows.net.
storage-connection-string En la cuenta de almacenamiento, en la pestaña Claves de acceso, seleccione key1>Cadena de conexión.
storage-container-name El nombre del contenedor de blobs que tiene los archivos cifrados que se van a indexar.
function-uri En Azure Functions, en Essentials, en la página principal.
function-code En Azure Functions es preciso desplazarse a Claves de la aplicación, hacer clic para mostrar la clave predeterminada y copiar el valor.
api-version Déjela como 2020-06-30.
datasource-name Déjela como encrypted-blobs-ds.
index-name Déjela como encrypted-blobs-idx.
skillset-name Déjela como encrypted-blobs-ss.
indexer-name Déjela como encrypted-blobs-ixr.

Revisión y ejecución de cada solicitud

Use solicitudes HTTP para crear los objetos de una canalización de enriquecimiento:

  • Solicitud PUT para crear el índice: este índice de búsqueda contiene los datos que Azure AI Search usa y devuelve.

  • Solicitud POST para crear el origen de datos: este origen de datos especifica la conexión a la cuenta de almacenamiento que contiene los archivos de blob cifrados.

  • Una solicitud PUT para crear el conjunto de aptitudes: El conjunto de aptitudes especifica la definición de la aptitud personalizada de Azure Functions que descifrará los datos del archivo de blob y DocumentExtractionSkill para extraer el texto de cada documento una vez que se ha descifrado.

  • Solicitud PUT para crear el indexador: al ejecutar el indexador se recuperan los blobs, se aplica el conjunto de aptitudes y se indexan y se almacenan los resultados. Debe ejecutar esta solicitud en último lugar. La aptitud personalizada del conjunto de aptitudes invoca la lógica de descifrado.

Supervisión de la indexación

La indexación y el enriquecimiento comienzan en cuanto se envía la solicitud de creación de indexador. En función del número de documentos que haya en la cuenta de almacenamiento, la indexación puede tardar un tiempo. Para averiguar si el indexador sigue en ejecución, envíe una solicitud Obtener el estado del indexador y revise la respuesta para saber si el indexador se está ejecutando o para ver la información de los errores y advertencias.

Si usa el nivel Gratis, se espera el siguiente mensaje: "Could not extract content or metadata from your document. Truncated extracted text to '32768' characters". Este mensaje aparece porque en el nivel Gratis la indexación de blobs tiene un límite de 32 000 en la extracción de caracteres. En los niveles superiores no verá este mensaje para este conjunto de datos.

Buscar contenido

Una vez que finaliza la ejecución del indexador, puede ejecutar algunas consultas para comprobar que los datos se han descifrado e indexado correctamente. Ve al servicio de Azure AI Search en el portal y usa el explorador de búsqueda para ejecutar consultas sobre los datos indexados.

Limpieza de recursos

Cuando trabaje con su propia suscripción, al final de un proyecto, es recomendable eliminar los recursos que ya no necesite. Los recursos que se dejan en ejecución pueden costarle mucho dinero. Puede eliminar los recursos de forma individual o eliminar el grupo de recursos para eliminar todo el conjunto de recursos.

Puede encontrar y administrar recursos en el portal, mediante el vínculo Todos los recursos o Grupos de recursos en el panel de navegación izquierdo.

Pasos siguientes

Ahora que ha indexado correctamente los archivos cifrados, puede realizar iteraciones en esta canalización agregando más aptitudes cognitivas. Esto le permitirá enriquecer y obtener información adicional sobre los datos.

Si trabajas con datos de cifrado doble, es posible que desees investigar las características de cifrado de índice disponibles en Azure AI Search. Aunque el indexador necesita datos descifrados para la indexación, una vez que el índice existe, se puede cifrar en un índice de búsqueda mediante una clave administrada por el cliente. Esto garantizará que los datos siempre estén cifrados cuando están en reposo. Para obtener más información, consulta Configurar claves administradas por el cliente para el cifrado de datos en Azure AI Search.