c3.3 Aplica control de acceso a la recuperación con filtrado por metadatos
Adjunta metadatos (departamento, clasificación, tenant, fechas) a cada vector y filtra la recuperación según los atributos del usuario que consulta, para que el modelo solo vea documentos que ese usuario está autorizado a ver.
Guía de implementación
Cómo implementarlo en AWS
Provee archivos de metadatos para cada documento ingerido (tags, clasificación, unidad de negocio, timestamps) y filtra las consultas por atributos de usuario al momento de consultar. Usa los metadatos para aplicar niveles de clasificación, aislar tenants y aplicar acceso temporal. La aplicación debe establecer el filtro correcto en cada llamada a Bedrock.
La capa de recuperación es un límite de control de acceso
En una aplicación de RAG, el modelo responde usando lo que el recuperador extrae del knowledge base. Si la recuperación devuelve un documento que el usuario no debería ver, el modelo lo resumirá con gusto en la respuesta: una fuga de datos sin rastro obvio. Así que la recuperación no es solo un problema de relevancia; es un límite de autorización. El filtrado por metadatos es la forma de imponerlo: adjunta atributos (departamento, clasificación, tenant, fechas de vigencia) a cada vector y luego filtra cada consulta por los permisos del usuario que la solicita.
Adjunta metadatos en la ingesta
Cada documento fuente lleva un archivo lateral de metadatos (por ejemplo, document.pdf.metadata.json) con los atributos por los que filtrarás:
{
"metadataAttributes": {
"department": "finance",
"classification": "confidential",
"tenant_id": "acme-123"
}
}
Estos se convierten en campos filtrables en cada vector derivado de ese documento.
Filtra cada consulta por los permisos del llamador
En Retrieve / RetrieveAndGenerate, pasa una retrievalConfiguration cuyo filtro se construya a partir de los atributos del usuario autenticado, nunca de entradas proporcionadas por el usuario. Combina condiciones con andAll para que todas deban cumplirse:
{
"retrievalConfiguration": {
"vectorSearchConfiguration": {
"filter": {
"andAll": [
{ "equals": { "key": "tenant_id", "value": "acme-123" } },
{ "equals": { "key": "department", "value": "finance" } },
{ "notEquals": { "key": "classification", "value": "restricted" } }
]
}
}
}
}
Bedrock admite operadores como equals, notEquals, in, greaterThanOrEquals y los combinadores booleanos andAll / orAll.
Construye el filtro del lado del servidor a partir de una identidad de confianza
La seguridad de este control descansa por completo en de dónde vienen los valores del filtro. Resuelve tenant_id, department y el nivel de acceso a partir de la identidad verificada del llamador (los claims del JWT / la sesión), en tu backend, nunca dejes que el cliente envíe el filtro. Si un usuario pudiera fijar su propio tenant_id, el límite desaparece.
Nota de nomenclatura: mantén las claves de metadatos consistentes en todos los documentos; un error tipográfico (deptvsdepartment) excluye o filtra documentos en silencio. Valida el esquema de metadatos en la ingesta.
Cómo encaja todo
Criterios de aceptación
Los vectores llevan metadatos de clasificación/tenant; las consultas filtran por atributos de usuario; un usuario de prueba no puede recuperar documentos por encima de su nivel ni de otro tenant.
Implementación práctica
Cómo se implementa este control en cada arquitectura de referencia:
Cada vector lleva metadatos de clasificación/tenant; la cuenta de aplicación pasa los atributos del usuario autenticado y la cuenta de IA generativa filtra la recuperación solo a lo que ese usuario puede ver.
- Provee archivos de metadatos (clasificación, unidad de negocio, tenant, timestamps) para cada documento ingerido para que cada vector quede etiquetado.
- En la cuenta de aplicación, deriva el filtro de los atributos del usuario autenticado (claims de Cognito/Identity Center) y pásalo en cada llamada de recuperación.
- Aplica el filtro de metadatos en cada consulta a la base de conocimiento de Bedrock para que la recuperación nunca devuelva documentos por encima del nivel del usuario ni de otro tenant.
Cómo validar: Los vectores llevan metadatos de clasificación/tenant; un usuario de prueba no puede recuperar documentos por encima de su nivel ni de otro tenant; el filtro se establece del lado del servidor en cada consulta.
Evita: Confiar en que el cliente envíe el filtro correcto. Derívalo de la identidad autenticada del lado del servidor para que una petición manipulada no pueda ampliar la recuperación.
Los vectores se etiquetan con metadatos de clasificación/tenant y la capa de aplicación filtra la recuperación por los atributos del usuario autenticado en cada consulta.
- Adjunta metadatos (clasificación, tenant, unidad de negocio, fechas) a cada documento ingerido.
- Deriva el filtro de recuperación de los claims del usuario autenticado y establécelo en cada consulta a la base de conocimiento.
- Verifica que un usuario no pueda recuperar por encima de su nivel ni entre tenants.
Cómo validar: Los vectores llevan metadatos; las consultas filtran por atributos de usuario; un usuario de prueba no puede cruzar fronteras de clasificación ni de tenant.
Evita: Un solo índice compartido sin filtro por usuario. Etiqueta los vectores y filtra por identidad para que RAG respete el mismo control de acceso que los datos fuente.
Amenazas que atiende
- La IA exponiendo datos que el usuario que consulta no está autorizado a ver.
- Exposición de datos entre tenants en vector stores compartidos.
Servicios AWS
Precios
El filtrado por metadatos no añade cargo aparte: pagas la recuperación del knowledge base, los embeddings y los costos del vector store normales. El filtrado puede incluso reducir un poco el costo al disminuir el conjunto de candidatos que el modelo debe procesar. Consulta Configure and customize queries and response generation.
Mapeos de frameworks
OWASP GenAI/LLM Top 10 (2026)
- LLM02 Sensitive Information Disclosure
- LLM08 Hidden Context Exposure
NIST AI Risk Management Framework (AI 100-1)
- MANAGE.1 AI risks are prioritized, responded to and managed
AWS Well-Architected Generative AI Lens (Security)
- GENSEC01-BP03 Implement least privilege access to data stores
Recursos de aprendizaje
Referencias
- AWS SRA para IA — Capacidad 3, Filtrado por metadatos para recuperación segura
AI Security Maturity Model