Sécurisez vos secrets avec Ansible Vault

Ce blog Ansible Vault explique comment les données sensibles (mots de passe / clé secrète / fichiers cert) sont stockées dans des fichiers cryptés et intégrées dans les playbooks Ansible.

Plus l'utilisation de la technologie est élevée, plus la menace potentielle pour la sécurité est grande. Une configuration Ansible typique vous oblige à introduire des «Secrets». Ces secrets peuvent être n'importe quoi, des mots de passe, des jetons API, des clés SSH publiques ou privées, des certificats SSL, etc. Comment gardons-nous ces secrets en sécurité? Ansible fournit une fonctionnalité appelée Ansible Vault.



Dans ce blog, je vais vous montrer comment utiliser Ansible Vault et explorer certaines des meilleures pratiques pour protéger les données.



Sujets abordés dans ce blog:

Si vous souhaitez maîtriser DevOps, ' cours serait votre option préférée.



Qu'est-ce qu'Ansible Vault?

Le fait de disposer d'une infrastructure sous forme de code peut représenter la menace d'exposer vos données sensibles au monde, entraînant des problèmes de sécurité indésirables. Ansible Vault est une fonctionnalité qui vous permet de garder tous vos secrets en sécurité. Il peut crypter des fichiers entiers, des playbooks YAML entiers ou même quelques variables. Il fournit une installation où vous pouvez non seulement crypter des données sensibles, mais également les intégrer dans vos playbooks.

Vault est implémenté avec une granularité au niveau des fichiers où les fichiers sont soit entièrement chiffrés, soit entièrement non chiffrés. Il utilise le même mot de passe pour le chiffrement ainsi que pour le déchiffrement des fichiers, ce qui rend l'utilisation d'Ansible Vault très conviviale.

Pourquoi utiliser Ansible Vault?

Comme Ansible est utilisé pour l'automatisation, il est fort possible que les playbooks contiennent certaines informations d'identification, des certificats SSL ou d'autres données sensibles. Enregistrer des données sensibles sous forme de texte brut est une mauvaise idée. Un mauvais engagement dans GitHub ou le vol d'un ordinateur portable peut entraîner une perte énorme pour une organisation. C'est là que le coffre-fort Ansible entre en scène. C'est un excellent moyen d'avoir une infrastructure sous forme de code, sans compromettre la sécurité.



Supposons que nous ayons un playbook qui provisionne votre instance EC2 sur AWS. Vous devez fournir votre identifiant de clé d'accès AWS et votre clé secrète AWS dans le playbook. Vous ne partagez pas ces clés avec d'autres pour des raisons évidentes. Comment les gardez-vous non exposés? Il y a deux façons: soit crypter ces deux variables et les intégrer dans le playbook, soit crypter l'intégralité du playbook.

Ce n'était que l'un des scénarios dans lesquels un coffre-fort peut être utilisé. Nous pouvons soit chiffrer des fichiers entiers, soit simplement chiffrer quelques variables susceptibles de contenir des données sensibles, puis Ansible les déchiffre automatiquement pendant l'exécution. Nous pouvons maintenant valider ces valeurs en toute sécurité sur GitHub.

Création d'un fichier crypté

Pour créer un fichier chiffré, utilisez le ansible-vault créer commande et transmettez le nom de fichier.

$ ansible-vault create filename.yaml

Vous serez invité à créer un mot de passe, puis à le confirmer en le retapant.

création de coffre-fort ansible - Ansible Vault - Edureka

Une fois votre mot de passe confirmé, un nouveau fichier sera créé et ouvrira une fenêtre d'édition. Par défaut, l'éditeur d'Ansible Vault est vi. Vous pouvez ajouter des données, enregistrer et quitter.

Et votre fichier est crypté.

Modification de fichiers cryptés

Si vous souhaitez modifier un fichier crypté, vous pouvez le modifier en utilisant ansible-vault modifier commander.

$ ansible-vault modifier secrets.txt

Où secrets.txt est un fichier chiffré déjà créé.

Vous serez invité à insérer le mot de passe du coffre-fort. Le fichier (version déchiffrée) s'ouvrira dans un éditeur vi et vous pourrez alors apporter les modifications requises.

Si vous vérifiez la sortie, vous verrez que votre texte sera automatiquement chiffré lors de l'enregistrement et de la fermeture.

Affichage du fichier crypté

Si vous souhaitez simplement afficher un fichier crypté, vous pouvez utiliser le vue ansible-vault commander.

$ ansible-vault view filename.yml

Encore une fois, vous serez invité à entrer un mot de passe.

et vous verrez une sortie similaire.

Renouveler le mot de passe du coffre-fort

