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 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
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í elsecretkeyes 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.
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 cifradoVer 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 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
Cifrar un archivo existenteCifrar 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 AnsibleCambiar 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 eldecryptcomando que pondrá el archivo en forma no cifrada.

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

También puede ver el contenido del archivo cifrado sin descifrar ejecutando el siguiente comando conviewen vez de “decrypt“.

$ ansible-vault view secretkey2
Ver el contenido de un archivo cifrado sin descifrarloVer el contenido de un archivo cifrado sin descifrarlo

La diferencia entredecryptyviewes 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 eleditcomando para editar el contenido.

$ ansible-vault edit secretkey2
Modificar el contenido en el archivo cifradoModificar 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 yconnect_pwdalmacenará 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 jugadasUse Ansible Vault en un libro de jugadas

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

Si intenta ejecutar el libro de jugadas sin--ask-vault-passwordoh--ask-vault-passbandera, 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-fileoh--vault-pass-fileargumento.

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.secretkeyy 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.cfgexpediente. 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.

Artículos Relacionados