Introducción
Los equipos de DevOps suelen modelar los agentes de IA como «microservicios+» porque heredan requisitos de identidad, seguridad y observabilidad de los servicios tradicionales, pero añaden complejidad: actúan en nombre de usuarios (principal identity) y deben probar su autorización (agent identity y delegation artifacts). Si no se formaliza esta relación, el sistema queda expuesto a fugas de permisos, confusión en auditorías y violaciones de principle of least privilege.
Un ejemplo cotidiano —y menos técnico— puede ayudar a entender el problema. Imaginá un abogado defendiéndote en un juicio por saltarte un semáforo. El juez no solo pide su identificación como profesional (agent identity), sino también una prueba de que está autorizado a representarte en ese caso específico (principal identity y delegation artifact). Sin estos tres elementos verificados, ni siquiera avanza el proceso. En sistemas agenticos, la misma lógica aplica, pero con credenciales digitales, tokens OBO (On-Behalf-Of) y mallas de servicios.
Qué ocurrió
El 23 de junio de 2026, Lin Sun —embajadora de CNCF— publicó en el blog de la fundación un marco conceptual para autenticar agentes de IA usando metáforas de sistemas legales. La analogía central es clara: un agente no es el usuario final, sino un representante con identidad propia, cuya legitimidad depende de tres verificaciones:
- Identidad del agente (agent identity): ¿Quién es el agente? (ejemplo: un LLM especializado en facturación).
- Identidad del principal (principal identity): ¿A nombre de quién actúa? (ejemplo: el usuario «[email protected]»).
- Artifact de delegación (delegation artifact): ¿Qué permiso específico tiene? (ejemplo: un token OBO firmado por el principal).
El artículo destaca que, en entornos productivos, este modelo requiere infraestructura centralizada: un agente gateway que funcione como el «secretario del tribunal» —verificando credenciales, validando delegaciones, aplicando políticas y auditando acciones—. Esto evita que cada agente implemente estas lógica por separado, reduciendo errores y simplificando el cumplimiento normativo.
Impacto para DevOps / Infraestructura / Cloud / Seguridad
Para equipos de DevOps e infraestructura
- Complejidad reducida: Sin un gateway centralizado, cada agente debe implementar autenticación, validación de tokens y políticas, lo que multiplica puntos de falla. Un entorno con 50 agentes distintos puede terminar con 50 implementaciones diferentes de manejo de identidades.
- Escalabilidad: Los sistemas actuales ya usan SPIFFE/SPIRE para identidades en mallas de servicios. Extender este modelo a agentes permite reutilizar infraestructura existente (Istio, Linkerd) sin reinventar la rueda.
- Consistencia en políticas: Las políticas de least privilege se aplican de forma homogénea. Por ejemplo, un agente de facturación solo puede invocar APIs de cobranza si tiene un token OBO con el alcance
scope:facturacion:cobranza:read.
Para equipos de seguridad
- Auditoría unificada: El gateway registra todas las acciones bajo el contexto del principal, no del agente. Esto facilita cumplir con regulaciones como ISO 27001 o SOC 2, donde se exige trazar quién hizo qué y a nombre de quién.
- Mitigación de riesgos: Tokens OBO revocables reducen el impacto de compromisos de agentes. Si un agente es comprometido, su token puede invalidarse sin afectar al principal.
Para equipos de Cloud
- Integración con proveedores: Proveedores como AWS IAM, GCP IAM y Azure AD ya soportan tokens OBO. Un gateway basado en SPIFFE puede federar estas identidades con mallas existentes (Istio, Consul).
- Costo operativo: Implementar autenticación agente-por-agente en Kubernetes aumenta la carga de mantenimiento. Un gateway centralizado reduce el overhead en un 30-40% según estimaciones internas de CNCF.
Detalles técnicos
Componentes clave y versiones afectadas
| Componente | Versión mínima | Rol |
|---|---|---|
| SPIFFE/SPIRE | 1.0.0 | Estándar para identidades en mallas de servicios |
| Istio | 1.21.0 | Implementa SPIFFE nativamente y soporta *workload identity* |
| cert-manager | 1.13.0 | Gestiona certificados para identidades y tokens OBO |
| agentgateway | 0.8.0 | Prototipo de CNCF para autenticar agentes (inspirado en el artículo) |
| Kubernetes | 1.28 | Soporte para *ServiceAccounts* como principals |
| OpenTelemetry | 1.30.0 | Recolección de logs para auditoría |
- Suplantación de identidad del agente:
– Mitigación: SPIFFE usa certificados X.509 con Subject Alternative Names (SANs) estrictos. Ejemplo de validación en Istio:
apiVersion: security.istio.io/v1beta1
kind: AuthorizationPolicy
metadata:
name: agent-identity-policy
spec:
selector:
matchLabels:
app: billing-agent
rules:
- from:
- source:
principals: ["cluster.local/ns/default/sa/billing-agent"]
- Tokens OBO falsificados:
– Mitigación: Tokens OBO deben:
– Usar short-lived (ej: 5 minutos de validez).
– Firmarse con claves rotativas (ej: usando cert-manager con certificate rotation).
– Validarse contra un OBO validation service (ej: un sidecar en el gateway).
- Políticas inconsistentes:
– Mitigación: Usar Attribute-Based Access Control (ABAC) en el gateway. Ejemplo con Open Policy Agent (OPA):
package authz
default allow = false
allow {
input.request.method == "GET"
input.request.path == ["billing", "invoices"]
input.principal.scopes[_] == "read:invoices"
}
Arquitectura de referencia
[Usuario] → [Agente] → [Agent Gateway]
│ │
│ ├─► Valida token OBO (cert-manager)
│ ├─► Verifica identidad SPIFFE (Istio)
│ ├─► Aplica políticas (OPA/Gatekeeper)
│ └─► Audita con OpenTelemetry
│
[Kubernetes Cluster] ←─┘Qué deberían hacer los administradores y equipos técnicos
1. Implementar SPIFFE/SPIRE como base de identidades
Si ya usan Istio o Linkerd, activar SPIFFE es directo. Ejemplo en Istio 1.21+:
# Instalar SPIRE (v1.6.0+) como proveedor de identidades
helm repo add spire https://spiffe.github.io/spire-charts
helm install spire spire/spire -n spire --create-namespace
# Configurar workload identity
kubectl apply -f - <<EOF
apiVersion: spire.spiffe.io/v1alpha1
kind: ClusterSPIFFEID
metadata:
name: billing-agent
spec:
spiffeIDTemplate: "spiffe://acme.com/ns/{{ .PodMeta.Namespace }}/sa/{{ .PodSpec.ServiceAccountName }}"
workloadSelector:
- podSelector:
matchLabels:
app: billing-agent
EOF2. Desplegar un Agent Gateway con cert-manager
Usar agentgateway (v0.8.0+) como proxy inverso para agentes:
apiVersion: apps/v1
kind: Deployment
metadata:
name: agentgateway
spec:
replicas: 2
selector:
matchLabels:
app: agentgateway
template:
metadata:
labels:
app: agentgateway
spec:
serviceAccountName: agentgateway
containers:
- name: agentgateway
image: ghcr.io/cncf/agentgateway:v0.8.0
args:
- --spiffe-socket=/run/spire/sockets/agent.sock
- --obp-issuer=https://obp.acme.com
ports:
- containerPort: 8080
---
apiVersion: cert-manager.io/v1
kind: Certificate
metadata:
name: obp-tls
spec:
secretName: obp-tls
issuerRef:
name: letsencrypt-prod
kind: ClusterIssuer
dnsNames:
- obp.acme.com3. Configurar tokens OBO con alcance limitado
Generar tokens OBO firmados por el principal usando un issuer dedicado (ej: Keycloak o un servicio interno):
# Ejemplo con curl al servicio de OBO
curl -X POST https://obp.acme.com/tokens \
-H "Authorization: Bearer $(cat spire-agent.jwt)" \
-d '{
"principal": "[email protected]",
"scopes": ["read:invoices", "write:payments"],
"ttl": 300
}'4. Aplicar políticas con OPA/Gatekeeper
Definir políticas en OPA para restringir accesos:
# policy/authz.rego
package authz
default allow = false
allow {
input.request.method == "POST"
input.request.path == ["billing", "payments"]
input.principal.scopes[_] == "write:payments"
input.request.params.amount <= 10000 # Límite de $10K por transacción
}Aplicar con Gatekeeper:
helm install gatekeeper oci://ghcr.io/open-policy-agent/gatekeeper/gatekeeper \
--version v3.16.0
kubectl apply -f policy/authz-constraint.yaml5. Auditar con OpenTelemetry
Configurar el gateway para enviar logs a un backend como Loki o Elasticsearch:
apiVersion: opentelemetry.io/v1alpha1
kind: OpenTelemetryCollector
metadata:
name: otel-agentgateway
spec:
config:
receivers:
otlp:
protocols:
grpc:
http:
processors:
batch:
exporters:
otlp:
endpoint: "otel-collector.default.svc.cluster.local:4317"
service:
pipelines:
traces:
receivers: [otlp]
processors: [batch]
exporters: [otlp]Conclusión
La autenticación de agentes no es un problema nuevo, pero su implementación ad-hoc lleva a inconsistencias, riesgos de seguridad y altos costos operativos. Modelar el flujo como un juicio judicial —donde un gateway actúa como tribunal— permite reutilizar herramientas existentes (SPIFFE, Istio, cert-manager) y centralizar la complejidad en un solo componente.
Los equipos de DevOps deben priorizar:
- Identidades verificables: SPIFFE/SPIRE como estándar.
- Tokens con alcance: OBO firmados y de corta duración.
- Políticas explícitas: ABAC con OPA/Gatekeeper.
- Auditoría unificada: OpenTelemetry para trazabilidad.
Al adoptar este enfoque, se reduce el blast radius de compromisos, se simplifican auditorías y se alinea la seguridad de agentes con los mismos estándares que ya aplican en microservicios y mallas de servicios.
FIN
