Protección del dato y adopción segura de la IA
Tarea
Ir más allá de los perfiles DLP predefinidos: crear una detección personalizada para un concepto propio de la empresa, combinarla con otros detectores en un único perfil, y capturar los prompts que activan esa política para poder auditarlos.
Por qué
En la sección anterior ya vimos cómo dirigir a los empleados hacia una herramienta de IA aprobada por la empresa (Google Gemini) y bloquear el uso de herramientas no aprobadas. Pero incluso dentro de una herramienta aprobada, necesitamos evitar que se filtre información sensible en los prompts.
Los perfiles DLP predefinidos de Cloudflare (PII, información financiera, números de la seguridad social, etc.) cubren los casos más comunes, pero cada empresa tiene sus propios secretos: una fusión en negociación, una hoja de ruta de producto sin publicar, o los términos de un contrato confidencial. Para esto, Cloudflare permite definir Custom Prompt Topics: describes el concepto en lenguaje natural y DLP detecta si un prompt coincide con ese concepto por contexto, no por palabras clave exactas.
Pasos
Antes de empezar: configura la clave de cifrado de DLP
Para poder capturar y descifrar más adelante el contenido de los prompts, necesitamos configurar esto primero, así no tendrás que salir a mitad de la creación de la política.
-
Cloudflare no usa un par de claves RSA estándar para esto, sino su propia herramienta de línea de comandos
matched-data-cli. En el lab, ejecútala desde el Ubuntu origin (terminal SSH):curl -LO https://github.com/cloudflare/matched-data-cli/releases/download/v0.6.0/matched-data-cli-v0.6.0-x86_64-unknown-linux-musl.tar.gztar -xzf matched-data-cli-v0.6.0-x86_64-unknown-linux-musl.tar.gzcd dist./matched-data-cli generate-key-pairSi estos comandos ya no funcionan porque ha salido una versión más reciente, entra en la página de Releases del repositorio y sustituye la URL por el asset
unknown-linux-muslmás reciente.Opción 2: si prefieres otro sistema operativo (Windows, macOS) o quieres ver el detalle paso a paso, sigue la guía oficial de Cloudflare para generar el par de claves.
-
Al ejecutar
generate-key-pairobtendrás un resultado similar a este, con tu clave pública y tu clave privada:{"private_key": "uBS5eBttHrqkdY41kbZPdvYnNz8Vj0TvKIUpjB1y/GA=","public_key": "Ycig/Zr/pZmklmFUN99nr+taURlYItL91g+NcHGYpB8="} -
En el dashboard de Cloudflare, ve a Zero Trust > Data loss prevention > DLP settings y pega el valor de
public_keyen el campo DLP Payload Encryption public key. Haz clic en Save. -
Guarda el valor de
private_keyen un lugar seguro; lo necesitarás más adelante para descifrar los logs, y Cloudflare nunca tiene acceso a él.
Crear un Custom Prompt Topic
- Ve a Zero Trust > Data loss prevention > Detection entries.
- Selecciona Add Entry y haz clic en Custom Prompt Topic.
- Describe el concepto en lenguaje natural, siendo específico. La descripción debe tener menos de 50 caracteres; para este taller usa algo como "Cifras de ingresos futuros no publicadas" o "Productos nuevos previstos de lanzamiento". Recuerda: describe un concepto a clasificar, no una lista de palabras clave.
- Dale un nombre reconocible, por ejemplo Confidential Financial Forecasts, y guarda la entrada.
Crear un DLP Profile combinando varios detectores
- Ve a Zero Trust > Data loss prevention > Profiles y haz clic en Create profile (perfil personalizado, no uno predefinido).
- Nombra el perfil AI Prompt: Confidential Company Data.
- En Detection entries, añade varias entradas al mismo perfil:
- Las predefinidas AI Prompt: PII y AI Prompt: Financial Information que ya usamos en la sección de "Bienvenido a tu nueva red segura".
- Tu nueva entrada personalizada Confidential Financial Forecasts.
- Define el número mínimo de coincidencias (Selector match count) según cuántos detectores quieres que se activen antes de considerar la solicitud como sensible, y guarda el perfil.
Activar Granular Controls con la operación Prompt y capturar los prompts en los logs
- Ve a Traffic Controls > Firewall policies, pestaña HTTP, y haz clic en Add a policy para crear una nueva política.
- Nombra la política Block sensitive data to AI y en Traffic, añade las siguientes condiciones (unidas con And):
- Selector = Application, Operator = Is, Value = Google Gemini (dentro de Artificial Intelligence (with Granular Controls)), Controls = Application Controls > Prompt. Esto asegura que la política solo inspecciona la operación de envío de prompts, no toda la aplicación.
- Selector = DLP Profile, Operator = In, Value = tu nuevo perfil AI Prompt: Confidential Company Data.
- Baja hasta Select an action y define Action como Block.
- En el apartado Actions and settings, activa Log the payload of matched rules y Capture generative AI prompt content in logs. Como ya configuraste la clave de cifrado de DLP al principio de esta sección, estas dos opciones deberían estar disponibles sin necesidad de salir de la política.
- Activa también Display block notification for Cloudflare One Client, para que el usuario reciba un aviso del device agent en el momento en que se bloquee su prompt.
- Haz clic en Create policy.
Probar y revisar los logs
- Vuelve al escritorio Windows 11 y abre Gemini (recuerda que las herramientas de IA no aprobadas ya se redirigen automáticamente a Gemini, como configuramos en la sección anterior).
- Escribe un par de prompts de prueba:
- Uno inocuo, como "¿Cuál es la capital de Francia?", para confirmar que Gemini sigue funcionando con normalidad.
- Uno que coincida con tu Custom Prompt Topic, por ejemplo: "Necesito ayuda para redactar un email sobre nuestra previsión de ingresos no publicada de 50 millones para el próximo trimestre". Deberías ver que el prompt no llega a enviarse al modelo de IA y, además, recibir una notificación del Cloudflare One agent en el escritorio avisando del bloqueo.
- Si en cambio has definido el topic como "Productos nuevos previstos de lanzamiento", prueba con algo como: "Necesito ayuda para redactar un email sobre nuestro futuro iPhone 19 para el próximo trimestre". Debería activarse la misma política, con el mismo resultado: el prompt bloqueado y la notificación del agent, ya que hace referencia a un producto todavía no lanzado.
- Ve a Zero Trust > Insights > Logs > HTTP request logs.
- Usa el filtro DLP Profiles y selecciona AI Prompt: Confidential Company Data, el perfil que creaste antes. Verás la solicitud que activó la política.
- Expande la fila del log y selecciona Decrypt payload log. Introduce tu clave privada para descifrar el contenido.
- En Summary > GenAI prompt captured, selecciona View prompt para ver el tema detectado, el modelo de IA usado, y el prompt y la respuesta del modelo (si está disponible). Así puedes auditar exactamente qué intentó enviar el usuario sin depender solo de un bloqueo genérico.
🛠️ Solución de problemas
- El Custom Prompt Topic no aparece al crear el DLP Profile. Los custom prompt topics tardan unos segundos en indexarse tras guardarse; vuelve a la lista de Detection entries y confirma que el estado sea "Active" antes de crear el perfil.
- Mi prompt de prueba no activa la política. Los custom prompt topics se evalúan por contexto semántico, no por coincidencia exacta de palabras. Reformula el prompt para que refleje claramente el concepto que describiste (cifras financieras no publicadas, previsiones internas, etc.) en vez de repetir literalmente la descripción del topic.
- No aparece la opción "Capture generative AI prompt content in logs". Esta opción solo está disponible en políticas HTTP que usan el selector Application con una aplicación compatible con Granular Controls (Gemini, ChatGPT, Perplexity o Claude). Confirma que tu política tiene ese selector configurado, no solo el DLP Profile.
- No puedo descifrar el payload log. Verifica que estás usando la clave privada que corresponde exactamente a la clave pública subida en DLP Settings. Si perdiste el par de claves, tendrás que generar uno nuevo, subir la clave pública y esperar a nuevos matches (los logs antiguos cifrados con la clave anterior no se podrán recuperar).
- No veo ningún resultado al filtrar por DLP Profiles en HTTP request logs. Confirma el rango de fechas del visor de logs y que la política siga con Action = Block (o Allow, si solo quieres registrar sin bloquear) y esté guardada y activa.