En este artículo, vamos a aprender¿Qué es Ansible Vault?y comoutilice Ansible Vault para proteger los datos confidenciales del cuaderno de estrategiascifrando los datos en Linux.
¿Qué es Ansible Vault?
Bóveda de Ansiblees una función de ansible que le permitemantener datos confidenciales como contraseñas o claves en archivos cifradosen lugar de dejar los datos visibles como texto sin formato en playbooks o roles.
La autenticación y la autorización son dos capas importantes que controlan la parte de acceso de las aplicaciones de software. Cuando trabaja en un entorno colaborativo, no podrá ver todos los datos.
De manera similar, cuando crea un proyecto usandoansiblees posible que desee mantener segura cierta información confidencial, como la clave API, la contraseña de la base de datos y los tokens de acceso.
Mantener esta información visible para todos no es bueno para la seguridad, especialmente cuando la almacena en repositorios públicos.
En la próxima sección de esteTutorial de bóveda de Ansibleaprenderemos a usar ansible Vault para cifrar un archivo o una cadena con el fin deasegura tus secretosde forma segura y cómouse la bóveda de Ansible en los libros de jugadas para proteger los datos confidencialescon example comandos
Trabajar con el comando Ansible Vault
Por defecto, ansible-vault viene con la instalación de ansible. Inicie su terminal y ejecute el siguiente comando que le dará la lista de opciones que puede usar con el comando de bóveda ansible.
$ ansible-vault --help
Cifrado de archivos con Ansible Vault
Si desea crear un nuevo archivo, escriba algunos datos en él y cifre, luego ejecute el siguiente comando. Aquí el“secretkey
“es el nombre del archivo.
$ ansible-vault create secretkey
Comprendamos qué sucede cuando ejecuta este comando.
- Dado que este archivo no está disponible, se creará un archivo y se abrirá para escritura.
- Se le pedirá que proporcione la contraseña para este archivo que debe mantenerse seguro.Recuerde que sin la contraseña, no podrá descifrar el archivootra vez.
Una vez que se cierra el archivo, el contenido se cifrará. si intenta abrir el archivo que cifró con una aplicación de visualización/editor de texto, verá algunos datos aleatorios como se muestra en la imagen a continuación.

En la primera línea, hay algunos metadatos que ansible usará internamente para el cifrado y descifrado. Como se ve en la primera línea,Algoritmo AES256se utiliza para cifrar el archivo.
También puede cifrar archivos existentes.
Para cifrar un archivo existente, ejecute el siguiente comando. Nuevamente, se le pedirá que proporcione la contraseña de la bóveda que luego se usará para descifrar el archivo.
$ echo "api_key: 'XUITZ89776XX'" > secretkey2 # Writing random data to file
$ ansible-vault encrypt secretkey2

Cómo cambiar la contraseña de la bóveda de Ansible
Puede establecer una nueva contraseña de bóveda para cualquier archivo cifrado existente ejecutando el siguiente comando. Aquí debe recordar su contraseña anterior, que se le solicitará primero, seguida de la nueva contraseña de la bóveda.
$ ansible-vault rekey secretkey2

Cómo descifrar el archivo cifrado
Si desea ver el contenido original del archivo, hay algunas formas de hacerlo. El primer método es ejecutar eldecrypt
comando que pondrá el archivo en forma no cifrada.
$ ansible-vault decrypt secretkey2

También puede ver el contenido del archivo cifrado sin descifrar ejecutando el siguiente comando con“view
“en vez de “decrypt
“.
$ ansible-vault view secretkey2

La diferencia entredecrypt
yview
es que el primero eliminará el cifrado para ver el contenido original, pero el segundo simplemente descifrará e imprimirá el contenido mientras mantiene el archivo original cifrado.
Modificar el contenido en el archivo cifrado
Supongamos que desea editar el contenido de un archivo cifrado. En este caso, puede descifrar el archivo, editar el contenido o volver a cifrar el archivo. Como alternativa, puede utilizar el“edit
“comando para editar el contenido.
$ ansible-vault edit secretkey2

La ventaja con el “edit
” comando es que no necesita descifrar el archivo y cifrarlo nuevamente. Abrirá el archivo para editarlo, y una vez que close el archivo se cifrará automáticamente.
Contenido cifrado con Ansible Playbook
Hasta ahora hemos visto cómo cifrar y descifrar datos a nivel de archivo. También puede cifrar una cadena. tomemos un example.
Tengo algunas variables utilizadas para la conexión remota y también contiene una contraseña de conexión. Para cifrar la contraseña, ejecute el siguiente comando. Aquí estoy usando la contraseña como“clave”.
Recuerde la contraseña de la bóveda que se necesitará para descifrar la cadena.
$ ansible-vault encrypt_string "password"
En el libro de jugadas a continuación, he creado algunos vars que simulan los detalles de conexión y“connect_pwd
“almacenará los datos cifrados. Estoy imprimiendo el “connection_pwd
” variable utilizando el módulo de depuración en la tarea.
- name: "Test playbook for ansible vault" gather_facts: False hosts: local vars: remote_user: produser default_role: prodrole connect_pwd: << COPY PASTE THE ENCRYPTED PASSWORD HERE >> tasks: - name: print the password debug: msg: "{{ connect_pwd }}"

Al ejecutar el libro de jugadas, debe usar cualquiera--ask-vault-password
oh--ask-vault-pass
marca que le pedirá que ingrese la contraseña de la bóveda para descifrar la cadena.
$ ansible-playbook playbook.yml --ask-vault-pass

Si intenta ejecutar el libro de jugadas sin--ask-vault-password
oh--ask-vault-pass
bandera, la tarea fallará con el siguiente error.
fatal: [master.anslab.com]: FAILED! => {"msg": "Attempting to decrypt but no vault secrets found"}
También puede almacenar la contraseña de la bóveda en un archivo y pasarla como argumento a--vault-password-file
oh--vault-pass-file
argumento.
Al almacenar la contraseña de la bóveda en un archivo,asegúrese de que se haya establecido el permiso adecuadopara que solo el propietario del archivo pueda leer el contenido del archivo.
$ echo "password" > .secretkey
$ chmod 600 .secretkey
Creé un archivo llamado.secretkey
y establecer el permiso para600. Ahora, este archivo se puede usar para descifrar la cadena en mi libro de jugadas.
$ ansible-playbook --vault-password-file .secretkey playbook.yml
Almacene la contraseña de la bóveda en el archivo de configuración de Ansible
También puede almacenar la contraseña de la bóveda en elansible.cfg
expediente. En este caso, puede ejecutar el comando del libro de jugadas sin necesidad de banderas de bóveda adicionales.
vault_password_file = .secretkey
También puede configurar la siguiente variable ambiental que se utilizará para todo el descifrado.
export ANSIBLE_VAULT_PASSWORD_FILE="./.secretkey"
Conclusión
En este momento, debe tener una comprensión clara de cómo proteger sus secretos con la bóveda de Ansible. Cifrar contenido con Ansible Vault es bastante fácil y no requiere ninguna herramienta externa.
Practique todos los ejemplos proporcionados en el artículo que lo ayudarán a comprender más sobre cómo una bóveda de Ansible ayuda a proteger los datos confidenciales de Playbook.
Recurso:
Imagen destacada porJagrit Parajulidepixabay.