8 commentaires
d'acc. voici mon rôle vault simplifié :
vault write auth/kubernetes/role/my-app-role \
bound_service_account_names=my-app-sa \
bound_service_account_namespaces=default \
policies=my-app-policy \
ttl=1h
et l'auth method est configurée comme ça :
vault write auth/kubernetes/config \
kubernetes_host="https://kubernetes.default.svc:443" \
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"
l'issuer est souvent la source de problèmes. assure-toi que l'issuer que tu as configuré dans vault correspond exactement à celui de ton cluster k8s. tu peux le récupérer via kubectl get --raw /.well-known/openid-configuration | jq .issuer
j'ai checké l'issuer il est bon. c'est bien https://kubernetes.default.svc.cluster.local. pas ça le souci. le message dit error looking up service account donc c'est avant même d'arriver à l'évaluation du rôle non ?
oui c ça. ça veut dire que le token_reviewer_jwt que Vault utilise n'a pas les permissions pour faire un TokenReview et vérifier le token JWT de ton pod. il faut que le service account que tu utilises pour le token_reviewer_jwt ait le system:auth-delegator ClusterRolebinding ou un rôle qui lui permet de faire des tokenreviews
ah ok je vois ! j'avais pris le SA par défaut du pod Vault qui n'a pas ces permissions. je vais créer un SA dédié avec les bons droits. je reviens après avoir testé ça
exactement le token_reviewer_jwt doit avoir un SA avec les droits pour interroger l'API server et valider les tokens. c'est souvent la cause du permission denied. pense aussi aux bound_service_account_namespaces et bound_service_account_names si t'as plusieurs namespaces ou SAs avec le même nom
c'était bien ça ! j'ai créé un SA vault-token-reviewer avec un ClusterRolebinding system:auth-delegator et j'ai reconfiguré l'auth method Vault avec le token de ce SA. Ça passe ! Merci beaucoup les gars j'aurais galéré longtemps là-dessus !
Laisser une réponse
Vous devez être connecté pour poster un message !
Salut à tous ! J'essaie de configurer l'auth Vault avec Kubernetes pour que mes pods puissent récupérer des secrets. J'ai un souci au niveau du rolebinding, j'arrive pas à faire fonctionner l'authentification. Quand j'essaie de me logger via
vault login -method=kubernetes role=my-app-role jwt=@token.jwt, j'ai unpermission denied.J'ai bien créé l'auth method
kubernetesdans Vault, le rôle, le service account dans k8s. J'ai l'impression de rater un truc évident.