Bien entendu, vous souhaiterez parfois changer le mot de passe du coffre-fort. Vous pouvez utiliser le renouvellement de clé de coffre-fort ansible commander.

$ ansible-vault rekey secrets.txt

Vous serez invité avec le mot de passe actuel du coffre-fort, puis le nouveau mot de passe et enfin terminé en confirmant le nouveau mot de passe.

Chiffrement des fichiers non chiffrés

Supposons que vous ayez un fichier que vous souhaitez crypter, vous pouvez utiliser le chiffrement ansible-vault commander.

$ ansible-vault encrypt filename.txt

Vous serez invité à insérer et confirmer le mot de passe et votre fichier est chiffré.

Maintenant que vous regardez le contenu du fichier, tout est crypté.

Décrypter les fichiers cryptés

Si vous souhaitez décrypter un fichier crypté, vous pouvez utiliser décrypter ansible-vault commander.

$ ansible-vault décrypter le nom du fichier.txt

Comme d'habitude, il vous demandera d'insérer et de confirmer le mot de passe du coffre-fort.

Crypter des variables spécifiques

La meilleure pratique lors de l'utilisation d'Ansible Vault consiste à chiffrer uniquement les données sensibles. Dans l'exemple expliqué ci-dessus, l'équipe de développement ne souhaite pas partager son mot de passe avec l'équipe de production et l'équipe de préparation, mais elle peut avoir besoin d'accéder à certaines données pour effectuer sa propre tâche. Dans de tels cas, vous ne devriez crypter que les données que vous ne souhaitez pas partager avec d'autres, en laissant le reste tel quel.

Ansible Vault vous permet de chiffrer uniquement des variables spécifiques. Vous pouvez utiliser le ansible-vault encrypt_string commande pour cela.

$ ansible-vault encrypt_string

Vous serez invité à insérer, puis à confirmer le mot de passe du coffre-fort. Vous pouvez alors commencer à insérer la valeur de chaîne que vous souhaitez chiffrer. Appuyez sur ctrl-d pour terminer la saisie. Vous pouvez maintenant attribuer ce chiffrévaleurà une chaîne du playbook.

classe anonyme en java]

Vous pouvez également réaliser la même chose en une seule ligne.

$ ansible-vault encrypt_string 'string' --name 'variable_name'

Décryptage des fichiers chiffrés pendant l'exécution

Si vous souhaitez décrypter un fichier pendant l'exécution, vous pouvez utiliser –Ask-vault-pass drapeau.

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

Cela déchiffrera tous les fichiers chiffrés utilisés pour l'exécution de ce playbook launch.yml. De plus, cela n'est possible que si tous les fichiers sont cryptés avec le même mot de passe.

Les invites de mot de passe peuvent devenir ennuyeuses. Le but de l'automatisation devient inutile. Comment pouvons-nous améliorer cela? Ansible a une fonction appelée «fichier de mot de passe» qui fait référence à un fichier contenant le mot de passe. Vous pouvez ensuite simplement transmettre ce fichier de mots de passe pendant l'exécution pour l'automatiser.

$ ansible-playbook launch.yml --vault-password-file ~ / .vault_pass.txt

Il est également possible d'avoir un script distinct qui spécifie les mots de passe. Vous devez vous assurer que le fichier de script est exécutable et que le mot de passe est imprimé sur la sortie standard pour qu'il fonctionne sans erreurs gênantes.

$ ansible-playbook launch.yml --vault-password-file ~ / .vault_pass.py

Utilisation de l'ID de coffre-fort

L'identifiant de coffre-fort est un moyen de fournir un identifiant à un mot de passe de coffre-fort particulier. L'ID de coffre-fort aide à chiffrer différents fichiers avec différents mots de passe à référencer dans un playbook. Cette fonctionnalité d'Ansible est sortie avec la sortie d'Ansible 2.4. Avant cette version, un seul mot de passe de coffre-fort pouvait être utilisé dans chaque exécution de playbook ansible.

Alors maintenant, si vous souhaitez exécuter un playbook Ansible qui utilise plusieurs fichiers cryptés avec différents mots de passe, vous pouvez utiliser Vault Id.

$ ansible-playbook --vault-id vault-pass1 --vault-id vault-pass2 filename.yml

Avec cela, nous arrivons à la fin de ce blog Ansible Vault. C'est incroyable de rattraper la technologie et d'en tirer le meilleur parti, mais pas en faisant des compromis sur la sécurité. C'est l'un des meilleurs moyens d'avoir l'infrastructure en tant que code (IaC).

Si vous trouvez cet article utile, consultez le ' proposé par Edureka. Il couvre tous les outils qui ont rendu l'industrie informatique plus intelligente.

Vous avez une question pour nous? Veuillez le publier sur et nous reviendrons vers vous.