Ansible Vault : Protéger vos données sensibles et variable

deadlock with key on hole
Photo by Pixabay on Pexels.com

Introduction

Ansible Vault est un outil intégré à Ansible qui permet de chiffrer des données sensibles dans vos playbooks et variables. Cela garantit la sécurité de vos informations confidentielles telles que les mots de passe, les clés API et les tokens d’accès. Voici une liste d’exemple d’utilisation concrète d’ansible vault.

Comment protéger vos données sensibles avec Ansible ?

  • Pour chiffrer l’entièreté d’un fichier existant :
$ ansible-vault encrypt secret.yml

Cette commande vous demandera un mot de passe et chiffrera le contenu du fichier secret.yml.
Notez bien: Le mot de passe choisi est crucial pour déchiffrer le fichier ultérieurement. Conservez-le en lieu sûr.


  • Chiffrer une valeur de variable

Vous pouvez également chiffrer une valeur de variable directement dans la ligne de commande :

$ ansible-vault encrypt_string "valeur_de_ma_variable_sensible" -n ma_cle_de_chiffrement >> main.yml

Remplacez ma_cle_de_chiffrement par le nom de la clé que vous souhaitez utiliser pour chiffrer la valeur. Le contenu chiffré sera ajouté au fichier main.yml.


  • Créer un fichier Vault

Pour créer un fichier Vault vide pour stocker des variables sensibles :

$ ansible-vault create group_vars/all/vault

Ceci créera un fichier vault dans le répertoire group_vars/all. Vous pouvez ensuite utiliser un éditeur de texte pour ajouter des variables chiffrées à ce fichier.


  • Déchiffrer un fichier

Déchiffre un fichier ou une valeur de variable chiffrée et affiche le contenu non chiffré.

$ ansible-vault decrypt secret.yml #ou
$ ansible-vault decrypt_string "$(cat group_vars/all/vault.yml | grep ma_variable_sensible:)"

Cette commande déchiffre le contenu du fichier secret.yml chiffré avec Ansible Vault et affiche le résultat à l’écran.
Cette commande extrait la valeur de la variable ma_variable_sensible du fichier group_vars/all/vault.yml, la déchiffre avec Ansible Vault et affiche le résultat à l’écran


  • Afficher le contenu

Affiche le contenu d’un fichier ou d’une valeur de variable chiffrée sans le déchiffrer.

$ ansible-vault view secret.yml

Cette commande affiche le contenu du fichier secret.yml chiffré avec Ansible Vault, mais ne le déchiffre pas. Cela peut être utile si vous souhaitez uniquement vérifier le format ou la structure du fichier sans révéler son contenu.


  • Modifier le contenu

Modifie le contenu d’un fichier ou d’une valeur de variable chiffrée. Le fichier modifié est ensuite re-chiffré.

$ ansible-vault edit secret.yml

Cette commande ouvre le fichier secret.yml chiffré avec Ansible Vault dans un éditeur de texte. Vous pouvez modifier le contenu du fichier, puis enregistrer les modifications. Le fichier modifié sera automatiquement re-chiffré avec Ansible Vault.


  • Renouveler la clé (rekey)

Renouvelle la clé de chiffrement d’un fichier Vault. Cela peut être utile si vous pensez que votre clé de chiffrement a été compromise.

$ ansible-vault rekey secret.yml

Cette commande renouvelle la clé de chiffrement du fichier secret.yml. Le fichier sera re-chiffré avec la nouvelle clé. Attention: cette opération rendra le fichier inaccessible avec l’ancienne clé de chiffrement. Assurez-vous que vous avez sauvegardé l’ancienne clé ou que tous les utilisateurs ont accès à la nouvelle clé avant de renouveler la clé.

Remarque:

  • Pour effectuer ces opérations, vous devez avoir le mot de passe Vault correspondant au fichier ou à la variable que vous souhaitez modifier.
  • Vous pouvez également utiliser les options --vault-id et --vault-password-file pour spécifier le fichier d’identité Vault et le mot de passe, respectivement. (voir plus bas)

  • Exécuter un playbook avec Vault

Lorsque vous exécutez un playbook qui nécessite des données chiffrées, vous devez fournir le mot de passe de Vault :

$ ansible-playbook playbook.yml --ask-vault-pass

Ansible vous demandera le mot de passe et l’utilisera pour déchiffrer les données nécessaires à l’exécution du playbook.
Alternatives: Vous pouvez définir le mot de passe dans un fichier texte et l’indiquer via l’option –vault-password-file :

