Por qué la seguridad de un sistema RAG no se resuelve con las mismas reglas que la de una aplicación tradicional
Una arquitectura RAG (Retrieval-Augmented Generation) introduce riesgos que no existen en una aplicación tradicional: inyección de prompt a través de documentos recuperados, fuga de información entre usuarios o clientes cuando el índice vectorial no aplica permisos de forma estricta, y salida de datos sensibles hacia APIs de terceros en cada llamada de embeddings o de inferencia.
Desplegar el sistema en un entorno de nube privada o híbrida, con aislamiento de datos real a nivel de recuperación y componentes que la organización pueda controlar y auditar, reduce ambos riesgos a la vez: el de seguridad y el de dependencia de un proveedor cerrado.
Un sistema RAG no es seguro porque el modelo sea de confianza. Es seguro cuando es estructuralmente imposible recuperar un documento para el que el usuario no tiene permiso, ocurra lo que ocurra en el prompt.
El patrón se repite en muchos pilotos de RAG corporativo: la demo funciona perfectamente con veinte documentos de prueba, todos con el mismo nivel de confidencialidad. El problema aparece al escalar a producción, cuando el índice pasa a contener miles de documentos procedentes de sistemas distintos (Drive, Confluence, SharePoint, la intranet de RRHH), cada uno con su propio modelo de permisos, y alguien del equipo de soporte descubre, sin buscarlo, que el chatbot interno puede responder preguntas sobre el documento de compensación del comité de dirección.
Una aplicación tradicional tiene una superficie de ataque relativamente bien entendida: la capa de autenticación, la capa de autorización y las consultas a la base de datos. Un sistema RAG añade superficie nueva en tres puntos:
Una arquitectura RAG conecta un modelo de lenguaje con una base de conocimiento propia mediante un proceso de varias etapas: ingesta y fragmentación de documentos, generación de embeddings, almacenamiento en una base de datos vectorial, recuperación de los fragmentos más relevantes para una consulta y, finalmente, generación de la respuesta por el modelo a partir de esos fragmentos.
Cada etapa es un punto de riesgo potencial:
El error de diseño más habitual, y más peligroso, es recuperar primero y filtrar después: el sistema busca los fragmentos más similares a la consulta en todo el índice, y solo entonces descarta los que el usuario no debería ver. Este patrón falla por dos motivos: es probabilístico en un sistema que necesita garantías deterministas, y además puede sesgar o vaciar los resultados relevantes, ya que los fragmentos descartados por permisos ya han ocupado espacio entre los más similares.
El patrón correcto invierte el orden: primero se resuelve la identidad y el contexto de permisos del usuario, después se restringe el espacio de búsqueda vectorial a lo que esa identidad puede ver, y solo entonces se ejecuta la búsqueda por similitud y el reordenamiento de resultados. La búsqueda nunca llega a “ver” un fragmento fuera del alcance autorizado, en lugar de verlo y descartarlo después.
Si la seguridad de tu sistema RAG depende de instruir al modelo para que “solo use los documentos del departamento correcto”, no tienes seguridad: tienes una petición educada a un sistema probabilístico.
Modelo de embeddings, base de datos vectorial y modelo de inferencia se despliegan dentro del perímetro de red de la organización, típicamente con modelos open-weight autoalojados. Es la opción con mayor control y menor superficie de exposición externa, adecuada para datos altamente sensibles o sectores muy regulados, a cambio de asumir la operación de la infraestructura de inferencia.
El índice vectorial y los datos permanecen en infraestructura propia, mientras que la inferencia se realiza contra un modelo comercial expuesto a través de un endpoint privado, dentro de una VPC o red virtual del proveedor cloud, sin salir a internet público. Es un punto intermedio habitual: mantiene el dato bajo control mientras se aprovecha la capacidad de modelos comerciales de mayor rendimiento.
Cuando el prompt, el sistema de orquestación y el formato de los embeddings dependen por completo de las convenciones propietarias de un único proveedor, migrar a otra opción más adelante implica reescribir buena parte del sistema, no solo cambiar una variable de configuración. Este riesgo es mayor cuanto más crítico es el caso de uso y más rápido evoluciona (y encarece o cambia sus condiciones) el mercado de modelos comerciales.
Estos riesgos, especialmente los relacionados con inyección de prompt y debilidades en el uso de embeddings, están recogidos de forma más amplia en el OWASP Top 10 para aplicaciones LLM, una referencia útil como checklist de seguridad al diseñar o auditar cualquier sistema RAG en producción.
¿Tu sistema RAG confía en el prompt para respetar permisos que deberían aplicarse antes de la búsqueda?
En Galde diseñamos arquitecturas RAG con aislamiento de datos real, control del código y despliegue en entornos privados o híbridos según el nivel de sensibilidad de cada organización.
Desde la IA generativa, diseñamos e implementamos sistemas RAG y agentes con recuperación consciente de permisos desde el primer diseño, evitando el patrón de filtrar después de buscar.
Desde data platforms, construimos la infraestructura de despliegue (privada, híbrida o en VPC dedicada) y seleccionamos los componentes open-source o autoalojados adecuados para minimizar el riesgo de vendor lock-in sin sacrificar rendimiento.
Y a través de la gobernanza de datos, garantizamos que los permisos del sistema RAG estén siempre sincronizados con los de los sistemas de origen, en lugar de vivir como una capa de reglas independiente que se desactualiza con el tiempo.
La seguridad de una arquitectura RAG no se consigue añadiendo instrucciones al prompt para que el modelo se comporte bien: se consigue diseñando el sistema para que sea estructuralmente imposible recuperar lo que un usuario no debería ver, y desplegando cada componente (embeddings, índice vectorial, inferencia) en un entorno cuyo nivel de control y soberanía sea coherente con la sensibilidad real de los datos. La alternativa a los modelos comerciales cerrados no es siempre construirlo todo desde cero: es entender exactamente qué se está cediendo a cambio de la comodidad de una API, y decidirlo de forma consciente en lugar de por defecto.
Puede serlo si se aplica un filtro de metadato estricto por tenant en el propio motor de búsqueda, antes de que se ejecute la búsqueda por similitud, y no como un paso de filtrado posterior. Para datos muy sensibles, un índice físicamente separado por cliente sigue siendo la opción más segura.
Es la manipulación del comportamiento de un modelo mediante instrucciones ocultas dentro de un documento que el sistema recupera y añade al prompt, sin que el usuario haya escrito esas instrucciones directamente. Es uno de los riesgos que recoge el marco OWASP para aplicaciones LLM.
No necesariamente. Un modelo comercial expuesto mediante un endpoint privado dentro de una VPC puede ser una opción razonable en un despliegue híbrido. Lo importante es que los datos y el índice permanezcan bajo control de la organización y que el acoplamiento al proveedor esté minimizado en el resto de la arquitectura.
Sincronizando las bajas y los cambios de permisos del sistema origen con el índice vectorial mediante un proceso de actualización continuo, de forma que el embedding correspondiente se elimine o se marque como no recuperable en el mismo momento en que el documento deja de estar disponible o accesible en origen.
Permite mantener los datos más sensibles y el índice vectorial bajo control directo de la organización, mientras se sigue aprovechando la capacidad de modelos comerciales de alto rendimiento para la generación, reduciendo tanto el riesgo de fuga de datos como la dependencia total de un único proveedor.
| Cookie | Tipo | Duración | Descripción |
|---|---|---|---|
| pll_language | 1 year | This cookie is set by Polylang plugin for WordPress powered websites. The cookie stores the language code of the last browsed page. |