Cómo usar Ansible Vault para proteger datos confidenciales

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 lo adivinarías, 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. Tales 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.

Crear 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-bóveda crear archivo.yml

Por ejemplo, para crear un archivo, llámelo archivo_secreto.ymlejecute el comando

$ ansible-vault create secret_file.yml

ansible-vault-crear-archivo

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

ver-ansible-vault-archivo-cifrado

Edite un archivo cifrado con Ansible Vault

Para realizar cambios en un archivo ya existente que está encriptado, use la sintaxis:

$ archivo de edición de ansible-vault.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.

Edit-ansible-vault-encrypted-file

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á por lo tanto

$ ansible-vault view secret_file.yml

Ansible-vault-view-archivo

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 ejecute el comando:

$ ansible-vault encrypt file1.yml

Especifique la contraseña de la bóveda y confírmela para cifrar el archivo.

Cifrar-archivo-ansible-vault

Descifrar un archivo usando 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.

Decrypt-ansible-vault-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 volver a introducir 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.

restablecer-contraseña-usando-ansile-vault

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 la –pedir-pase-bóveda 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.

Descifrar-archivo-tiempo-de-ejecución-asnible

Sin embargo, eso ha quedado en desuso. Desde Ansible 2.4, el método estándar para solicitar una contraseña es utilizar el –id-bóveda opción como se muestra.

$ ansible-playbook playbook_example.yml --vault-id @prompt

El @inmediato le pedirá la contraseña

ansible-playbook-vault-id-prompt

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 la –archivo-de-contraseña-de-bóveda 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

Archivo de contraseñas de Ansible-Vault

Sin embargo, al igual que el –pedir-pase-bóveda opción, la opción –archivo-de-contraseña-de-bóveda ha quedado en desuso para allanar el camino para la –id-bóveda opción. El comando, por lo tanto, se ve así:

$ ansible-playbook playbook_example.yml --vault-id /etc/ansible/vault_pass.txt

Ansible-playbook-vault-id-ejemplos

Cifrado de una variable en Ansible Playbook

Además de cifrar un libro de jugadas completo, ansible-bóveda 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].

Variable-in-ansible-playbook

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 el cifrar_cadena opción como se muestra.

$ ansible-vault encrypt_string ‘string’ –name ‘variable_name’

Para cifrar el valor de la variable mi secreto en el ejemplo del libro de jugadas, el comando será:

$ ansible-vault encrypt_string '[email protected]' --name 'my_secret'

Cifrar-variable-ansible-comando

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.

Encrypt-Variable-inside-Ansible-Playbook

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 el mi secreto variable.

Ansible-playbook-execute-encrypted-varaibles

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 lejos de miradas indiscretas.

Leer también : Cómo usar la plantilla Jinja2 en Ansible Playbook

Entradas relacionadas

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *