Volver
Kevin Riedl

14 min de lectura · 11 Jun 2026
Última revisión

Siguiente
Se crea en tu dispositivo, sin conectar con Instagram. Copiamos el enlace para su sticker de enlace.

RAG sobre SharePoint, Confluence y Google Drive: arquitectura permissions-first

El problema difícil del RAG empresarial son los permisos: el asistente nunca debe mostrar un documento a quien no pueda verlo. Un embedding no conserva ni aplica por sí solo la autorización de la fuente. Aplique el acceso antes de generar: adjunte a cada chunk el contexto de acceso nativo, o mantenga una consulta autoritativa, y autorice cada resultado antes de que llegue al modelo. No reduzca usuarios directos, grupos, dominios, enlaces, herencia y protección a una regla universal basada solo en grupos o en deny.

Este es el complemento de implementación de nuestra checklist de production-readiness para RAG, que señala los permisos por usuario como el problema de seguridad difícil. Esta entrada explica cómo resolverlo de verdad. Las funciones específicas de proveedor y las de preview cambian rápido; vuelva a revisar la documentación enlazada antes de construir.

¿Está construyendo un asistente RAG sobre sus almacenes de documentos?

 Reserve una consulta gratuita

Por qué los permisos son la parte difícil

El modo de fallo en una frase: el modelo compone una respuesta fluida basada en un documento que el usuario que pregunta nunca tuvo permiso para ver, porque el retrieval hizo match por similitud semántica, no por autorización. Una vez que un documento se trocea en chunks y se embebe en un índice compartido, los propietarios, niveles de acceso y etiquetas de sensibilidad del sistema fuente no viajan con el vector a menos que usted los lleve deliberadamente. Un vector store no tiene noción de quién pregunta.

Microsoft documenta que Microsoft 365 Copilot solo usa datos a los que puede acceder el usuario autenticado y respeta controles de SharePoint y cifrado por etiquetas. Aun así puede facilitar el hallazgo de contenido ya sobrecompartido. Restricted Content Discovery es un control temporal de SharePoint con límites documentados, y Data Access Governance ayuda a analizar permisos. Ninguno sustituye permisos correctos en la fuente. (1, 2)

Decirle al modelo que no revele un documento no es control de acceso. OWASP mantiene prompt injection como LLM01 y NIST documenta la inyección indirecta mediante contenido recuperado. La lógica fiable de aplicación o datos debe autorizar antes de que el contenido llegue al modelo. (3)

El principio: aplicar en la capa de retrieval

El vector store nunca debe devolver un documento no autorizado en primer lugar, y el modelo nunca debe procesarlo. Eso se logra etiquetando cada chunk con metadatos ACL normalizados y versionados en el momento del indexado e incluyendo un filtro de permisos en la consulta en el momento del retrieval. Filtrar después del retrieval, en la capa de aplicación o en el prompt, falla de dos formas: desperdicia la ventana de contexto trayendo documentos solo para descartarlos, y si la lógica de la app tiene un bug o se elude con una injection, los documentos pasan igual. El post-filtrado además rompe silenciosamente el recall, porque quitar los chunks no autorizados de un conjunto top-k puede dejar al modelo sin nada cuando los resultados autorizados quedaban justo fuera de k. Pre-filtre en la búsqueda, o sobre-recupere varias veces k y luego filtre.

Modelos de permisos por fuente

Cada fuente tiene sus propios principals, herencia, enlaces y controles de protección. Use una identidad de conector dedicada con el mínimo privilegio y alcance necesarios. Normalice para buscar con eficiencia, pero conserve suficientes hechos nativos para reproducir la autorización efectiva.

FuenteCómo funcionan los permisosLa trampa a manejar
SharePoint / OneDrive (Microsoft Graph)Los permisos de DriveItem pueden ser directos o heredados; use inheritedFrom y los campos grantedToV2Los permisos de Graph son solo una parte. La pertenencia al site, los enlaces, la herencia rota y el cifrado por etiqueta también pueden decidir el acceso. (4)
Confluence CloudVer exige acceso al producto y al space, además de todas las restricciones de página aplicables; las de vista se heredanUna respuesta de restricción directa no demuestra acceso efectivo. Evalúe los ancestros y gobierne los enlaces públicos, que pueden eludir restricciones normales. (5)
Google DriveLos tipos son user, group, domain y anyone; los roles incluyen owner, organizer, fileOrganizer, writer, commenter y readerLos permisos suelen propagarse hacia abajo. Una concesión directa puede ampliar acceso, pero una carpeta de acceso limitado puede restringir el acceso heredado. (6)

En Microsoft Graph use grantedToV2 y grantedToIdentitiesV2; los campos antiguos están deprecados. Elija los permisos delegados o de aplicación menos privilegiados y, cuando sea posible, acceso Selected por recurso en vez de lectura de todo el tenant. (4)

