Authentification Vault via Kubernetes : Problème de rolebinding

Posté par zacharie-adam le 07/02/2025
RÉSOLU

zacharie-adam

Membre depuis le 12/04/2019

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 un `permission denied`.

# Erreur retournée
Error authenticating: error looking up service account: permission denied

J'ai bien créé l'auth method `kubernetes` dans Vault, le rôle, le service account dans k8s. J'ai l'impression de rater un truc évident.

Commentaires

emile17

Membre depuis le 12/12/2024

hello ! tu peux nous montrer la config de ton rôle vault et comment tu as configuré l'auth method kubernetes ? le `permission denied` peut venir de plusieurs endroits

zacharie-adam

Membre depuis le 12/04/2019

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"

lemaire-gilles

Membre depuis le 06/01/2020

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`

zacharie-adam

Membre depuis le 12/04/2019

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 ?

leon20

Membre depuis le 20/06/2024

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`

zacharie-adam

Membre depuis le 12/04/2019

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

emile17

Membre depuis le 12/12/2024

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

zacharie-adam

Membre depuis le 12/04/2019

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 !

Rejoindre la communauté

Recevoir les derniers articles gratuitement en créant un compte !

S'inscrire