Membre depuis le 09/11/2024
salut la team security j'ai un setup vault avec un gitlab runner pour choper des secrets mais je suis pas fan du process. actuellement le runner utilise un token vault root ou presque pour accéder à tout c'est pas fou niveau blast radius. On doit stocker un secret quelque part pour ce token c'est pas top. Comment vous gérez ça de manière plus sécure ?
# .gitlab-ci.yml (simplifié et PAS sécure)
deploy:
stage: deploy
script:
- VAULT_ADDR="http://vault.corp.com"
- VAULT_TOKEN="$(cat /path/to/vault_root_token)" # <--- HORRIBLE
- vault kv get secret/my-app/prod
tags:
- docker
Vous devez être connecté pour poster un message !
Recevoir les derniers articles gratuitement en créant un compte !
S'inscrire
Commentaires
zoe12
Membre depuis le 23/05/2024
utiliser le token root c'est un no-go absolu. il faut utiliser les mécanismes d'authentification de vault spécifiques aux CI/CD. gitlab en particulier supporte le JWT auth method. ton runner peut s'authentifier directement avec les claims JWT fournis par gitlab
tmartins
Membre depuis le 19/04/2024
exactement. tu configures un role dans vault pour le gitlab-ci et tu définis des policies hyper granulaires dessus. le runner envoie son jwt à vault, vault vérifie la signature avec la clé publique de gitlab (que tu as configurée dans vault) et si les claims correspondent au role, il donne un token temporaire au runner
philippine-leroy
Membre depuis le 01/02/2025
et surtout vérifie bien les claims. tu peux vérifier le projet id, le ref (branch), le tag, etc. ça assure que seul un job spécifique d'un projet spécifique avec une branch spécifique peut demander un secret. blast radius quasi nul pour un job raté
qpascal
Membre depuis le 09/11/2024
ah ok je vois. donc le runner n'a jamais un token permanent stocké en dur. vault vérifie l'identité gitlab via le JWT. c'est beaucoup mieux ! j'avais pas pensé au JWT auth method pour gitlab. vous avez des exemples de config vault pour ça ?
zoe12
Membre depuis le 23/05/2024
oui regarde la doc hashicorp vault gitlab jwt auth. en gros tu actives le backend puis tu crées un role.
tmartins
Membre depuis le 19/04/2024
dans ton job gitlab ci tu fais :
qpascal
Membre depuis le 09/11/2024
nickel c'est exactement ce qu'il me fallait. je vais mettre ça en place rapido. grand merci pour les infos c'est beaucoup plus robuste comme approche