Situación del cliente
Una entidad regulada del sector financiero solicitó preparar una sesión ejecutiva de gobierno de IA generativa para su Comité de Dirección. No una presentación de diapositivas: el encargo exigía algo desplegado, funcionando y proyectable en directo delante de perfiles de riesgo, cumplimiento y ciberseguridad. El punto de partida era el mismo que en la mayoría de organizaciones que ya han adoptado IA generativa de forma descentralizada: varios equipos consumían modelos de lenguaje mediante claves compartidas por canales internos, sin cuota diferenciada, sin registro centralizado de uso y sin capacidad de responder, a fin de mes, qué área había consumido qué presupuesto.
El reto no era demostrar que un modelo de lenguaje podía responder preguntas — eso ya lo daban por hecho. Era demostrar que la organización podía ponerle una puerta delante: un punto único de acceso capaz de responder en tiempo real a las cuatro preguntas que cualquier CISO plantea ante una prueba de concepto de IA — quién entra, qué se le permite, dónde se ejecuta la inferencia y qué queda escrito como evidencia.
Se encargó el diseño y despliegue de extremo a extremo de una plataforma de gobierno — una «torre de control de IA» — construida íntegramente como infraestructura como código sobre Azure, desplegable y destruible en horas, sin comprometer ningún entorno productivo del cliente.
Retos
- Sustituir el modelo de clave compartida por identidad real: un producto y una suscripción de Azure API Management por unidad de negocio (Riesgos, Clientes, Operaciones), revocable y auditable de forma independiente, sin tocar el resto de áreas
- Eliminar por completo la circulación de claves del modelo — la pasarela debía autenticarse contra Microsoft Foundry con su propia identidad gestionada, con la autenticación local desactivada en la cuenta de inferencia
- Aplicar guardrails preventivos con Azure AI Content Safety y Prompt Shields que evaluaran cada entrada antes de consumir un solo token, de forma que un intento de inyección de prompt se cortara en la puerta y no llegara nunca al modelo
- Diseñar un modelo de cuota por área en tokens por minuto que funcionara simultáneamente como control de seguridad (limitar el radio de impacto de un uso indebido) y como control de coste (repartir la factura de IA entre unidades de negocio)
- Garantizar que la inferencia se ejecutara dentro del EU Data Boundary y que una iniciativa de Azure Policy a nivel de suscripción impusiera de forma preventiva —no solo detectiva— la región autorizada, la ausencia de autenticación local en los servicios que sirven modelos y la obligatoriedad de diagnóstico centralizado
- Construir el expediente de trazabilidad del artículo 12 del AI Act de forma automática: cada llamada debía dejar una fila en Log Analytics con la unidad responsable, el modelo, la región y el veredicto, sin intervención manual
- Verificar que la plataforma soportara su propio ciclo de vida completo — despliegue, destrucción y redespliegue — sin que el propio gobierno bloqueara la reconstrucción del entorno que gobierna
Solución — Seis piezas de gobierno delante del modelo
La plataforma no sustituye nada de lo que el cliente ya tenía desplegado: se coloca delante, como punto de paso obligatorio. Seis piezas trabajan juntas para responder a las cuatro preguntas de gobierno.
// PASARELA — Azure API Management como punto único de acceso
- Un producto de APIM por unidad de negocio (Riesgos, Clientes, Operaciones), cada uno con su propia suscripción — identidad revocable y auditable por área, frente a una clave compartida que no distingue quién la usa
- Ningún consumidor habla directamente con el modelo: toda petición pasa por la pasarela, que es el único punto donde se puede aplicar control — sin punto de paso obligatorio no hay gobierno posible
- Cabeceras de respuesta visibles con la unidad que preguntó, el modelo invocado, la región de inferencia y la cuota restante, para que cada llamada legítima sea auditable por el propio consumidor
// IDENTIDAD — Autenticación de la pasarela contra el modelo
- Identidad gestionada del sistema en APIM como único método de autenticación contra Microsoft Foundry — la pasarela nunca conoce ni transmite una clave del modelo
- Autenticación local desactivada en la cuenta de servicios cognitivos que sirve el modelo, forzando Entra ID como único plano de identidad de backend
- Cero claves en configuración: ni en el repositorio de infraestructura como código, ni en variables de entorno, ni en ningún almacén salvo el propio grafo de identidad de Entra ID
// GUARDRAILS — Azure AI Content Safety y Prompt Shields
- Evaluación de la entrada antes de invocar el modelo: Prompt Shields analiza cada petición en la política
inboundde APIM, y solo si supera el análisis se reenvía a Microsoft Foundry - Un intento de inyección de prompt consume cero tokens — el bloqueo ocurre en la puerta, no después de que el modelo haya procesado y facturado la petición. Es la diferencia entre un control preventivo y un informe posterior
- Respuesta de bloqueo legible con el motivo del rechazo, devuelta directamente por la pasarela sin exponer detalles internos del servicio de seguridad
// CUOTA — Tokens por minuto, por unidad de negocio
- Límites diferenciados por área configurados en la política de producto de APIM: Riesgos 5.000 TPM, Clientes 2.000 TPM, Operaciones 1.000 TPM, alineados con el perfil de uso esperado de cada unidad
- Control de seguridad y de coste simultáneo: la cuota limita el radio de impacto de un uso indebido y, a la vez, convierte «la factura de IA» en un dato que un comité puede repartir por centro de coste
- Agotamiento de cuota sin afectar a otras áreas — cuando una unidad alcanza su límite, el resto de la organización sigue operando con normalidad, con un 429 explícito para la unidad afectada
// REGIÓN Y EXPEDIENTE — EU Data Boundary y artículo 12 del AI Act
- Despliegue del modelo en Data Zone Standard en lugar de Global Standard — la inferencia se ejecuta dentro del EU Data Boundary, no solo el dato en reposo, cerrando la brecha entre el discurso de soberanía y el comportamiento real del servicio
- Iniciativa de Azure Policy a nivel de suscripción que impone de forma preventiva la región autorizada para servicios de IA, exige
disableLocalAuthen toda cuenta de Cognitive Services y obliga a la configuración de diagnóstico — deniega el despliegue de cualquier recurso que no cumpla, en lugar de detectarlo después - Expediente automático en Log Analytics: cada llamada a través de la pasarela deja una fila con la unidad de negocio responsable, el modelo invocado, la región de inferencia y el veredicto (permitida, bloqueada por guardrail, bloqueada por cuota), sin intervención manual — la evidencia que exige el artículo 12 del AI Act se construye en el momento de la llamada, no el día que la pide el supervisor
// VERIFICACIÓN — El ciclo de vida completo, no solo el primer despliegue
- Despliegue, destrucción y redespliegue verificados sobre el mismo entorno — no solo un despliegue limpio desde cero, sino la reconstrucción posterior, que es donde aparecen los fallos que dependen de que algo ya exista (políticas ya asignadas, Key Vault con protección de purga, parámetros nuevos en definiciones vivas)
- Prueba de los tres momentos de la demo desde el canal real — navegador, no un script de infraestructura — porque las cabeceras CORS de una respuesta de error construida a medida solo fallan de forma visible donde el JavaScript del cliente las necesita
- Scripts de despliegue, verificación y destrucción idempotentes como parte entregable de la plataforma, no como artefactos de un solo uso
Resultados
Patrón de arquitectura
Toda petición atraviesa la pasarela como punto de paso obligatorio: identidad por unidad de negocio, guardrails que evalúan la entrada antes de gastar un token, cuota diferenciada por área y autenticación contra el modelo mediante identidad gestionada. Una iniciativa de Azure Policy impone de forma preventiva la región europea y la ausencia de claves locales, y cada llamada deja una fila de expediente en Log Analytics sin intervención manual. La verificación no se detuvo en el primer despliegue limpio: el mismo entorno se destruyó y se reconstruyó para confirmar que el propio gobierno no bloqueaba su ciclo de vida.
- El punto único de acceso es la precondición de todo lo demás, no una pieza más — sin una pasarela que obligue a pasar por ella, no hay identidad que aplicar, guardrail que evaluar, cuota que hacer cumplir ni expediente que construir. El diseño debe garantizar que no exista ninguna ruta de acceso directo al endpoint del modelo, ni siquiera para pruebas internas.
- Ensaya el ciclo de vida completo, no solo el primer despliegue — una iniciativa de Azure Policy que se asigna al final del despliegue puede permitir que el primer intento pase por delante de una restricción que bloqueará cualquier redespliegue posterior sobre el mismo entorno. Recursos con protección de purga (Key Vault) o nombres deterministas pueden sobrevivir a una destrucción y bloquear la reconstrucción. La prueba de aceptación de una plataforma de gobierno debe incluir desplegar, destruir y volver a desplegar.
- La prueba de guardrails y cuota debe ejecutarse desde el canal real del usuario final — un script de infraestructura que llama al endpoint directamente no reproduce el comportamiento del navegador. Cabeceras CORS perdidas en una respuesta de error construida a medida, por ejemplo, solo son visibles cuando el cliente real —JavaScript en un navegador— intenta leerlas. Validar solo con herramientas de línea de comandos puede dar una demo en verde que está rota en el único canal donde importa.
- El modo de despliegue del modelo determina la soberanía real, no la etiqueta del recurso — un despliegue en modo Global Standard puede enrutar la inferencia a cualquier región del mundo aunque el dato en reposo permanezca en la geografía contratada. Si el argumento de la plataforma es soberanía o residencia de datos, el modo de despliegue (Data Zone Standard o equivalente) debe verificarse explícitamente, no asumirse por el nombre de la región configurada.
- Las cuotas por unidad de negocio deben probarse con el patrón de tráfico real, no con ráfagas artificiales — un límite de tokens por minuto puede no agotarse nunca en la demo si las llamadas de prueba se distribuyen en ventanas de tiempo que no coinciden con la ventana de cuota real de la política. El guion de la demo debe fijar de antemano qué área y qué secuencia de llamadas se usan para agotar cuota, en lugar de dejarlo a la selección manual del presentador.
- Los guardrails preventivos solo son preventivos si el bloqueo ocurre antes de invocar el backend — evaluar la entrada con el motor de seguridad en la fase
inboundde la pasarela, no después de recibir la respuesta del modelo, es lo que convierte el control en un ahorro real de coste y no en una capa de auditoría posterior. El diseño de la política de la pasarela debe garantizar el orden de evaluación explícitamente.
Artículo relacionado
Los trece fallos reales encontrados al desplegar esta plataforma dos veces seguidas — tres invisibles en un despliegue limpio, tres que ningún script automático detecta. Leer «El segundo despliegue es el que dice la verdad» →