intégrer vault dans notre gitlab ci pour les secrets comment faire

Posté par chevalier-matthieu le 29/06/2024
RÉSOLU

chevalier-matthieu

Membre depuis le 19/06/2019

salut les pros des secrets. on a un vault centralisé et on veut l'intégrer proprement dans nos pipelines gitlab ci. l'idée c que les jobs puissent récupérer des secrets (clés api, credentials db, etc.) sans que ces secrets ne soient exposés en clair. vous avez déjà fait ça ? quelle est la bonne approche niveau sécu/ergonomie ?


# exemple de job gitlab-ci qu'on veut "sécuriser"
build_and_deploy:
  stage: deploy
  script:
    - docker build -t myapp .
    - aws ecr push myapp
    - deploy-script --api-key $SUPER_SECRET_API_KEY

Commentaires

lucy38

Membre depuis le 26/03/2019

le plus simple et sécurisé c d'utiliser l'auth method `jwt` de vault avec gitlab. chaque job gitlab ci génère un jwt que vault peut valider. tu crées un rôle vault qui mappe à des chemins gitlab spécifiques et des branches pour limiter l'accès.

elisabeth-pires

Membre depuis le 25/03/2019

oui le `jwt` auth method c'est le standard. tu configures un `auth backend` de type `jwt` sur vault puis tu y maps des rôles. ces rôles définissent les chemins vault auxquels un job gitlab donné a accès et pour quelle durée.

anais-bruneau

Membre depuis le 22/07/2019

côté gitlab-ci ton job va se faire un `vault login` avec le `jwt` et récupérer un token vault de courte durée. ensuite il utilise ce token pour lire les secrets via `vault kv get` ou les injecter via `vault agent` si c'est une vm persistante.

lucy38

Membre depuis le 26/03/2019

pour les secrets dynamiques c'est encore mieux. par exemple pour une db tu peux créer un rôle qui donne des creds temporaires. comme ça même si le secret est leaké il expire vite.

chevalier-matthieu

Membre depuis le 19/06/2019

ok jwt auth ça me parle. on configure le backend, les rôles. et après dans mon job gitlab-ci je dois faire un `curl` vers vault pour le login puis un autre `curl` pour récupérer le secret ? ça fait pas mal de bruit dans le script.

elisabeth-pires

Membre depuis le 25/03/2019

tu peux utiliser l'image officielle `vault` comme service dans ton job gitlab-ci. ça simplifie. le `vault login` te renvoie un `VAULT_TOKEN` que tu peux exporter et utiliser pour les requêtes suivantes.

anais-bruneau

Membre depuis le 22/07/2019

et surtout configure tes policies vault pour être le plus restrictif possible. un job ne doit pouvoir lire que les secrets dont il a absolument besoin pour son exécution. principe du moindre privilège.

lucy38

Membre depuis le 26/03/2019

si t'as plein de services qui interagissent avec vault dans tes jobs regarde le `vault agent` en mode sidecar. il gère l'authentification et le renouvellement du token pour toi et peut injecter les secrets directement dans des fichiers ou des variables d'environnement.

chevalier-matthieu

Membre depuis le 19/06/2019

ah le `vault agent` ça a l'air super pratique pour éviter les scripts complexes. je vais creuser ça. et les policies restrictives c'est prévu. merci pour toutes ces pistes très utiles.

lucy38

Membre depuis le 26/03/2019

pas de soucis. hésite pas si t'as des questions plus spécifiques quand tu vas mettre les mains dedans. c'est un peu de config au début mais après c'est super robuste.

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