Ansible · Vault

Vault

Protégez les données sensibles au repos avec Ansible Vault et gérez les mots de passe de déchiffrement hors du dépôt.

Leçon disponible
20 min

Objectifs

  • Expliquer ce que Vault chiffre et ce qu’il ne protège pas.
  • Créer, chiffrer, afficher et déchiffrer un fichier d’exemple.
  • Utiliser une invite, un password file ou un Vault ID.
  • Éviter tout secret réel ou mot de passe Vault dans le dépôt.

Ansible Vault

Ansible Vault chiffre des variables ou des fichiers sensibles au repos. Les playbooks peuvent ensuite les utiliser lorsqu’une source de mot de passe autorisée est fournie.

Vault ne remplace pas une gestion complète des secrets : une fois déchiffrée en mémoire ou affichée par une tâche, la donnée doit encore être protégée. Utilisez notamment no_log avec discernement et évitez les sorties de debug sensibles.

Cycle de vie d’un fichier chiffré

Ces commandes ouvrent un éditeur ou demandent un mot de passe dans un terminal contrôlé. Utilisez uniquement des valeurs factices pendant l’apprentissage.

Créer directement un fichier chiffré
ansible-vault create group_vars/production/vault.yml
Chiffrer un fichier existant
ansible-vault encrypt group_vars/production/vault.yml
Afficher temporairement le contenu déchiffré
ansible-vault view group_vars/production/vault.yml
Déchiffrer le fichier sur disque
ansible-vault decrypt group_vars/production/vault.yml

La commande decrypt remet le contenu en clair sur disque. Ne l’utilisez que si c’est nécessaire, dans un emplacement protégé, puis rechiffrez ou supprimez la copie claire de manière appropriée.

Fournir le mot de passe sans l’exposer

--ask-vault-pass demande le secret de façon interactive. Un password file permet l’automatisation, mais ce fichier devient lui-même un secret critique à protéger par des permissions strictes et à exclure du contrôle de version.

Demander le mot de passe
ansible-playbook -i inventory.ini site.yml --ask-vault-pass --limit web01
Référencer un fichier de mot de passe protégé
ansible-playbook -i inventory.ini site.yml --vault-password-file .vault_pass --limit web01
Exclure le fichier local du dépôt
.vault_pass
*.vault-password

Ne committez jamais .vault_pass ni aucun mot de passe Vault. Protégez le fichier local avec des permissions minimales et préférez un gestionnaire de secrets adapté en production.

Distinguer plusieurs contextes avec Vault ID

Un Vault ID associe une étiquette à une source de mot de passe, par exemple dev ou production. L’étiquette n’est pas un secret ; la source qui permet de déchiffrer l’est.

  • Ne placez aucun secret réel dans les exemples, logs ou captures.
  • Évitez debug sur une variable sensible et utilisez no_log quand nécessaire.
  • Restreignez l’accès aux sources de mots de passe et prévoyez leur rotation.
  • Vault chiffre au repos ; il ne rend pas sûre une sortie qui révèle le secret.
Créer avec une invite pour l’identité dev
ansible-vault create --vault-id dev@prompt group_vars/dev/vault.yml
Exécuter avec une identité demandée au terminal
ansible-playbook -i inventory.ini site.yml --vault-id production@prompt --limit web01

Mini résumé

  • Vault chiffre des fichiers et variables sensibles au repos.
  • create, encrypt, view et decrypt couvrent le cycle de base.
  • --ask-vault-pass, password file et Vault ID fournissent différentes sources de déchiffrement.
  • Le mot de passe Vault ne doit jamais être committé ni affiché.

Outils associés

Construire une commande Ansible

Utilisez Ansible Command Builder pour composer une commande ad-hoc ou de diagnostic et comprendre ses options sans l’exécuter.

Ouvrir l’outil

Mini quiz

Trois questions pour vérifier les notions essentielles de la leçon.

1. Quelle protection Ansible Vault apporte-t-il principalement ?
2. Comment traiter .vault_pass ?
3. À quoi sert principalement un Vault ID ?