Quelles sont les meilleures pratiques de structuration des variables de chiffrement depuis Ansible 2.3.0?


8

Ce document indique que depuis Ansible 2.3 il devrait être possible de crypter certains vars en utilisant un !vault |préfixe au lieu de mettre une variable et des clés dans un fichier de coffre-fort et de le crypter complètement.

notsecret: myvalue
mysecret: !vault |
          $ANSIBLE_VAULT;1.1;AES256
          66386439653236336462626566653063336164663966303231363934653561363964363833313662
          6431626536303530376336343832656537303632313433360a626438346336353331386135323734
          62656361653630373231613662633962316233633936396165386439616533353965373339616234
          3430613539666330390a313736323265656432366236633330313963326365653937323833366536
          34623731376664623134383463316265643436343438623266623965636363326136
other_plain_text: othervalue

Pour le moment, la structure est la suivante:

ansible/group_vars/testing/vars
ansible/group_vars/testing/vault

Lorsqu'une variable chiffrée est déplacée du coffre-fort vers le répertoire vars et ansible-vault decrypt ansible/group_vars/testing/varsest exécutée, elle renvoie:

ERROR! input is not vault encrypted data for ansible/group_vars/testing/vars

Cette variable voûtée doit être déchiffrée avec le secret de coffre fourni et utilisée comme variable normale. La ligne de commande ansible-vault prend en charge stdin et stdout pour crypter les données à la volée, qui peuvent être utilisées à partir de votre éditeur préféré pour créer ces variables voûtées; vous devez juste être sûr d'ajouter la balise! vault pour qu'Ansible et YAML soient conscients de la nécessité de décrypter. Le | est également requis, car le chiffrement du coffre-fort se traduit par une chaîne de plusieurs lignes.

Des questions

  1. Les variables qui doivent être chiffrées doivent-elles être chiffrées une par une en utilisant la ligne de commande?
  2. Quelles sont les meilleures pratiques pour restructurer l'ancienne structure Ansible? Par exemple, supprimer les fichiers du coffre-fort et mettre tous les fichiers chiffrés dans le fichier vars?

Réponses:


2

Ayant travaillé avec ansible vault assez récemment (en particulier en ce qui concerne le chiffrement et la façon de chiffrer ces choses sans rendre le code illisible), j'ai trouvé très peu d'incitation à changer mes habitudes en 2.3.

Si je veux avoir une série de variables ou de fichiers chiffrés, gardez-les séparés (je les préfixe tous vault_) et laissez-les.

J'ai utilisé la fonctionnalité! Vault à quelques reprises, mais je ne suis absolument pas surpris car il semble plus facile d'être très explicite sur ce qui est et ne vient pas d'un fichier secret. De cette façon, personne ne modifie mes pièces ne fait d'hypothèses sur ce qui est et n'est pas des données sensibles.


1

J'ai décidé de supprimer le ansible/group_vars/testingrépertoire et de le remplacer par un fichier, c'est ansible/group_vars/testing-à- dire qui contient les variables chiffrées:

mysecret: !vault |
          $ANSIBLE_VAULT;1.1;AES256
          66386439653236336462626566653063336164663966303231363934653561363964363833313662
          6431626536303530376336343832656537303632313433360a626438346336353331386135323734
          62656361653630373231613662633962316233633936396165386439616533353965373339616234
          3430613539666330390a313736323265656432366236633330313963326365653937323833366536
          34623731376664623134383463316265643436343438623266623965636363326136

Au lieu d'exécuter, ansible-vault edit ansible/group_vars/testing/vaulton pourrait diriger les valeurs qui doivent être chiffrées vers ansible-vault, c'est-à-dire printf mysecret | ansible-vault encrypt. Ce dernier va crypter mysecretet la sortie pourrait être ajoutée au ansible/group_vars/testingfichier. Quand ansible-playbooksera exécuté les variables chiffrées seront déchiffrées si le fichier de coffre-fort ansible est spécifié bien sûr.

Si la valeur chiffrée doit être déboguée, le code suivant peut être utilisé:

- debug: msg="Decrypted value: {{ encrypted_var }}"
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.