Asistente de IA con los documentos de tu empresa: cómo evitar fugas
Por Jorge Graells · 3 de noviembre de 2026 · 5 min de lectura
Actualizado:
Un asistente de IA conectado a los documentos de la empresa (RAG) puede contar a cualquiera lo que lee. El permiso tiene que aplicarse en la búsqueda, antes de que el modelo vea el fragmento, no tachando la respuesta. Incluye una prueba interactiva.
Asistente de IA con los documentos de tu empresa: cómo evitar fugas
- Tipo
- Artículo
- Autor
- Jorge Graells
- Fecha
- Actualizado
- Lectura
- 5 min de lectura
- Materias
Resumen
Un asistente de IA conectado a los documentos de la empresa (RAG) puede contar a cualquiera lo que lee. El permiso tiene que aplicarse en la búsqueda, antes de que el modelo vea el fragmento, no tachando la respuesta. Incluye una prueba interactiva.
Conectar un asistente de IA a los documentos de la empresa es de los proyectos que más rápido demuestran valor. Le preguntas cómo se calibra una máquina, qué dice el contrato con un proveedor o cuál fue la última revisión de un equipo, y responde en segundos citando el documento. El problema aparece el día que alguien le pregunta algo que no debería saber, y el asistente lo sabe.
Cuando construyo uno de estos asistentes, la primera pregunta que me hago no es qué modelo usar. Es quién puede leer cada documento y en qué momento se comprueba.
◢¿Cómo funciona un asistente de IA con documentos (RAG)?
La técnica se llama RAG, generación aumentada por recuperación. El asistente no se aprende tus documentos. Los trocea, guarda cada trozo en un buscador especial (una base de datos vectorial) y, cada vez que alguien pregunta, busca los fragmentos más parecidos a la pregunta y se los pasa al modelo junto con ella. El modelo redacta la respuesta con lo que ha leído en ese momento.
Ese paso intermedio es la clave de todo lo que sigue: lo que entra en el contexto del modelo es lo que el modelo puede contar.
◢¿Por qué un asistente con documentos puede filtrar datos?
Porque el buscador no sabe quién pregunta, a menos que se lo digas. Si metes en el mismo índice el manual público, los informes internos y las nóminas, y la búsqueda no filtra por usuario, el becario y la directora financiera reciben los mismos fragmentos. El modelo responderá a los dos con lo que encuentre.
OWASP, la referencia en seguridad de aplicaciones, lo recoge en su lista de riesgos de los modelos de lenguaje como una debilidad propia de los sistemas RAG: controles de acceso inadecuados o mal alineados1 permiten llegar a información sensible a través de los fragmentos guardados, y cuando varios grupos comparten la misma base de datos hay riesgo de fuga entre usuarios.
No hace falta ningún ataque. Basta con una pregunta normal de alguien que no tenía permiso.
◢Tachar la respuesta o filtrar la búsqueda: pruébalo tú
Hay dos maneras de aplicar un permiso. La tentadora es dejar que el asistente lo lea todo y tachar después lo que el usuario no puede ver. La correcta es que el buscador ni siquiera le dé al modelo los fragmentos que ese usuario no puede leer.
En la prueba de abajo la pregunta es siempre la misma. Cambia el nivel de quien pregunta y el sitio donde se aplica el permiso, y fíjate en la lista de fragmentos: son los que llegan al modelo.
Un asistente de IA responde con los documentos de la empresa (RAG). La pregunta es la misma; cambia quién la hace y dónde se aplica el permiso. Datos ficticios.
¿Quién firmó la última revisión del frenómetro de la línea 2 y con qué tolerancia está calibrado?
Respuesta del asistenteLa última revisión del frenómetro de la línea 2 es del 14 de octubre. La firmó el técnico B. Está calibrado con una tolerancia de ±2 %, según el manual MT-23, capítulo 4.
Por si te sirve: es el mismo compañero del turno de noche que abrió la incidencia de septiembre.
Fuga por paráfrasis. El nombre está tachado, pero el fragmento estaba en el contexto y el modelo lo describe con otras palabras.
- Público · dentro del contextoManual MT-23, cap. 4. Procedimiento de calibración del frenómetro.
- Interno · dentro del contextoRegistro de revisiones. Contenido reservado a nivel interno.
- Confidencial · dentro del contextoHoja de firmas. Contenido reservado a nivel confidencial.
Con el permiso aplicado al final, el nombre aparece tachado, pero el modelo ya ha leído el fragmento. Si se le escapa una pista con otras palabras ("el compañero del turno de noche"), el tachón no la detecta, porque no coincide con el texto que había que ocultar. Con el permiso aplicado en la búsqueda, ese fragmento nunca llega y no hay nada que se pueda escapar.
◢¿Basta con decirle al asistente que no revele datos confidenciales?
No. Una instrucción del tipo "no reveles información confidencial" es una petición al modelo, no un control. Puede fallar por un despiste del propio modelo y, sobre todo, puede saltarse con un texto preparado para ello, que es lo que hace la prompt injection indirecta. Cualquier dato que esté en el contexto hay que darlo por visto.
La seguridad tiene que estar fuera del modelo, en el código que decide qué fragmentos se le entregan. Es la misma idea que con los agentes con demasiados permisos: el modelo solo debería tener a mano lo que necesita para esa persona y esa tarea.
◢¿Y si uso Copilot o un asistente comercial?
Algunos asistentes comerciales ya aplican el permiso en la búsqueda, y conviene preguntar si el tuyo lo hace. Microsoft, por ejemplo, explica que Copilot solo muestra los datos que cada usuario tiene permiso para ver2 y recuerda que hay que tener bien puestos los permisos de SharePoint y del resto de servicios.
Eso traslada el problema a otro sitio: si en tu empresa media plantilla tiene acceso a la carpeta de nóminas porque alguien la compartió con "toda la organización" hace años, el asistente respetará ese permiso mal puesto. Antes el riesgo era que alguien encontrara esa carpeta. Ahora basta con preguntar. Por eso, antes de activar cualquier asistente sobre documentos, toca una limpieza de permisos.
◢Qué hacer antes de conectar un asistente a tus documentos
Si lo vas a construir o contratar, estas son las preguntas que haría yo:
- ▹¿Cada fragmento guarda quién puede leerlo? El permiso tiene que viajar con el trozo de documento, no quedarse en la carpeta original.
- ▹¿La búsqueda filtra por la identidad real del usuario antes de pasar nada al modelo? Si la respuesta es "lo filtramos al final", es la opción mala de la prueba.
- ▹¿Hay índices separados para lo que de verdad es sensible? RR. HH., dirección y datos de clientes no deberían compartir buscador con el manual de bienvenida.
- ▹¿Los permisos se actualizan cuando alguien cambia de puesto o se va? Un índice que se copió una vez y no se sincroniza conserva accesos que ya no existen.
- ▹¿Queda registro de qué preguntó cada usuario y qué fragmentos recibió? Sin eso no hay forma de investigar una fuga.
Y por el lado de la plantilla, conviene que todo el mundo entienda qué ve el asistente y por qué no debe subir por su cuenta documentos internos a herramientas de IA externas. Sobre eso escribí una guía de qué datos no pegar en ChatGPT.
◢Una prueba sencilla antes de ponerlo en marcha
Crea un usuario de prueba con el nivel de acceso más bajo y pregúntale al asistente por cosas que ese usuario no debería saber: un sueldo, una incidencia con un cliente, el nombre de quien firmó algo. Pregunta directamente y también de lado ("¿quién suele encargarse de...?"). Si alguna respuesta deja ver algo, el permiso está en el sitio equivocado.
Si quieres que tu equipo entienda estos riesgos antes de empezar a usar IA con datos de la empresa, es justo lo que trabajo en la formación de IA para plantillas.
Documentos relacionados
- News
Ciberataque a Crédit Mutuel Arkéa: entraron por un proveedor
El banco francés Crédit Mutuel Arkéa ha sufrido un ataque que permitió transferencias fraudulentas desde su propia cuenta. Los atacantes entraron por la plataforma de un proveedor. Qué se sabe, qué no y qué aprender.
- Artículo
Phishing con código de dispositivo: qué es y cómo evitarlo
El phishing con código de dispositivo engaña a la víctima para que escriba en la página real de Microsoft un código que ha generado el atacante. Así entra en su cuenta de Microsoft 365 sin contraseña y sin que la verificación en dos pasos lo frene. Se evita bloqueando ese inicio de sesión.
- News
Claude Code filtra claves en GitHub: qué es settings.local.json
La opción "no volver a preguntar" de Claude Code puede guardar contraseñas y claves de API en .claude/settings.local.json. Apiiro ha encontrado 1.122 copias públicas en GitHub con secretos dentro. Qué se sabe y qué hacer.