A nivel mundial, muchas organizaciones tienen datos comerciales críticos dispersos entre varios repositorios de contenido, lo que dificulta el acceso a esta información de manera optimizada y cohesiva. Crear una experiencia de búsqueda unificada y segura es un desafío importante para las organizaciones porque cada repositorio contiene una amplia gama de formatos de documentos y mecanismos de control de acceso.
amazona kendra es un servicio de búsqueda empresarial inteligente que permite a los usuarios buscar en diferentes repositorios de contenido. Los clientes son responsables de autenticar y autorizar a los usuarios para obtener acceso a su aplicación de búsqueda, y Amazon Kendra permite la búsqueda segura de aplicaciones empresariales, asegurándose de que los resultados de la consulta de búsqueda de un usuario solo incluyan documentos que el usuario está autorizado a leer. Amazon Kendra puede validar fácilmente la identidad de usuarios individuales y grupos de usuarios que realizan búsquedas con la adición de tokens de búsqueda seguros. Al agregar tokens de usuario para la búsqueda segura, se simplifica y protege la realización de búsquedas filtradas basadas en el acceso en Amazon Kendra. Puede pasar de forma segura la información de acceso del usuario en la carga útil de la consulta en lugar de utilizar filtros de atributos para lograrlo. Con esta característica, Amazon Kendra puede validar la información del token y aplicarla automáticamente a los resultados de búsqueda para un filtrado basado en el acceso preciso y seguro.
Amazon Kendra admite el control de acceso de usuarios basado en tokens mediante los siguientes tipos de tokens:
- Abrir ID
- JWT con un secreto compartido
- JWT con una clave pública
- JSON
Previamente, vimos una demostración de control de acceso de usuarios basado en token en Amazon Kendra con Open ID. En esta publicación, demostramos el control de acceso de usuarios basado en tokens en Amazon Kendra con JWT con un secreto compartido. JWT, o JSON Web Token, es un estándar abierto que se utiliza para compartir información de seguridad entre un cliente y un servidor. Contiene objetos JSON codificados, incluido un conjunto de notificaciones. Los JWT se firman con un algoritmo criptográfico para garantizar que los reclamos no se puedan modificar después de que se emita el token. Los JWT son útiles en escenarios relacionados con la autorización y el intercambio de información.
Los JWT constan de tres partes separadas por puntos (.):
- Encabezamiento – Contiene partes como el tipo de token, que es JWT, el algoritmo de firma que se utiliza, como HMAC SHA256 o RSA, y un identificador de clave opcional.
- carga útil – Contiene varios pares clave-valor, llamados reclamaciones, que son emitidos por el proveedor de identidad. Además de varios reclamos relacionados con la emisión y el vencimiento del token, el token también puede contener información sobre el principal y el arrendatario individuales.
- Firma – Para crear la parte de la firma, toma el encabezado codificado, la carga útil codificada, un secreto, el algoritmo especificado en el encabezado y lo firma.
Por lo tanto, un JWT se parece a lo siguiente:
El siguiente es un encabezado de muestra:
La siguiente es la carga útil de muestra:
El JWT se crea con una clave secreta, y esa clave secreta es privada para usted, lo que significa que nunca la revelará al público ni la inyectará dentro del JWT. Cuando recibe un JWT del cliente, puede verificar el JWT con la clave secreta almacenada en el servidor. Cualquier modificación al JWT resultará en una falla de verificación (validación de JWT).
Esta publicación demuestra el uso de muestra de un JWT con una clave de acceso compartida y su uso para proteger los índices de Amazon Kendra con controles de acceso. En producción, utiliza un proveedor de servicios de autenticación seguro de su elección y según sus requisitos para generar JWT.
Para obtener más información sobre los JWT, consulte Introducción a los tokens web JSON.
Resumen de la solución
Similar a la post con Open ID, esta solución está diseñada para que un conjunto de usuarios y grupos realicen consultas de búsqueda en un repositorio de documentos, y los resultados se devuelven solo de aquellos documentos que están autorizados para acceder dentro de ese grupo. La siguiente tabla describe a qué documentos está autorizado cada usuario para acceder a nuestro caso de uso. Los documentos que se utilizan en este ejemplo son un subconjunto de los documentos públicos de AWS.
Usuario | Grupo procesos | Tipo de documento autorizado para el acceso |
Invitad@s | . | Blog |
Patricia | Local | Blogs, guías de usuario |
James | Ventas | Blogs, guías de usuario, estudios de casos |
Juan | Marketing | Blogs, guías de usuario, estudios de casos, informes de analistas |
Mary | Solutions Architect | Blogs, guías de usuario, estudios de casos, informes de analistas, libros blancos |
El siguiente diagrama ilustra la creación de un JWT con una clave de acceso compartida para controlar el acceso de los usuarios a los documentos específicos en el índice de Amazon Kendra.
Cuando un índice de Amazon Kendra recibe una llamada a la API de consulta con un token de acceso de usuario, valida el token mediante una clave secreta compartida (almacenada de forma segura en Director de secretos de AWS) y obtiene parámetros como el nombre de usuario y los grupos en la carga útil. El índice de Amazon Kendra filtra los resultados de búsqueda en función de la Lista de control de acceso (ACL) almacenada y la información recibida en el JWT del usuario. Estos resultados filtrados se devuelven en respuesta a la llamada API de consulta realizada por la aplicación.
Requisitos previos
Para seguir los pasos de esta publicación, asegúrese de tener lo siguiente:
Genere un JWT con una clave secreta compartida
El siguiente código Java de muestra muestra cómo crear un JWT con una clave secreta compartida utilizando el código abierto jsonwebtoken paquete. En producción, utilizará un proveedor de servicios de autenticación seguro de su elección y en función de sus requisitos para generar JWT.
Pasamos la información del nombre de usuario y los grupos como reclamos en la carga útil, firmamos el JWT con el secreto compartido y generamos un JWT específico para ese usuario. Proporcione una cadena de 256 bits como su secreto y conserve el valor del secreto compartido codificado en URL base64 para usarlo en un paso posterior.
Cree un índice de Amazon Kendra con un secreto compartido de JWT
Para obtener instrucciones sobre cómo crear un índice de Amazon Kendra, consulte Crear un índice. Anote el Gestión de identidades y accesos de AWS (IAM) que creó durante el proceso. Proporcione al rol acceso al depósito de S3 y Secrets Manager siguiendo las principio de menor privilegio. Para ver políticas de ejemplo, consulte Ejemplo de políticas basadas en identidad de IAM. Después de crear el índice, su consola de Amazon Kendra debería verse como la siguiente captura de pantalla.
Complete los siguientes pasos para agregar su secreto:
- En la consola de Amazon Kendra, vaya a la Control de acceso de usuario pestaña en la página de detalles de su índice.
- Elige Editar la configuración.
- Debido a que estamos implementando un control de acceso basado en tokens, seleccione Sí bajo Configuraciones de control de acceso.
- under Configuración de fichas, escoger JWT con secreto compartido para Tipo de token.
- tipo de secreto, escoger Nuevo.
- Nombre secreto, introduzca
AmazonKendra-jwt-shared-secret
o cualquier nombre de su elección. - ID de clave, ingrese el ID de clave para que coincida con su JWT que creó en el código Java de muestra.
- Algoritmo, elija el algoritmo HS256.
- Secreto compartido, ingrese su secreto codificado de URL base64 retenido generado a partir del código Java anteriormente.
- Elige Guardar secreto.
El secreto ahora se almacenará en Secrets Manager como un conjunto de claves web JSON (JWKS). Puede localizarlo en la consola de Secrets Manager. Para obtener más detalles, consulte Uso de un token web JSON (JWT) con un secreto compartido.
- Ampliar la opción Configuracion avanzada .
En este paso, configuramos el nombre de usuario y los grupos que se extraerán de las notificaciones de JWT y se compararán con la ACL cuando la firma sea válida.
- Usuariointroduzca su nombre de usuario.
- Grupos, entrar en grupos.
- Deje los campos opcionales como predeterminados.
- Elige Siguiente, A continuación, elija Actualizar.
Prepare su depósito S3 como fuente de datos
Para preparar un depósito de S3 como fuente de datos, cree un depósito de S3. En la terminal con el Interfaz de línea de comandos de AWS (CLI de AWS) o AWS CloudShell, ejecute los siguientes comandos para cargar los documentos y los metadatos en el depósito de la fuente de datos:
Los documentos que se consultan se almacenan en un depósito S3. Cada tipo de documento tiene una carpeta separada: blogs, estudios de casos, informes de analistas, guías de usuario y libros blancos. Esta estructura de carpetas está contenida en una carpeta denominada Datos. Los archivos de metadatos, incluidas las ACL, se encuentran en una carpeta llamada Meta.
Usamos el conector Amazon Kendra S3 para configurar este depósito S3 como fuente de datos. Cuando la fuente de datos se sincroniza con el índice de Amazon Kendra, rastrea e indexa todos los documentos y recopila las ACL y los atributos de los documentos de los archivos de metadatos. Para obtener más información sobre las ACL que utilizan archivos de metadatos, consulte Metadatos de documentos de Amazon S3. Para este ejemplo, usamos el atributo personalizado DocumentType
para indicar el tipo de documento. Después de la carga, la estructura de su depósito S3 debería verse como la siguiente captura de pantalla.
Para establecer el atributo personalizado DocumentType
, completa los siguientes pasos:
- Elija su índice Kendra y elija Definición de faceta en el panel de navegación.
- Elige Agregue campo.
- Nombre del campo, introduzca
DocumentType
. - Tipo de datos, escoger Cordón.
- Elige Añada.
Ahora puede ingerir documentos del depósito que creó en el índice de Amazon Kendra mediante el conector S3. Para obtener instrucciones completas, consulte Ingesta de documentos a través del conector Amazon Kendra S3.
- En Configurar ajustes de sincronización sección, para Ingrese la ubicación de la fuente de datos, ingrese su depósito S3 (
s3://kendra-demo-bucket/
). - Ubicación de la carpeta del prefijo de los archivos de metadatos, introduzca
Meta/
. - Expandir Configuración adicional.
- En Incluir patrones pestaña, para Prefijo, introduzca
Data/
.
Para obtener más información acerca de los conectores admitidos, consulte Conectores.
- Elige Siguiente, entonces Siguiente de nuevo, entonces Actualizar.
- Espere a que se cree la fuente de datos, luego seleccione la fuente de datos y elija Sincronizar ahora.
La sincronización de la fuente de datos puede tardar entre 10 y 15 minutos en completarse. Cuando se complete la sincronización, Estado de la última sincronización debería mostrarse como Exitoso.
Consultar un índice de Amazon Kendra
Para ejecutar una consulta de prueba en su índice, complete los siguientes pasos:
- En la consola de Amazon Kendra, elija Buscar contenido indexado en el panel de navegación.
- Expandir Consulta de prueba con un token de acceso.
- Elige Aplicar ficha.
- Podemos generar un JWT para el usuario y el grupo. En este ejemplo, creamos un JWT para el
AWS-SA
grupo. Reemplazamos nombre de usuario como María y grupos comoAWS-SA
en el paso de generación de JWT. - Ingrese el token generado y elija Aplicá.
Según la ACL, deberíamos obtener resultados de todas las carpetas: blogs, guías de usuario, estudios de casos, informes de analistas y documentos técnicos.
De manera similar, cuando inicia sesión como James desde el AWS-Sales
group y pasando el JWT correspondiente, tenemos acceso solo a blogs, guías de usuario y casos de estudio.
También podemos buscar en el índice como invitados sin pasar un token. El invitado solo puede acceder a los contenidos de la carpeta de blogs.
Experimente con otras consultas que se le ocurran mientras está conectado como diferentes usuarios y grupos y observe los resultados.
Limpiar
Para evitar incurrir en costos futuros, limpie los recursos que creó como parte de esta solución. Para eliminar el índice de Amazon Kendra y el depósito S3 creados mientras probaba la solución, consulte Limpiar. Para eliminar el secreto de Secrets Manager, consulte Eliminar un secreto de AWS Secrets Manager.
Conclusión
En esta publicación, vimos cómo Amazon Kendra puede realizar búsquedas seguras que solo arrojan resultados de búsqueda basados en el acceso del usuario. Con la adición de un JWT con una clave secreta compartida, podemos validar fácilmente la identidad de los usuarios individuales, así como de los grupos de usuarios que realizan búsquedas. Este enfoque similar se puede extender a una JWT con una clave pública. Para obtener más información, consulte Uso de un token web JSON (JWT) con un secreto compartido.
Acerca de los autores
Nitin Eusebio es arquitecto sénior de soluciones empresariales en AWS con más de 18 años de experiencia en ingeniería de software y arquitectura empresarial. Trabaja con los clientes para ayudarlos a crear aplicaciones bien diseñadas en la plataforma de AWS. Le apasiona resolver desafíos tecnológicos y ayudar a los clientes con su viaje a la nube.
Kruthi Jayasimha Rao es un arquitecto de soluciones de socios con un enfoque en IA y ML. Brinda orientación técnica a los socios de AWS sobre cómo seguir las mejores prácticas para crear soluciones seguras, resistentes y de alta disponibilidad en la nube de AWS.
Baya de Ishaan es ingeniero de software en Amazon Web Services y trabaja en Amazon Kendra, un motor de búsqueda empresarial. Le apasiona la seguridad y ha trabajado en los componentes clave de las funciones de control de acceso de Kendra durante los últimos 2 años.
akasha bhatia es un arquitecto principal de soluciones con AWS. Su enfoque actual es ayudar a los clientes empresariales a lograr sus resultados comerciales a través de la arquitectura e implementación de soluciones innovadoras y resistentes a escala. Ha trabajado en tecnología durante más de 15 años en empresas que van desde Fortune 100 hasta nuevas empresas en los verticales de fabricación, aeroespacial y minorista.
- Distribución de relaciones públicas y contenido potenciado por SEO. Consiga amplificado hoy.
- Platoblockchain. Inteligencia del Metaverso Web3. Conocimiento amplificado. Accede Aquí.
- Acuñando el futuro con Adryenn Ashley. Accede Aquí.
- Fuente: https://aws.amazon.com/blogs/machine-learning/secure-your-amazon-kendra-indexes-with-the-acl-using-a-jwt-shared-secret-key/
- :es
- $ UP
- 10
- 100
- 11
- 15 años
- 420
- 7
- 8
- 9
- a
- Poder
- Nuestra Empresa
- de la máquina
- lograr
- preciso
- Lograr
- a través de
- adición
- Aeroespacial
- Después
- AI
- algoritmo
- Todos
- permite
- Amazon
- amazona kendra
- Amazon Web Services
- entre
- analista
- y
- abejas
- Aplicación
- aplicaciones
- Aplicá
- enfoque
- arquitectura
- somos
- AS
- At
- atributos
- Autenticación
- autorización
- automáticamente
- Hoy Disponibles
- AWS
- basado
- BE
- porque
- "Ser"
- MEJOR
- y las mejores prácticas
- entre
- Poco
- Blogs
- build
- by
- llamar al
- , que son
- PUEDEN
- case
- Casos de Estudio
- Reto
- retos
- manera?
- Elige
- reclamaciones
- clase
- cliente
- Soluciones
- código
- Empresas
- completar
- componentes
- Configuración
- Consola
- que no contengo
- contiene
- contenido
- contenido
- control
- controles
- Correspondiente
- Precio
- Para crear
- creado
- Creamos
- creación
- crítico
- cripto
- criptográfico
- Current
- personalizado
- Clientes
- datos
- Fecha
- Predeterminado
- demostrar
- demuestra
- diseñado
- detalle
- detalles
- una experiencia diferente
- difícil
- disperso
- documento
- documentos
- DE INSCRIPCIÓN
- durante
- cada una
- pasan fácilmente
- permite
- Motor
- ingeniero
- Ingeniería
- garantizar
- Participar
- Empresa
- ejemplo
- Intercambio
- experience
- Fracaso
- Feature
- Caracteristicas
- Terrenos
- archivos
- filtración
- filtros
- Focus
- seguir
- siguiendo
- Fortune
- Desde
- ser completados
- futuras
- Obtén
- generar
- generado
- generación de AHSS
- Grupo procesos
- Grupo
- Invitad@s
- guía
- Guías
- Tienen
- cabeceras
- ayudando
- altamente
- Cómo
- Como Hacer
- HTML
- http
- HTTPS
- ID
- identificador
- Identidad
- implementación
- importar
- in
- incluir
- Incluye
- índice
- índices
- INSTRUMENTO individual
- información
- originales
- instantáneo
- Instrucciones
- De Operación
- ISS
- emisión
- Emitido
- IT
- SUS
- Java
- Juan
- json
- jwt
- Clave
- claves
- Niño
- APRENDE:
- como
- línea
- Lista
- Mira
- parece
- MIRADAS
- hecho
- para lograr
- Realizar
- gerente
- manera
- Fabricación
- muchos
- Match
- emparejado
- significa
- Meta
- metadatos
- Min
- ML
- más,
- nombre
- Llamado
- Navegar
- Navegación
- Nuevo
- objetos
- observar
- of
- on
- habiertos
- de código abierto
- solicite
- para las fiestas.
- Otro
- contornos
- paquete
- página
- pares
- cristal
- parámetros
- parte
- Socio
- socios
- partes
- pass
- Pasando (Paso)
- apasionado
- pasado
- Realizar
- realizar
- plataforma
- Platón
- Inteligencia de datos de Platón
- PlatónDatos
- políticas
- Publicación
- prácticas
- Preparar
- previamente
- Director de la escuela
- privada
- Producción
- proporcionar
- proveedor
- proporciona un
- público
- consultas
- distancia
- que van
- Leer
- recepción
- recibido
- recibe
- con respecto a
- reemplazar
- Informes
- repositorio
- Requisitos
- resistente
- Recursos
- respuesta
- responsable
- resultado
- Resultados
- el comercio minorista
- conservar
- volvemos
- género
- Función
- rsa
- Ejecutar
- Escala
- escenarios
- Buscar
- motor de búsqueda
- Secreto
- Sección
- seguro
- asegurado
- segura
- EN LINEA
- separado
- de coches
- Proveedor de servicios
- Servicios
- set
- Varios
- SHA256
- Compartir
- compartido
- tienes
- Mostrar
- Shows
- firmar
- firmado
- importante
- firma
- similares
- simplificado
- Software
- Ingeniero de Software
- Ingeniería de software
- a medida
- Soluciones
- Resolver
- Fuente
- soluciones y
- especificado
- estándar
- la creación de empresas
- paso
- pasos
- almacenados
- racionalizado
- Cordón
- estructura
- estudios
- tal
- Soportado
- soportes
- te
- mesa
- ¡Prepárate!
- Técnico
- Tecnología
- inquilino
- terminal
- test
- Pruebas
- esa
- La
- la información
- su
- Les
- Estas
- Tres
- A través de esta formación, el personal docente y administrativo de escuelas y universidades estará preparado para manejar los recursos disponibles que derivan de la diversidad cultural de sus estudiantes. Además, un mejor y mayor entendimiento sobre estas diferencias y similitudes culturales permitirá alcanzar los objetivos de inclusión previstos.
- equipo
- a
- ficha
- Tokens
- tipos
- unificado
- Enlance
- Uso
- utilizan el
- caso de uso
- Usuario
- usuarios
- VALIDAR
- validación
- propuesta de
- diversos
- Verificación
- verificar
- verticales
- web
- servicios web
- WELL
- que
- mientras
- Documentos Técnicos
- QUIENES
- amplio
- Amplia gama
- seguirá
- dentro de
- sin
- trabajado
- trabajando
- funciona
- Talleres
- años
- Usted
- tú
- zephyrnet
- Zip