Búsqueda inteligente de contenido de Adobe Experience Manager utilizando Amazon Kendra

Búsqueda inteligente de contenido con Amazon Kendra en Adobe Experience Manager

Amazon Kendra es un servicio de búsqueda inteligente impulsado por aprendizaje automático (ML). Con Amazon Kendra, puedes agregar fácilmente contenido de una variedad de repositorios de contenido en un índice que te permite buscar rápidamente todos los datos de tu empresa y encontrar la respuesta más precisa. Adobe Experience Manager (AEM) es un sistema de gestión de contenido que se utiliza para crear contenido de sitios web o aplicaciones móviles. Muchas organizaciones utilizan Adobe Experience Manager (On-Premise) o Adobe Experience Manager (Cloud Service) como su plataforma de gestión de contenido. Los usuarios empresariales necesitan poder buscar respuestas precisas de manera fácil y segura en contenido de múltiples fuentes de datos en la empresa, incluido AEM, desde contenido como activos y páginas.

Los clientes de Amazon Kendra ahora pueden utilizar el conector de Amazon Kendra AEM para indexar páginas y activos de AEM. Amazon Kendra admite instancias de autor de AEM como Cloud Service y instancias de autor y publicación de AEM On-Premise. Puedes indexar contenido de AEM y filtrar los tipos de contenido que deseas indexar con el conector de Amazon Kendra AEM On-Premise o Cloud Service, y buscar tus datos desde AEM con la búsqueda inteligente de Amazon Kendra.

Esta publicación te muestra cómo configurar el conector de Amazon Kendra AEM para indexar tu contenido y buscar tus activos y páginas de AEM. El conector también ingiere la lista de control de acceso (ACL) para cada documento. La información de ACL se utiliza para mostrar los resultados de búsqueda filtrados por lo que un usuario tiene acceso.

Resumen de la solución

En nuestra solución, configuramos AEM como una fuente de datos para un índice de búsqueda de Amazon Kendra utilizando el conector de Amazon Kendra AEM. Según la configuración, cuando se sincroniza la fuente de datos, el conector rastrea e indexa todo el contenido de AEM que se creó en o antes de una fecha específica. El conector también indexa la información de la Lista de Control de Acceso (ACL) para cada mensaje y documento. Cuando se habilita el control de acceso o el filtrado de contexto de usuario, los resultados de búsqueda de una consulta realizada por un usuario incluyen resultados solo de aquellos documentos que el usuario está autorizado a leer.

El conector de Amazon Kendra AEM se puede integrar con AWS IAM Identity Center (sucesor de AWS Single Sign-On). Primero debes habilitar IAM Identity Center y crear una organización para sincronizar usuarios y grupos desde tu directorio activo. El conector utilizará el nombre de usuario y la búsqueda de grupos para el contexto de usuario de las consultas de búsqueda.

Prerrequisitos

Para probar el conector de Amazon Kendra para AEM utilizando esta publicación como referencia, necesitas lo siguiente:

  • Una cuenta de AWS con privilegios para crear roles y políticas de AWS Identity and Access Management (IAM). Para obtener más información, consulta Descripción general de la administración de acceso: permisos y políticas.
  • Conocimientos básicos de AWS y conocimientos de trabajo de AEM. Para obtener más información, consulta Administración de usuarios y seguridad.
  • Configuración de AEM On-Premise (versión 6.5 o superior). Almacenamos el nombre de usuario y la contraseña del administrador en AWS Secrets Manager.

Configurar OAuth2.0

Si estás utilizando AEM On-Premise, configura OAuth2.0 para generar un certificado SSL para completar la configuración del conector de Amazon Kendra AEM.

La implementación del servidor OAuth 2.0 de Adobe Granite (com.adobe.granite.oauth.server) proporciona el soporte para las funcionalidades del servidor OAuth 2.0 en AEM.

Habilitar el controlador de autenticación del servidor OAuth

De forma predeterminada, AEM no habilitará el controlador de autenticación del servidor OAuth. Para habilitarlo, sigue los siguientes pasos:

  1. Para iniciar la instancia local de AEM, ve a http://localhost:<puerto>/system/console/configMgr/com.adobe.granite.oauth.server.auth.impl.OAuth2ServerAuthenticationHandler
  2. Cambia el valor de jaas.ranking.name a 1100 en la sección Adobe Granite OAuth Server Authentication Handler y guarda la configuración.

Ahora el controlador de autenticación del servidor OAuth está habilitado.