Patrones de implementación que aguantan

  • Almacene principals nativos estables. Los grupos reducen cardinalidad, pero también pueden decidir el acceso usuarios directos, enlaces de dominio o anyone, restricciones heredadas y estado de protección.
  • Vincule cada consulta al usuario autenticado. Use IDs inmutables de sujeto y tenant y resuelva derechos efectivos o consulte la fuente. El flujo On-Behalf-Of de Microsoft transporta permisos delegados de usuario, no application roles; Google y Atlassian requieren diseños propios. (8)
  • Haga obligatoria la autorización en retrieval. Use filtros de conjunto para reglas aditivas y comprobaciones explícitas para ancestros, acceso limitado, enlaces y cifrado. No existe una regla universal segura de deny sobre grant.
  • Maneje el groups-overage de Entra. Microsoft documenta 200 grupos para claims JWT y 150 para SAML. Superado el límite, el token omite la lista y emite un indicador; obtenga la pertenencia completa antes de autorizar. (7)
  • Postgres RLS puede aplicar el predicado cerca de pgvector, pero no es imposible eludirlo. Superusers, roles BYPASSRLS y normalmente propietarios de tabla lo omiten. Use roles de aplicación sin privilegios, policies probadas e identidad local a la transacción. (9)

Hay una bifurcación genuina en las recomendaciones que conviene nombrar. Un bando (incluido AWS) sostiene que el filtrado de metadatos en tiempo de consulta por sí solo no basta y que debería volver a verificar la autorización contra la fuente en el retrieval, porque los metadatos sincronizados se quedan obsoletos. El otro (incluidos los patrones de referencia de Microsoft) sincroniza las ACL al índice y las aplica con el token del usuario en tiempo de consulta, por throughput. Es un trade-off real: frescura frente a latencia. Elija según lo sensibles que sean los datos.

El problema de frescura que nadie presupuesta

Los permisos materializados no reflejan automáticamente una revocación de la fuente. Los change feeds son señales, no prueba de que se recalculó el acceso efectivo de todos los descendientes. Google documenta cambios de ACL en el log del usuario solo para propietarios, cuentas de servicio incluidas en la ACL o usuarios directamente afectados; para shared drives use el log correspondiente. Combine eventos incrementales, reconciliación periódica y un umbral de frescura fail-closed. (10)

El borrado es la otra mitad. Cuando exista una obligación de supresión conforme al GDPR y los chunks, embeddings, cachés o logs derivados sigan siendo datos personales, elimínelos o anonimícelos respetando los motivos y excepciones legales. Los embeddings no son datos personales de forma categórica. Un ataque publicado recuperó exactamente el 92 por ciento de entradas de 32 tokens en una configuración white-box específica con dos modelos. Demuestra un riesgo real, no una tasa universal. (11, 12)

GDPR y residencia

La minimización y limitación del almacenamiento favorecen un corpus acotado y retención breve de artefactos derivados. Los logs de retrieval ayudan a rendir cuentas, pero pueden contener datos personales y deben minimizarse, protegerse y expirar. Si el proveedor actúa como encargado, el artículo 28 exige términos contractuales adecuados; el capítulo V rige transferencias internacionales. Un endpoint de inferencia en la UE no demuestra por sí solo residencia integral. Verifique flujo, almacenamiento, soporte y subencargados. Véase residencia de datos en la UE para apps de IA en 2026. (11)

La arquitectura de referencia, y los anti-patrones

De extremo a extremo: haga la ingesta de cada fuente con una identidad que pueda leer todo el contenido y las ACL; extraiga la ACL efectiva por elemento (respetando la herencia rota, recorriendo los ancestros de Confluence, leyendo la herencia de Drive); trocee, embeba y adjunte la ACL normalizada y versionada como metadato filtrable en cada chunk; recupere con la identidad del usuario final y un filtro de permisos obligatorio; genere solo a partir de chunks autorizados; registre cada decisión; y ejecute un bucle de frescura a partir de los change feeds de la fuente con resync explícito para los cambios heredados y borrados en cascada hasta chunks y embeddings.

Son anti-patrones: un índice compartido sin autorización obligatoria; filtrar solo en el prompt; consultar como una cuenta de servicio ampliamente autorizada; guardar grupos y descartar usuarios directos o enlaces; reducir todos los productos a una regla deny o grant; tratar una restricción directa de Confluence como acceso efectivo; asumir que Drive solo amplía acceso; ignorar el cifrado por etiqueta de SharePoint; aceptar autorización obsoleta sin límite; y conservar derivados personales sin base jurídica.

Kevin Riedl

"El modelo no es tu control de acceso, y el prompt no es tu frontera de seguridad. Si un usuario no tiene permiso para leer un documento, el vector store nunca debe devolverlo. Todo lo demás, las etiquetas, la frescura, el log de auditoría, está al servicio de esa única regla."

Preguntas frecuentes