$ ansible-playbook playbook.yml --vault-password-file /home/utilisateur/mot_de_passe.txt

Vous pouvez également configurer Ansible pour utiliser une liste de fichiers d’identité Vault dans le fichier ansible.cfg. Cela permet de définir différents mots de passe pour différents environnements.


  • Configuration d’Ansible pour utiliser plusieurs fichiers d’identité Vault dans ansible.cfg

Ansible Vault vous permet de chiffrer des données sensibles dans vos playbooks et variables. Vous pouvez définir différents mots de passe pour différents environnements en configurant Ansible pour utiliser une liste de fichiers d’identité Vault dans le fichier ansible.cfg.

  • Créez des fichiers d’identité Vault:

Créez des fichiers individuels pour chaque environnement, en nommant chaque fichier selon l’identifiant d’environnement que vous souhaitez utiliser.

Par exemple:
• ~/.vault_dev #pour l’environnement de développement
• ~/.vault_prod #pour l’environnement de production

$ touch ~/.vault_prod ~/.vault_dev


Chaque fichier doit contenir le mot de passe chiffré pour son environnement respectif. Vous pouvez utiliser la commande ansible-vault encrypt pour chiffrer les mots de passe:

$ ansible-vault encrypt --vault-id=dev mon_mot_de_passe_dev > ~/.vault_dev
$ ansible-vault encrypt --vault-id=prod mon_mot_de_passe_prod > ~/.vault_prod
  • Configurez ansible.cfg:

Ouvrez le fichier ansible.cfg et ajoutez la section suivante sous la section [defaults]:

[defaults]
vault_identity_list = dev@~/.vault_dev, prod@~/.vault_prod

Remplacez dev et prod par les identifiants d’environnement que vous avez définis dans les noms de fichiers. Vous pouvez ajouter plus d’entrées à la liste en suivant le même format.

  • Exécutez le playbook:

Lorsque vous exécutez un playbook qui nécessite des données chiffrées, vous devez spécifier l’identifiant d’environnement dans l’option –vault-id:

$ ansible-playbook playbook.yml --vault-id=dev

Ceci indiquera à Ansible d’utiliser le fichier d’identité Vault ~/.vault_dev pour déchiffrer les données nécessaires à l’exécution du playbook pour l’environnement de développement.



Avantages:
• Gérer plusieurs environnements avec des mots de passe Vault distincts.
• Améliorer la sécurité en isolant les mots de passe par environnement.
• Faciliter la collaboration en permettant à chaque équipe d’avoir son propre fichier d’identité Vault.
Remarques:
• Assurez-vous que les fichiers d’identité Vault sont stockés en toute sécurité et accessibles uniquement aux utilisateurs autorisés.
• N’oubliez pas les mots de passe Vault, car il n’y a aucun moyen de les récupérer s’ils sont perdus.Si vous le perdez, vous ne pourrez plus accéder à vos données chiffrées.
• Utilisez des mots de passe forts et uniques pour vos fichiers Vault. Pour plus de complexité, vous pouvez utiliser des outils comme Vault ou HashiCorp Consul pour gérer les secrets de manière centralisée ou KeePass Conçu pour une utilisation individuelle et des petits groupes.

.• Envisagez d’utiliser un gestionnaire de mots de passe pour stocker vos mots de passe Vault en toute sécurité.

En configurant Ansible pour utiliser plusieurs fichiers d’identité Vault, vous gagnez en flexibilité et en sécurité pour gérer les données sensibles dans vos environnements Ansible.

Ressources supplémentaires


• Documentation officielle d’Ansible Vault
En employant ces techniques avancées et en les combinant avec vos connaissances de base d’Ansible, vous serez en mesure de créer des playbooks puissants et automatiser des tâches complexes avec une précision et une efficacité accrues.

Automation Experts

Rejoignez-nous pour une newsletter exclusive sur l'automatisation des experts informatique !

Obtenez les dernières tendances, astuces et outils pour optimiser vos processus, accélérer vos projets et libérer tout le potentiel de l'automatisation dans le monde de la technologie. Abonnez-vous dès maintenant pour rester à la pointe de l'innovation et transformer votre manière de travailler."

Comments

No comments yet. Why don’t you start the discussion?

    Alors tu en pense quoi de cette article ? Dis-moi tous..