Polarys

Aller plus loin

Ansible Vault : gérer les secrets

Ansible Vault : gérer les secrets

Le problème des secrets en clair

Un playbook ou un fichier de variables contenant un mot de passe de base de données ou une clé API en texte clair, versionné dans Git, expose ce secret à quiconque a accès au dépôt, y compris dans l'historique des commits même après suppression ultérieure.

Ansible Vault : chiffrer les fichiers sensibles

ansible-vault create secrets.yml
ansible-vault edit secrets.yml
ansible-vault view secrets.yml

Le fichier est chiffré avec un mot de passe (ou une clé), et son contenu n'est lisible qu'en le déchiffrant avec ce mot de passe.

# secrets.yml (chiffré sur disque, en clair une fois déchiffré)
db_password: "MotDePasseSecret123"
api_key: "sk_live_abc123"

Utiliser un fichier chiffré dans un playbook

ansible-playbook playbook.yml --ask-vault-pass
# ou avec un fichier de mot de passe
ansible-playbook playbook.yml --vault-password-file .vault_pass

Chiffrer une valeur unique plutôt qu'un fichier entier

ansible-vault encrypt_string 'MotDePasseSecret123' --name 'db_password'

Utile pour n'avoir qu'une seule variable chiffrée dans un fichier par ailleurs en clair, plus lisible pour les revues de code.

Cas concret

Une équipe committe par erreur un fichier de variables non chiffré contenant un mot de passe de production sur un dépôt Git privé. Un ancien collaborateur, toujours membre de l'organisation par oubli, conserve un accès en lecture au dépôt et donc au secret exposé. L'utilisation d'Ansible Vault dès le départ aurait rendu ce fichier illisible sans le mot de passe du Vault, limitant l'exposition réelle même en cas d'accès non désiré au dépôt.

Erreurs fréquentes

  • Committer le mot de passe du Vault lui-même dans le même dépôt que les fichiers chiffrés : annule toute la protection apportée.
  • Partager le mot de passe du Vault par email ou messagerie non sécurisée : le secret de dernier niveau doit être transmis via un canal au moins aussi sécurisé que ce qu'il protège.
  • Chiffrer un fichier entier quand une seule variable a réellement besoin d'être secrète, rendant les revues de code impossibles sur le reste du contenu.

À retenir

  • Ansible Vault chiffre des fichiers ou des variables individuelles pour protéger les secrets versionnés dans Git.
  • Le mot de passe du Vault ne doit jamais être stocké dans le même dépôt que les fichiers qu'il protège.
  • encrypt_string permet de ne chiffrer qu'une variable précise, gardant le reste du fichier lisible en revue de code.

Mini-exercice

Un fichier de variables contient une seule valeur sensible (un mot de passe de base de données) au milieu de dizaines de variables non sensibles. Faut-il chiffrer tout le fichier avec Ansible Vault ?

Réponse : non, préférable d'utiliser ansible-vault encrypt_string pour ne chiffrer que cette variable précise, gardant le reste du fichier lisible en clair pour faciliter les revues de code.

Quiz de validation

Quiz - 2 questions

1. Pourquoi ne jamais stocker le mot de passe du Vault dans le même dépôt que les fichiers chiffrés ?

2. Quelle commande chiffre uniquement une variable précise, pas tout un fichier ?

Suis ta progression

Crée un compte gratuit pour suivre ta progression et accéder à toutes les leçons.