Zero Trust en Práctica¶
Implementa identidades fuertes, mTLS, control de acceso mínimo y validación continua de postura.
Principios Clave¶
- Identidad primero (workload identity con SPIFFE/SPIRE)
- mTLS extremo a extremo (servicio ↔ servicio)
- Menor privilegio (RBAC/ABAC, políticas de admisión)
- Segmentación (NetworkPolicies, control de egress)
- Verificación continua (escaneo y postura)
Identidades de Servicio (SPIFFE/SPIRE)¶
# Instalar SPIRE Server/Agent (Helm chart oficial)
helm repo add spiffe https://spiffe.github.io/helm-charts
helm install spire spiffe/spire -n spire --create-namespace
# Ejemplo de SPIFFE ID emitido a un deployment
kubectl apply -f - <<'EOF'
apiVersion: spire.spiffe.io/v1alpha1
kind: SpiffeID
metadata:
name: api-frontend
namespace: default
spec:
spiffeId: spiffe://example.org/ns/default/sa/api-frontend
parentId: spiffe://example.org/spire/server
selector:
matchLabels:
app: api-frontend
EOF
mTLS con Service Mesh (Istio)¶
# Política mTLS estricta en namespace "prod"
apiVersion: security.istio.io/v1beta1
kind: PeerAuthentication
metadata:
name: default
namespace: prod
spec:
mtls:
mode: STRICT
# AuthorizationPolicy de menor privilegio
apiVersion: security.istio.io/v1beta1
kind: AuthorizationPolicy
metadata:
name: allow-frontend-to-api
namespace: prod
spec:
selector:
matchLabels:
app: api
rules:
- from:
- source:
principals: ["spiffe://example.org/ns/prod/sa/frontend"]
to:
- operation:
ports: ["8080"]
Segmentación de Red¶
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: allow-frontend-to-api
namespace: prod
spec:
podSelector:
matchLabels:
app: api
policyTypes: [Ingress, Egress]
ingress:
- from:
- podSelector:
matchLabels:
app: frontend
ports:
- protocol: TCP
port: 8080
egress:
- to:
- namespaceSelector: {}
ports:
- protocol: TCP
port: 443
Políticas de Admisión (OPA Gatekeeper)¶
apiVersion: constraints.gatekeeper.sh/v1beta1
kind: K8sRequireLabels
metadata:
name: require-owner-tier
spec:
match:
kinds:
- apiGroups: [""]
kinds: ["Pod"]
parameters:
labels: ["owner", "tier"]
Postura Continua¶
- Escaneo de imágenes y manifiestos (Trivy, Checkov)
- Revisiones periódicas de RBAC (rbacker/ rbac-police)
- Detección de drift y baseline (Kyverno policies en modo audit/enforce)
Checklist Rápido¶
- mTLS obligatorio entre servicios
- Identidades workload (SPIFFE/SPIRE) emitidas y verificadas
- NetworkPolicies por defecto deny-all + reglas mínimas
- Políticas de admisión para etiquetas, límites y firma de imágenes
- Escaneo continuo de imágenes/manifiestos y revisión de RBAC