Cómo usar Ansible Vault para proteger los datos confidenciales del libro de estrategias

En este artículo, vamos a aprender ¿Qué es Ansible Vault? y como utilice Ansible Vault para proteger los datos confidenciales del cuaderno de estrategias cifrando los datos en Linux.

¿Qué es Ansible Vault?

Bóveda de Ansible es una función de ansible que le permite mantener datos confidenciales como contraseñas o claves en archivos cifrados en 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 usando Ansible es 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 este Tutorial de bóveda de Ansible aprenderemos a usar ansible Vault para cifrar un archivo o una cadena con el fin de asegura tus secretos de forma segura y cómo use la bóveda de Ansible en los libros de jugadas para proteger los datos confidenciales con 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
                    
Sección de ayuda de Ansible

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 archivo otra vez.
Cifre un nuevo archivo con Ansible Vault

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.

Ver archivo cifrado Ver archivo cifrado

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 AES256 se 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
                    
Cifrar un archivo existente Cifrar un archivo existente

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

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 el decrypt comando que pondrá el archivo en forma no cifrada.

                      $ ansible-vault decrypt secretkey2
                    
Descifrar el archivo cifrado Descifrar el archivo cifrado

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
                    
Ver el contenido de un archivo cifrado sin descifrarlo Ver el contenido de un archivo cifrado sin descifrarlo

La diferencia entre decrypt y view 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
                    
Modificar el contenido en el archivo cifrado Modificar el contenido en el archivo cifrado

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 }}"
                    
Use Ansible Vault en un libro de jugadas Use Ansible Vault en un libro de jugadas

Al ejecutar el libro de jugadas, debe usar cualquiera --ask-vault-password o --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
                    
Ejecute un libro de estrategias con Ansible Vault Ejecute un libro de estrategias con Ansible Vault

Si intenta ejecutar el libro de jugadas sin --ask-vault-password o --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 o --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 adecuado para 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 para 600 . 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 el ansible.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 por Jagrit Parajulí de pixabay .

Related Posts