Búsqueda de sitios web

Cómo utilizar Ansible Vault en Playbooks para proteger datos confidenciales - Parte 10


A medida que utiliza Ansible, es posible que deba ingresar información confidencial o secreta en los manuales. Esto incluye claves públicas y privadas SSH, contraseñas y certificados SSL, por mencionar solo algunos. Como ya sabemos, es una mala práctica guardar esta información confidencial en texto sin formato por razones obvias. Esta información debe mantenerse bajo llave porque solo podemos imaginar lo que sucedería si los piratas informáticos o usuarios no autorizados la consiguieran.

Afortunadamente, Ansible nos proporciona una función útil conocida como Ansible Vault. Como sugiere el nombre, Ansible Vault ayuda a proteger información secreta vital, como hemos comentado anteriormente. Ansible Vault puede cifrar variables, o incluso archivos completos y guías YAML, como demostraremos más adelante. Es una herramienta muy útil y fácil de usar que requiere la misma contraseña al cifrar y descifrar archivos.

Profundicemos ahora y tengamos una descripción general de las diversas operaciones que se pueden realizar utilizando Ansible Vault.

Cómo crear un archivo cifrado en Ansible

Si desea crear un archivo Playbook cifrado, simplemente utilice el comando ansible-vault create y proporcione el nombre del archivo como se muestra.

ansible-vault create filename

Por ejemplo, para crear un archivo cifrado mysecrets.yml ejecute el comando.

ansible-vault create mysecrets.yml

A continuación se le pedirá una contraseña y, tras confirmarla, se abrirá una nueva ventana utilizando el editor vi donde podrá empezar a escribir sus obras.

A continuación se muestra una muestra de cierta información. Una vez que haya terminado, simplemente guarde y salga del libro de jugadas. Y eso es todo cuando se crea un archivo cifrado.

Para verificar el cifrado del archivo, use el comando cat como se muestra.

cat mysecrets.yml

Cómo ver un archivo cifrado en Ansible

Si desea ver un archivo cifrado, simplemente pase el comando ansible-vault view como se muestra a continuación.

ansible-vault view mysecrets.yml

Una vez más, se le pedirá una contraseña. Una vez más, tendrás acceso a tu información.

Cómo editar un archivo cifrado en Ansible

Para realizar cambios en un archivo cifrado, utilice el comando ansible-vault edit como se muestra.

ansible-vault edit mysecrets.yml

Como siempre, proporcione la contraseña y luego proceda a editar el archivo.

Una vez que haya terminado de editar, guarde y salga del editor vim.

Cómo cambiar la contraseña de Ansible Vault

En caso de que sienta la necesidad de cambiar la contraseña de la bóveda de Ansible, puede hacerlo fácilmente usando el comando ansible-vault rekey como se muestra a continuación.

ansible-vault rekey mysecrets.yml

Esto le solicita la contraseña de la bóveda y luego le solicita que ingrese la nueva contraseña y luego la confirme.

Cómo cifrar un archivo no cifrado en Ansible

Supongamos que desea cifrar un archivo no cifrado, puede hacerlo ejecutando el comando ansible-vault encrypt como se muestra.

ansible-vault encrypt classified.txt

Luego podrá ver el archivo usando el comando cat como se indica a continuación.

Cómo descifrar un archivo cifrado

Para ver el contenido de un archivo cifrado, simplemente descifre el archivo usando ansible-vault encrypt como se ilustra en el siguiente ejemplo.

ansible-vault decrypt classified.txt

Cómo cifrar variables específicas en Ansible

Además, Ansible Vault le otorga la posibilidad de cifrar ciertas variables. Esto se hace usando el comando ansible-vault encrypt_string como se muestra.

ansible-vault encrypt_string 

Ansible Vault le solicitará la contraseña y luego le pedirá que la confirme. A continuación, escriba el valor de la cadena que desea cifrar. Finalmente, presione ctrl+d. A partir de entonces, puede comenzar a asignar el valor cifrado en un libro de jugadas.

Esto se puede lograr en una sola línea como se muestra a continuación.

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

Cómo descifrar un archivo Playbook durante el tiempo de ejecución

Si tiene un archivo de libro de jugadas y desea descifrarlo durante el tiempo de ejecución, use la opción --ask-vault-pass como se ilustra.

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

Esto descifra todos los archivos que se utilizan en el libro de jugadas, siempre que hayan sido cifrados con la misma contraseña.

Las solicitudes de contraseña pueden resultar molestas a veces. Estas indicaciones hacen que la automatización sea insostenible, especialmente cuando la automatización es clave. Para agilizar el proceso de descifrado de playbooks durante el tiempo de ejecución, se recomienda tener un archivo de contraseña separado que contenga la contraseña de la bóveda de Ansible. Luego, este archivo se puede pasar durante el tiempo de ejecución como se muestra.

ansible-playbook deploy.yml --vault-password-file  /home/tecmint/vault_pass.txt

Esto nos lleva a la conclusión de este tema y de la serie de automatización de Ansible. Esperamos que los tutoriales le hayan aportado conocimientos útiles sobre cómo automatizar tareas en varios servidores desde un sistema central.