Registrar el cliente OAuth

Toda aplicación externa requiere autenticación OAuth para ser registrada como un cliente OAuth en AEM. Para registrar el cliente OAuth, sigue los siguientes pasos:

  1. En la página de inicio de AEM, elige Seguridad y Cliente OAuth.
  2. Ingresa un nombre y una URI de redirección.
  3. Elige Guardar.

Después de una autorización exitosa de una aplicación, el servidor OAuth te redirigirá de vuelta a la aplicación con un código de autorización a la URL de redirección configurada.

  1. Copia el ID del cliente y el secreto del cliente y guárdalos de forma segura.

El Servidor OAuth de Granite admite los siguientes tipos de concesión:

  • Código de autorización
  • Token de actualización
  • Token portador JWT

Para este artículo, utilizamos OAuth2.0 con el tipo de concesión JWT.

El token portador JWT se utiliza principalmente para la integración de servidor a servidor. Esto nos ayudará a habilitar la integración de servidor a servidor sin interacción del propietario de recursos; por ejemplo, para recuperar o cargar archivos sin interacción del usuario.

Generar el token JWT

Completa los siguientes pasos para generar el token JWT:

  1. Navega a localhost y el cliente OAuth.
  2. Elige Descargar clave privada.
  3. Elige Descargar.

Generar el certificado público

Ahora, genera el certificado público a partir de la clave privada descargada, ejecuta el siguiente comando e ingresa la contraseña de la clave privada.

Utiliza el comando openssl para generar la clave privada:

>openssl pkcs12 -in store.p12 -out store.crt.pem -clcerts -nokeys

Extrae la clave privada:

openssl pkcs12 -in store.p12 -passin pass:notasecret -nocerts -nodes -out store.private.key.txt

Asegúrate de instalar openssl y agregarlo al path del entorno previamente.

Antes de utilizar la clave privada al configurar la fuente de datos de Amazon Kendra, asegúrate de no usar o copiar “-----BEGIN PRIVATE KEY-----” y “-----END PRIVATE KEY-----“ en el código. Además, elimina cualquier espacio vacío de la clave privada.

Utiliza el ClientId, ClientSecret y la clave privada generada para configurar la fuente de datos AEM de Amazon Kendra.

Para el registro del cliente OAuth, navega a http://localhost:<puerto>/libs/granite/oauth/content/clients.html.

Configurar SSL

Completa los siguientes pasos para configurar SSL:

  1. Crea la clave:
openssl genrsa -aes256 -out <nombreArchivoClave>.key 4096
  1. Encripta la clave:
openssl req -sha256 -new -key <nombreArchivoClave>.key -out <nombreArchivoClave>.csr -subj '/CN=<nombreArchivoClave>'
  1. Firma la clave:
openssl x509 -req -days 365 -in <keyFileName>.csr -signkey <keyFileName>.key -out <keyFileName>.crt
  1. Codifica la clave privada en formato der:
openssl pkcs8 -topk8 -inform PEM -outform DER -in <keyFileName>.key -out <keyFileName>.der -nocrypt

Se generarán cuatro archivos con nombres que comienzan con <keyFileName>. Utilizaremos <keyFileName>.crt y <keyFileName>.der en los pasos posteriores.

  1. A continuación, inicia sesión en AEM en http://localhost:<port>/aem/start.html.
  2. Selecciona Herramientas, Seguridad y Configuración de SSL.
  3. En la sección Almacenar credenciales, ingresa la contraseña del almacén de claves y del almacén de confianza.

  1. En la sección Claves y certificado, especifica el archivo .der para Clave privada y el archivo .crt para Certificado.

  1. En la siguiente sección, ingresa el dominio (localhost) y deja el puerto tal como está.
  2. Selecciona Hecho.

AEM se abrirá en el nuevo puerto especificado. Por ejemplo, https://localhost:8443.

  1. Inicia sesión en AEM utilizando HTTPS y descarga el certificado en el navegador utilizando el botón de candado.

Ahora, importemos el certificado en la ruta del almacén de claves utilizando la herramienta de clave.

  1. Abre una terminal y ve a la ubicación de la carpeta donde se encuentra privateKey.crt y ejecuta el siguiente comando:
keytool -import -trustcacerts -keystore <JAVA_HOME>/lib/security/cacerts -storepass changeit -noprompt -alias yourAliasName -file privateKey.crt

Asegúrate de abrir los puertos 8443 y 80 en la configuración del firewall.

  1. Añade el certificado privateKey.crt a un bucket de Amazon Simple Storage Service (Amazon S3).

Configura la fuente de datos utilizando el conector de Amazon Kendra para AEM

Puedes utilizar un índice existente o crear un nuevo índice para indexar documentos desde AEM utilizando el conector de AEM. A continuación, completa los siguientes pasos. Para obtener más información, consulta la Guía del desarrollador de Amazon Kendra.

  1. En la consola de Amazon Kendra, abre tu índice y selecciona Fuentes de datos en el panel de navegación.
  2. Selecciona Agregar fuente de datos.
  3. En Adobe Experience Manager, selecciona Agregar conector.

  1. En la sección Especificar los detalles de la fuente de datos, ingrese un nombre y opcionalmente una descripción, luego elija Siguiente.

  1. En la sección Definir acceso y seguridad, seleccione el tipo de origen AEM On-Premise o AEM como servicio en la nube y ingrese la URL del host de AEM. Puede encontrar la URL en la configuración de AEM.

Si está utilizando AEM On-Premise, ingrese la URL del host del servidor AEM On-Premise. Luego elija Buscar S3 y elija el bucket de S3 con el certificado SSL.

Si está utilizando AEM como servicio en la nube, puede utilizar la URL del autor https://author-xxxxxx-xxxxxxx.adobeaemcloud.com.

  1. Bajo Autenticación, tienes dos opciones, Autenticación básica y Autenticación OAuth 2.0.

Si selecciona Autenticación básica, para Secreto de AWS Secrets Manager, elija Crear y agregar un nuevo secreto. Luego ingrese un nombre para el secreto, el nombre de usuario del sitio AEM y la contraseña. El usuario debe tener permisos de administrador o ser un usuario administrador.

Si selecciona Autenticación OAuth 2.0, para Secreto de AWS Secrets Manager, elija Crear y agregar un nuevo secreto. Ingrese un nombre para el secreto, ID de cliente, secreto de cliente y clave privada. Si utiliza AEM como servicio en la nube, ingrese un nombre para el secreto, ID de cliente, secreto de cliente, clave privada, ID de organización, ID de cuenta técnica y host del Sistema de Administración de Identidad de Adobe (IMS).

  1. Elija Guardar o Agregar secreto.
  2. En la sección Configurar VPC y grupo de seguridad, opcionalmente puede elegir utilizar una VPC. Si es así, debe agregar subredes y grupos de seguridad de VPC.
  3. En la sección Rastreador de identidad, elija rastrear información de identidad en usuarios y grupos con acceso a ciertos documentos y almacenar esto en el almacén principal o de identidad de Amazon Kendra.

Esto es útil para filtrar los resultados de búsqueda según el usuario o el acceso de su grupo a los documentos.

  1. En la sección IAM, cree un nuevo rol de IAM o elija un rol de IAM existente para acceder a las credenciales del repositorio y indexar el contenido.
  2. Elija Siguiente.

  1. En la sección Configurar ajustes de sincronización, proporcione información sobre el alcance de su sincronización.

Puede incluir los archivos que se van a rastrear utilizando patrones de inclusión o excluirlos utilizando patrones de exclusión. Cuando proporcione un patrón en la sección Patrones de inclusión, solo se rastrearán los documentos que coincidan con ese patrón. Cuando proporcione un patrón en la sección Patrones de exclusión, los documentos que coincidan con ese patrón no se rastrearán.

  1. Si utiliza AEM On-Premise y la zona horaria de su servidor es diferente a la zona horaria del conector AEM de Amazon Kendra o del índice, puede especificar la zona horaria del servidor para que coincida con el conector AEM o el índice en la sección ID de zona horaria.

La zona horaria predeterminada para AEM On-Premise es la zona horaria del conector AEM de Amazon Kendra o del índice. La zona horaria predeterminada para AEM como servicio en la nube es la Hora Media de Greenwich.

  1. Elija el Modo de sincronización (en esta publicación, seleccione Sincronización completa).

