Kubernetes Auth · ServiceAccount Trust
El metodo de autenticacion que permite a los pods demostrar su identidad ante Vault usando su ServiceAccount token. Sin esta configuracion, el Vault Agent Injector no puede recuperar secrets porque Vault no confia en los tokens de Kubernetes.
Como Funciona la Autenticacion
Cada pod en Kubernetes tiene un ServiceAccount token montado en /var/run/secrets/kubernetes.io/serviceaccount/token. El Kubernetes Auth de Vault valida este token contra la API de Kubernetes: si el token es valido, Vault asigna al pod las politicas definidas en el role que matchea su ServiceAccount.
Configuracion
Tres pasos: habilitar el metodo, configurar la conexion con el API Server, y crear roles que asocien ServiceAccounts con politicas de Vault.
1. Habilitar el metodo
vault auth enable kubernetes 2. Configurar la conexion con K8s
vault auth enable kubernetes
vault write auth/kubernetes/config \
kubernetes_host="https://kubernetes.default.svc" \
token_reviewer_jwt="$(cat /var/run/secrets/kubernetes.io/serviceaccount/token)" \
kubernetes_ca_cert="@/var/run/secrets/kubernetes.io/serviceaccount/ca.crt" \
issuer="https://kubernetes.default.svc.cluster.local"
vault write auth/kubernetes/role/grafana \
bound_service_account_names=grafana \
bound_service_account_namespaces=aiops \
policies=grafana-policy \
ttl=1h Vault necesita tres datos para validar tokens de Kubernetes: la URL del API Server (kubernetes_host), un token con permisos de TokenReview (token_reviewer_jwt), y el CA certificate para verificar la firma del API Server. En k3s, estos tres valores estan disponibles en /var/run/secrets/ dentro de cada pod.
3. Crear roles
Cada role define que ServiceAccounts (namespace + nombre) pueden autenticarse y que politicas de Vault reciben. Un ServiceAccount que no matchea ningun role es rechazado — no puede leer ningun secret.
Roles y Politicas
La asociacion ServiceAccount → Role → Policy es el corazon de la autorizacion en Vault + Kubernetes. Cada capa agrega una restriccion.
grafana / aiops grafana grafana-policy Ejemplo de Policy HCL
path "secret/data/grafana/*" {
capabilities = ["read"]
}
path "secret/data/n8n/*" {
capabilities = ["read", "list"]
} Esta politica permite leer cualquier secret bajo secret/data/grafana/ y listar y leer bajo secret/data/n8n/. El pod de Grafana puede leer sus propios secrets y los de n8n, pero no puede escribir ni acceder a otros paths. Principio de least-privilege.
TTL y Renovacion
Los tokens generados por Kubernetes Auth tienen TTL limitado. El Vault Agent (init container o sidecar) los renueva automaticamente antes de que expiren.
Siguiente: Flujo de Inyeccion
Con el Injector y el metodo de autenticacion configurados, la pagina siguiente recorre el flujo completo end-to-end: desde el kubectl apply hasta el secret en el filesystem del contenedor.