Ansible es una fantástica herramienta de automatización y orquestación popular entre muchos desarrolladores debido a su simplicidad y facilidad de uso. Una de las características más importantes que viene con Ansible es Ansible Vault. Como ya habrá adivinado, bóveda de Ansible es una función de seguridad que se utiliza para cifrar o proteger información confidencial en libros de jugadas o archivos en lugar de tenerlos en texto sin formato, lo que representaría una amenaza significativa en caso de una infracción. Dichos datos incluyen contraseñas , fichas de API y certificados SSL por mencionar algunos. Puede cifrar todo el libro de jugadas YAML archivos de una cadena dentro del libro de jugadas con información confidencial, como una contraseña.
En esta guía, analizamos varias formas en que Ansible Vault puede ayudarlo a bloquear su información confidencial y mantener a raya a los fisgones.
Cree un archivo cifrado con Ansible Vault
Ansible Vault utiliza la herramienta de utilidad de línea de comandos de Ansible-Vault para cifrar información confidencial mediante el algoritmo AES256. Esto proporciona un cifrado simétrico que está integrado en una contraseña definida. Un usuario puede usar la misma contraseña para cifrar o descifrar archivos para acceder al contenido.
Para crear un archivo cifrado, use la herramienta de utilidad ansible-vault como se muestra
$ ansible-vault crear archivo.yml
Por ejemplo, para crear un archivo, llámelo secret_file.yml , ejecute el comando
$ ansible-vault create secret_file.yml
Se le pedirá que proporcione una nueva contraseña de bóveda. Introduzca su contraseña preferida y confirme. Una vez que haya confirmado la contraseña, se iniciará el editor vim.
A continuación, escriba el contenido del archivo que desea que Ansible Vault cifre y guarde el archivo. A continuación se muestra un texto de muestra.
Hello, this is my secret file
Cuando vea el archivo, descubrirá que ya se ha cifrado con el algoritmo AES256, como se muestra.
$ vim secret_file.yml
Editar un archivo cifrado con Ansible Vault
Para realizar cambios en un archivo ya existente que está encriptado, use la sintaxis:
$ ansible-vault editar archivo.yml
Desde nuestro archivo de muestra que creamos anteriormente, el comando para editar el archivo sería:
$ ansible-vault edit secret_file.yml
Nuevamente, se le solicitará la contraseña de la bóveda y, después de proporcionarla, se le otorgará acceso al archivo para realizar modificaciones.
Ver un archivo cifrado
Para echar un vistazo a un archivo cifrado, utilice la sintaxis:
$ ansible-vault ver archivo.yml
Usando nuestro archivo, el comando será
$ ansible-vault view secret_file.yml
Cifrar un archivo existente con Ansible Vault
Suponga que desea cifrar un archivo ya existente que no está cifrado, por ejemplo, un archivo de inventario. ¿Cómo lo harías? Para lograr esto, use la sintaxis:
$ archivo de cifrado de ansible-vault.yml
Por ejemplo, para cifrar un archivo file1.yml ejecuta el comando:
$ ansible-vault encrypt file1.yml
Especifique la contraseña de la bóveda y confírmela para cifrar el archivo.
Descifrar un archivo con Ansible Vault
Para descifrar un archivo y volver a texto sin formato, ejecute el comando:
$ ansible-vault decrypt file1.yml
Si todo salió bien, recibirá un mensaje de "Descifrado exitoso". Ahora puede usar el comando cat para ver el contenido del archivo.
Restablecer la contraseña de la bóveda de Ansible
Además, puede restablecer o cambiar la contraseña de Vault. Esto se hace usando el rekey opción en el comando de bóveda ansible como se muestra:
$ ansible-vault rekey secret_file.yml
Especifique primero la contraseña actual de la bóveda y luego cree una nueva contraseña y confírmela.
Descifrado de contenido en tiempo de ejecución en Ansible Playbook
Antes de Ansible 2.4, el descifrado de archivos durante el tiempo de ejecución requería el uso de –ask-vault-pass parámetro como se muestra con ansible o libro de jugadas ansible comandos:
$ ansible-playbook playbook_example.yml --ask-vault-pass
Luego se le solicitará una contraseña de Vault y el descifrado comenzará en tiempo de ejecución.
Sin embargo, eso ha quedado en desuso. Desde Ansible 2.4, el método estándar para solicitar una contraseña es utilizar –vault-id opción como se muestra.
$ ansible-playbook playbook_example.yml --vault-id @prompt
El @prompt le pedirá la contraseña
Un truco simple para evitar que se le solicite una contraseña cada vez que descifra archivos durante el tiempo de ejecución es almacenar la contraseña de la bóveda en un archivo.
Antes de Ansible 2.4, la forma de lograr esto era el uso de –vault-password-file parámetro para especificar la ruta al archivo que contiene la contraseña almacenada.
Por ejemplo, en la demostración a continuación, el archivo de contraseña se encuentra en el archivo /etc/ansible/vault_pass.txt.
$ ansible-playbook playbook_example.yml --vault-password-file /etc/ansible/vault_pass.txt
Sin embargo, al igual que el –ask-vault-pass opción, la opción –vault-password-file ha quedado obsoleto para allanar el camino para –vault-id opción. El comando, por lo tanto, se ve así:
$ ansible-playbook playbook_example.yml --vault-id /etc/ansible/vault_pass.txt
Cifrar una variable en Ansible Playbook
Además de cifrar un libro de jugadas completo, ansible-vault también le brinda la capacidad de cifrar solo variables. En la mayoría de los casos, estas son variables que contienen información altamente confidencial y sensible, como contraseñas y claves API.
El libro de jugadas a continuación está destinado a imprimir el valor de la variable my_secret que contiene una contraseña definida como [email protected].
En general, es una mala idea almacenar las contraseñas en texto sin formato porque si alguien obtiene el archivo del libro de jugadas, su seguridad puede verse comprometida.
Por lo tanto, se le presentan 2 opciones:cifrar todo el archivo o cifrar el valor de la variable.
Para cifrar una variable, utilice encrypt_string opción como se muestra.
$ ansible-vault encrypt_string ‘string’ –name ‘variable_name’
Para cifrar el valor de la variable my_secret en el ejemplo del libro de jugadas, el comando será:
$ ansible-vault encrypt_string '[email protected]' --name 'my_secret'
El resultado anterior indica que la contraseña se ha cifrado con cifrado AES 256 . Desde aquí, copie todo el código cifrado de !vault | . Diríjase al archivo del libro de jugadas y elimine el valor de la contraseña de texto sin formato y pegue el valor cifrado como se muestra.
Guardar y salir del archivo. Ahora ejecute el libro de jugadas y verifique si aún mostrará el valor de la contraseña almacenada en my_secret variables.
El resultado anterior muestra que el libro de jugadas da los resultados deseados, lo que implica que logramos cifrar la variable.
Esto concluye este tutorial sobre Ansible Vault. Ahora puede proteger sus archivos y mantener su información confidencial alejada de miradas indiscretas.