Con la opción Sincronización completa, cada vez que se ejecuta la sincronización, Amazon Kendra rastreará todos los documentos e ingresará cada documento incluso si ya se ha ingresado antes. La actualización completa le permite restablecer su índice de Amazon Kendra sin necesidad de eliminar y crear un nuevo origen de datos. Si elige Sincronización de contenido nuevo o modificado o Sincronización de contenido nuevo, modificado o eliminado, cada vez que se ejecuta el trabajo de sincronización, procesará solo los objetos agregados, modificados o eliminados desde el último rastreo. Los rastreos incrementales pueden ayudar a reducir el tiempo de ejecución y el costo cuando se utilizan con conjuntos de datos que agregan nuevos objetos a fuentes de datos existentes de manera regular.

  1. Para Frecuencia de ejecución de la sincronización, elija Ejecutar a petición.
  2. Elija Siguiente.

  1. En la sección Configurar asignaciones de campos, opcionalmente puede seleccionar los campos de origen de datos predeterminados generados por Amazon Kendra que desea asignar a su índice. Para agregar campos de origen de datos personalizados, elija Agregar campo para crear un nombre de campo de índice al que se asignará y el tipo de datos del campo. Especifique el nombre del campo AEM, el nombre del campo de índice y el tipo de datos.

  1. Elija Siguiente.

  1. Revise su configuración y elija Agregar origen de datos.

  1. Después de agregar el origen de datos, elija Orígenes de datos en el panel de navegación, seleccione el origen de datos recién agregado y elija Sincronizar ahora para iniciar la sincronización del origen de datos con el índice de Amazon Kendra.

El proceso de sincronización dependerá de la cantidad de datos que se deban rastrear.

Ahora habilitemos el control de acceso para el índice de Amazon Kendra.

  1. En el panel de navegación, elija su índice.
  2. En la pestaña Control de acceso de usuario, elija Editar configuración.

  1. Cambie la configuración para que se vea como en la siguiente captura de pantalla.
  2. Elija Siguiente.

  1. Elija Actualizar.

Espere unos minutos para que el índice se actualice con los cambios. Ahora veamos cómo realizar una búsqueda inteligente con Amazon Kendra.

Realizar una búsqueda inteligente con Amazon Kendra

Antes de intentar buscar en la consola de Amazon Kendra o mediante la API, asegúrese de que la sincronización de la fuente de datos esté completa. Para verificarlo, vea las fuentes de datos y verifique si la última sincronización fue exitosa.

Ahora estamos listos para buscar en nuestro índice.

  1. En la consola de Amazon Kendra, vaya al índice y elija Buscar contenido indexado en el panel de navegación.
  2. Consultemos el índice utilizando la consulta “¿Cuál fue el impacto de la ola de calor de Siberia?” sin proporcionar un token de acceso.

Según la configuración de control de acceso en el índice, se necesita un token de acceso válido para acceder al contenido que el usuario está autorizado a ver; por lo tanto, cuando usamos esta consulta de búsqueda sin configurar ningún nombre de usuario o grupo, no se devuelven resultados.

  1. A continuación, elija Aplicar token y configure el nombre de usuario o la identificación de correo electrónico del usuario (por ejemplo, [email protected]) que tiene acceso al contenido de AEM.

Mientras se rastrea la fuente de datos de AEM, el conector establecería la identificación de correo electrónico del usuario como principal. Si la identificación de correo electrónico del usuario no está disponible, entonces se establecería el nombre de usuario como principal.

La siguiente captura de pantalla muestra un ejemplo con la identificación de correo electrónico del usuario [email protected] configurada como principal.

El siguiente ejemplo utiliza el nombre de usuario user-dev-2 configurado como principal.

  1. Ahora intentemos buscar el mismo contenido con el token del usuario [email protected], quien no está autorizado para ver este documento específico que apareció en los resultados de la consulta anterior.

Esto confirma que los documentos ingresasdos por el conector de Amazon Kendra para AEM honran los ACL establecidos por y dentro de AEM y estos mismos ACL se aplican en los resultados de búsqueda en base al token aplicado.

Limpiar

Para evitar incurrir en costos futuros, limpie los recursos creados como parte de esta solución. Si creó un nuevo índice de Amazon Kendra mientras probaba esta solución, elimínelo. Si solo agregó una nueva fuente de datos utilizando el conector de Amazon Kendra para AEM, elimine esa fuente de datos.

Conclusión

Con el conector de Amazon Kendra para Adobe Experience Manager, su organización puede buscar páginas y activos de forma segura utilizando la búsqueda inteligente impulsada por Amazon Kendra.

Para obtener más información sobre el conector de Amazon Kendra para AEM, consulte Adobe Experience Manager.

Para obtener más información sobre otros conectores integrados de Amazon Kendra para fuentes de datos populares, consulte los conectores nativos de Amazon Kendra.