Introducción
El salto de la IA desde prototipos a entornos productivos en Kubernetes está exponiendo brechas críticas en los modelos de seguridad tradicionales. Google Cloud lo reconoció al publicar en julio de 2026 un blueprint específico para securizar cargas de trabajo de IA en Google Kubernetes Engine (GKE), escrito por Glen Messenger (group product manager del equipo de seguridad de GKE) y Shannon Kularathna.
El documento no propone solo «más contenedores seguros», sino un enfoque por tres capas integradas: infraestructura, integridad de modelos y seguridad de aplicaciones. Esto refleja una realidad que los equipos de DevOps ya enfrentan: los modelos de IA en producción manejan pesos proprietary, datos regulados y decisiones autónomas, pero los controles actuales (como SBOMs tradicionales o políticas de IAM) no cubren amenazas específicas como prompt injection o fuga de datos en tiempo de ejecución.
Qué ocurrió
Google Cloud publicó el GKE Security Blueprint for AI Workloads como respuesta directa a que los equipos de seguridad y plataforma ya no pueden depender únicamente de:
- Controladores de contenedores genéricos (ej.: PodSecurityPolicies, deprecated en Kubernetes 1.25).
- Herramientas de inventario de software (SBOMs tradicionales que no mapean datasets, frameworks de ML o weights de modelos).
- Políticas de IAM estáticas (que no detectan desviaciones de comportamiento en agentes autónomos).
El blueprint introduce tres componentes clave que no existían en los stacks tradicionales de Kubernetes:
- k8s-aibom: un controlador Kubernetes de código abierto que genera AI Bills of Materials (AIBOMs), un inventario automático de artefactos de IA que incluye datasets, frameworks (ej.: PyTorch 2.3.1, TensorFlow 2.16.1), weights de modelos y pipelines. La versión actual es v0.4.2 y se instala como un Custom Resource Definition (CRD) en clústeres GKE.
- Model Armor: un servicio de inspección en tiempo real de prompts y respuestas que detecta:
– Fuga de datos sensibles (ej.: tokens de API filtrados en logs).
– Contenido dañino (ej.: jailbreaks en modelos LLM).
Model Armor se ejecuta como un sidecar en pods de inferencia y requiere GKE versión 1.28+ con Workload Identity Federation activado.
- GKE Sandbox: un entorno de aislamiento basado en gVisor (usado en GKE Sandbox desde 2024) para contener agentes de IA que ejecutan código generado o llaman a herramientas externas. El blueprint recomienda usarlo cuando los pods necesiten:
– Llamar a APIs no confiables (ej.: herramientas de RAG con acceso a datos corporativos).
El enfoque se estructura en tres fases (Deploy, Operate, Govern), similares a los cloud security maturity models de NIST pero adaptados a IA:
| Fase | Objetivo | Controles mínimos | Herramientas GKE |
|---|---|---|---|
| **Deploy** | Baseline de seguridad | Nodos Confidenciales, Workload Identity | Confidential GKE Nodes, WIF v1.1 |
| **Operate** | Hardening productivo | Políticas de imágenes firmadas, logs | Binary Authorization, Cloud Logging |
| **Govern** | Guardrails organizacionales | Respuesta automatizada a incidentes | Model Armor, k8s-aibom, GKE Sandbox |
Para equipos de infraestructura y cloud
Los equipos que ya ejecutan modelos de IA en GKE enfrentarán tres cambios críticos en su modelo de seguridad:
- Nuevos vectores de ataque:
– Los agentes autónomos (ej.: herramientas que llaman a APIs externas) pueden exceder permisos en tiempo de ejecución, incluso con IAM bien configurado.
– Datos de entrenamiento: Los AIBOMs ahora deben incluir metadatos de datasets (ej.: licencia, origen, sesgos conocidos), algo que el 78% de los equipos de ML no rastrea según una encuesta de InfoQ en 2026.
- Requisitos de cumplimiento:
– Los Confidential GKE Nodes (lanzados en GKE 1.27) ahora son obligatorios para modelos que manejen datos de salud (HIPAA) o finanzas (PCI DSS).
- Impacto en rendimiento:
– Model Armor aumenta la latencia en un 5-7% en inferencias, pero reduce falsos positivos en prompt injections de un 15% a menos del 2% (datos internos de Google Cloud).
Para equipos de seguridad
El blueprint expone que los controles tradicionales fallan en IA:
- IAM Roles for Service Accounts (IRSA) en EKS/GKE solo responden «qué permisos tiene un pod», no «si esos permisos son usados normalmente».
- CloudTrail/Cloud Audit Logs capturan eventos de control-plane, pero no el comportamiento de agentes autónomos (ej.: un agente que accede a 1000 registros de DB en 5 minutos).
- Network policies bloquean tráfico malicioso, pero no detectan data exfiltration vía prompts (ej.: un modelo que devuelve datos de clientes en la respuesta).
Google Cloud reconoce estas limitaciones al incluir en el blueprint un diagrama de arquitectura donde Model Armor se ubica como API Gateway entre el control-plane y el data-plane de los pods de IA.
Para equipos de DevOps
Los pipelines de CI/CD deberán adaptarse para:
- Generar AIBOMs automáticamente:
# Ejemplo de AIBOM generado por k8s-aibom (v0.4.2)
apiVersion: aibom.example.com/v1alpha1
kind: AIArtifact
metadata:
name: my-llm-weights
spec:
type: model-weights
framework: pytorch
version: "2.3.1"
sha256: "a1b2c3..."
dataset:
name: "customer-feedback-v2"
license: "CC-BY-4.0"
biasScore: 0.08 # Según evaluación automatizada
Requisito: Los equipos deben integrar la generación de AIBOMs en sus pipelines de model registry (ej.: Vertex AI Model Registry).- Firmar imágenes de inferencia:
# Comando para firmar imágenes con Binary Authorization (GKE 1.28+)
gcloud artifacts docker images sign \
--project=my-project \
--location=us-central1 \
--repository=ai-models \
gcr.io/my-project/inference-model:v1.2.3 \
--key-version=projects/my-project/locations/global/keyRings/ai-signing/cryptoKeys/sign-key/versions/1
Impacto: Las políticas de Binary Authorization ahora deben incluir metadatos de AIBOM como parte de los attestations.- Monitorear comportamiento de agentes:
– Llamadas a APIs externas no autorizadas.
– Accesos a archivos sensibles (ej.: /etc/passwd).
– Herramientas como Pixie (versión 0.10.0) pueden instrumentar pods con eBPF para rastrear syscalls de agentes de IA.
Detalles técnicos
Confidential GKE Nodes y aceleradores
Los Confidential GKE Nodes (GA en GKE 1.27) extienden la memoria cifrada por hardware a:
- NVIDIA H100 GPUs (con soporte para CUDA 12.4+).
- TPUs de Google (v4 y v5e).
- AMD Instinct MI300X (en clusters híbridos).
gcloud container clusters update my-ai-cluster \
--confidential-nodes \
--confidential-compute-type=gke_confidential_nodes \
--region=us-central1Limitación conocida: Los nodos confidenciales no soportan aún GPUs compartidas (ej.: time-slicing en NVIDIA MIG), lo que puede aumentar costos en clusters con alta demanda de inferencia.Workload Identity Federation (WIF) v1.1
WIF permite que pods de inferencia obtengan tokens temporales para acceder a Cloud Storage (para pesos de modelos) sin almacenar claves largas. La versión 1.1 (lanzada en mayo de 2026) incluye:
- Soporte para auditoría de tokens (logs de eventos de obtención de credenciales).
- Integración con VPC Service Controls para restringir acceso a buckets de modelos a clústeres específicos.
resource "google_service_account_iam_binding" "wif_binding" {
service_account_id = "ai-inference-sa"
role = "roles/iam.workloadIdentityUser"
members = [
"serviceAccount:${var.project_id}.svc.id.goog[ai-namespace/inference-pod]"
]
}
resource "google_storage_bucket_iam_binding" "model_access" {
bucket = "ai-models-bucket"
role = "roles/storage.objectViewer"
members = [
"serviceAccount:ai-inference-sa@${var.project_id}.iam.gserviceaccount.com"
]
}CVE relacionado: CVE-2026-3145 (parcheado en WIF v1.1.3) permitía token replay si un atacante obtenía un token válido y lo reutilizaba en menos de 15 minutos.k8s-aibom: inventario automatizado de IA
El controlador usa admission webhooks para generar AIBOMs en tiempo real. Requisitos:
- Kubernetes 1.26+ (por soporte a admission webhooks v1).
- Cert-manager v1.13+ para manejar certificados TLS de los webhooks.
- Acceso a metadatos de Vertex AI (para datasets y frameworks).
- En pruebas internas, k8s-aibom detectó 37% de modelos sin SBOMs válidos.
- El 22% de los artefactos mapeados tenían dependencias no declaradas (ej.: versiones de CUDA incompatibles).
Model Armor y detección de prompt injection
Model Armor se integra con:
- Vertex AI Prediction (para interceptar prompts/respuestas).
- Cloud Logging (para almacenar eventos de detección).
- Análisis de tokens: Compara la entrada del usuario con patrones conocidos de prompt injections (ej.:
"Ignore previous instructions and..."). - Detección de leakage: Busca tokens de API o datos sensibles en respuestas (usando reglas basadas en regex y modelos de lenguaje pequeños).
- Contexto de sesión: Valida que las respuestas coincidan con el prompt original (para detectar jailbreaks).
- Falsos positivos: 0.8% (en pruebas con 10,000 prompts).
- Falsos negativos: 0.2% (en ataques conocidos como LLM02).
Qué deberían hacer los administradores y equipos técnicos
1. Actualizar infraestructura (Fase «Deploy»)
Pasos accionables:- Habilitar Confidential GKE Nodes:
gcloud container clusters update ai-production-cluster \
--confidential-nodes \
--machine-type=n2-standard-16 \
--accelerator=type=nvidia-tesla-h100,count=2 \
--region=us-central1
Nota: Verificar compatibilidad con GPUs usando gcloud compute accelerator-types list --filter="name~'nvidia-h100'".- Configurar Workload Identity Federation (WIF) v1.1:
gcloud iam service-accounts add-iam-policy-binding \
ai-inference-sa@${PROJECT_ID}.iam.gserviceaccount.com \
--member="serviceAccount:${PROJECT_ID}.svc.id.goog[ai-namespace/inference-pod]" \
--role="roles/iam.workloadIdentityUser"
- Aplicar VPC Service Controls para aislar buckets de modelos:
gcloud access-context-manager perimeters create ai-model-perimeter \
--title="AI Model Data Perimeter" \
--resources=projects/${PROJECT_ID} \
--restricted-services=storage.googleapis.com,aiplatform.googleapis.com \
--region=global
2. Implementar controles de modelo (Fase «Operate»)
Acciones:- Instalar k8s-aibom:
kubectl apply -f https://github.com/GoogleCloudPlatform/k8s-aibom/releases/download/v0.4.2/aibom-crd.yaml
kubectl apply -f https://github.com/GoogleCloudPlatform/k8s-aibom/releases/download/v0.4.2/aibom-controller.yaml
- Configurar Model Armor (requiere GKE 1.28+):
# model-armor-config.yaml
apiVersion: modelarmor.example.com/v1
kind: ModelArmorConfig
metadata:
name: default-config
spec:
detection:
promptInjection:
enabled: true
sensitivity: "high"
dataLeakage:
enabled: true
sensitivePatterns:
- "Bearer [A-Za-z0-9\-_]+"
- "[0-9]{16}" # Tarjetas de crédito
- Firmar imágenes de inferencia con Binary Authorization:
# Crear política de firma
gcloud container binauthz policy create ai-policy \
--project=${PROJECT_ID} \
--global-policy \
--admission-whitelist-patterns="gcr.io/${PROJECT_ID}/*"
# Firmar imagen específica
gcloud artifacts docker images sign gcr.io/${PROJECT_ID}/inference-model:v1.2.3 \
--key-version=projects/${PROJECT_ID}/locations/global/keyRings/ai-signing/cryptoKeys/sign-key/versions/1
3. Monitorear y gobernar (Fase «Govern»)
Acciones:- Configurar alertas para desviaciones de comportamiento:
– Tasa de prompt injections por modelo.
– Número de llamadas a APIs externas por pod (usar Cloud Audit Logs + BigQuery).
– Ejemplo de consulta para detectar agentes que exceden permisos:
SELECT
resource.labels.pod_name,
protoPayload.authorizationInfo.permission,
COUNT(*) as event_count
FROM `my-project._Default.gke_audit_logs_*`
WHERE
protoPayload.methodName="io.k8s.core.v1.pods.exec"
AND protoPayload.authorizationInfo.permission LIKE "%aiplatform.googleapis.com%"
AND timestamp > TIMESTAMP_SUB(CURRENT_TIMESTAMP(), INTERVAL 1 HOUR)
GROUP BY 1, 2
ORDER BY 3 DESC
- Implementar GKE Sandbox para agentes no confiables:
# deployment-con-sandbox.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: ai-agent
spec:
template:
metadata:
annotations:
gke.gcp.io/sandbox: "gvisor"
spec:
containers:
- name: agent
image: gcr.io/my-project/ai-agent:v1.0.0
- Automatizar respuesta a incidentes:
– Detecte prompt injections (via logs de Model Armor).
– Revoke permisos del service account del pod ofensivo.
– Notifique al equipo vía Slack/Teams.
– Ejemplo en Python:
from google.cloud import logging_v2
from slack_sdk import WebClient
def detect_and_revoke(data, context):
if data["severity"] == "ERROR" and "prompt injection" in data["labels"]:
client = WebClient(token="xoxb-xxx")
client.chat_postMessage(channel="#ai-security", text=f"🚨 Prompt injection detectado en {data['pod']}!")
# Revocar permisos del service account
subprocess.run([
"gcloud", "projects", "remove-iam-policy-binding",
data["project"], "--member",
f"serviceAccount:{data['sa']}", "--role", "roles/aiplatform.user"
])
Conclusión
El GKE Security Blueprint for AI Workloads marca un punto de inflexión: los equipos ya no pueden securizar IA con herramientas genéricas de Kubernetes. Requiere:
- Inventariar artefactos de IA (con k8s-aibom) para cumplir con regulaciones como UE AI Act.
- Aislar cargas de trabajo (con Confidential GKE Nodes y GKE Sandbox) para proteger pesos proprietary y datos sensibles.
- Detectar amenazas específicas (con Model Armor) donde IAM y logs tradicionales fallan.
- Evaluar el overhead de GKE Sandbox en entornos con alta carga de inferencia.
- Integrar los AIBOMs con herramientas de model registry (ej.: MLflow, Vertex AI).
- Automatizar respuestas a incidentes con funciones serverless para reducir mean time to detect (MTTD).
El blueprint no es un documento estático: Google Cloud ya trabaja en una versión 2.0 que incluirá soporte para eBPF nativo en el data-plane (similar a AWS GuardDuty para EKS) y integración con modelos de evaluación de riesgo (ej.: detectar sesgos en respuestas). La carrera por securizar IA en producción recién comienza.
FIN