¿Cómo se aplican los permisos en RAG?
Capture el contexto de autorización nativo en cada chunk o mantenga una consulta autoritativa, vincule retrieval al usuario autenticado y autorice cada resultado antes del modelo. Incluya usuarios directos, grupos, enlaces, herencia y controles de protección.
¿RAG respeta los permisos de SharePoint?
No automáticamente. Un RAG propio debe reproducir permisos directos y heredados, enlaces, acceso al site y cifrado por etiquetas, y filtrar antes de generar. Microsoft documenta que Microsoft 365 Copilot respeta el acceso existente del usuario autenticado.
¿Qué es el security trimming en RAG?
Eliminar los resultados que el usuario actual no tiene permiso para ver. El security trimming de early-binding aplica el conjunto de principals permitidos del usuario como filtro obligatorio en la búsqueda, de modo que los documentos no autorizados nunca se devuelven, frente al post-filtrado, que trae y luego descarta y es a la vez más lento y propenso a fugas.
¿Cómo se implementan permisos por usuario en RAG?
Vincule la consulta a IDs inmutables de usuario y tenant, resuelva derechos efectivos según el modelo de delegación de la fuente y autorice antes del contexto del modelo. On-Behalf-Of es una opción de Microsoft, no un patrón universal.
¿Debo almacenar IDs de usuario o IDs de grupo en cada chunk?
Almacene todos los tipos de principal que influyan en el acceso. Los grupos reducen cardinalidad, pero usuarios directos, enlaces, restricciones heredadas y protección también pueden ser decisivos.
¿Cómo mantengo los permisos frescos para no filtrar tras una revocación?
Use los change feeds de la fuente (la Changes API de Google Drive, el delta de SharePoint más el indexer, el polling de Confluence) para un sync de ACL incremental, y resincronice explícitamente los cambios heredados o de scope padre, el punto ciego habitual. O bien materialice más rápido con webhooks, o bien haga una verificación de autorización en vivo de última milla en tiempo de consulta.
¿Puedo simplemente decirle al modelo que no revele documentos restringidos?
No. OWASP mantiene prompt injection como LLM01 y NIST documenta la inyección indirecta mediante contenido recuperado. Aplique acceso en lógica fiable de retrieval o datos antes de que el modelo vea el contenido.
¿Puede pgvector aplicar acceso por usuario?
Postgres RLS puede aplicar un predicado cerca de pgvector, pero superusers, roles BYPASSRLS y normalmente propietarios de tabla lo omiten. Use roles sin privilegios, policies probadas e identidad local a la transacción.
¿Son los embeddings de documentos datos personales bajo el GDPR?
Pueden serlo cuando se relacionan con una persona identificable, pero no de forma categórica. Evalúe contenido, capacidad de enlace, riesgo de inversión, finalidad, retención y supresión.
¿En qué se diferencia la ingesta de permisos de Confluence?
Ver exige acceso al producto y al space, además de toda restricción directa o heredada aplicable. Una respuesta directa de la API no es una decisión efectiva; evalúe ancestros y enlaces públicos.

Reflexiones finales

El RAG empresarial vive o muere por una regla: si un usuario no puede leer un documento, el modelo nunca debe verlo. Los embeddings no aplican la autorización de la fuente, los prompts no son una frontera de seguridad y los permisos sincronizados crean una ventana de revocación.

Preserve la semántica efectiva de cada fuente, autorice antes de generar, falle de forma cerrada ante estado obsoleto y aplique controles proporcionales a embeddings y logs.

¿Quiere un RAG permissions-first construido sobre su SharePoint, Confluence o Drive?

 Reserve una consulta gratuita

Fuentes y lecturas adicionales

  1. Microsoft 365 Copilot architecture, data protection, and auditing
  2. Microsoft: Restricted Content Discovery and Data Access Governance reports
  3. OWASP Top 10 for LLM Applications and NIST AI RMF Generative AI Profile
  4. Microsoft Graph: list DriveItem permissions and Selected permissions overview
  5. Atlassian: Confluence page restrictions, content restrictions API, and public-link security
  6. Google Drive API: manage sharing and Permissions resource
  7. Microsoft Entra ID token claims reference
  8. Microsoft identity platform OAuth 2.0 on-behalf-of flow
  9. PostgreSQL row security policies
  10. Google Drive API: change tracking overview
  11. Regulation (EU) 2016/679 (GDPR)
  12. Morris et al.: Text Embeddings Reveal (Almost) As Much As Text

Ayuda para IA en producción

Si estás construyendo un producto de IA y te preocupan el coste de inferencia, la arquitectura o la preparación para producción, Wavect ayuda a fundadores a convertir prototipos de IA en sistemas fiables.

Ruta de servicio:

Tu bandeja, sin ruido

Sigue el trabajo que te importa

Recibe un correo breve cuando publiquemos algo nuevo. Sigue todo el blog o solo los temas que te interesan.

¿Qué quieres recibir?
Elige tus temas

Gratis, doble opt-in y sin píxeles de seguimiento.

Volver
Kevin Riedl

14 min de lectura · 11 Jun 2026
Última revisión

Siguiente

Recibe la próxima nota de campo sobre IA y agentes

Un correo breve cuando publiquemos. Sin píxeles de seguimiento ni contenido de relleno.

Gratis, doble opt-in y sin píxeles de seguimiento.