Asegure sus secretos con Ansible Vault



Este blog de la bóveda de Ansible explica cómo los datos confidenciales (contraseñas / clave secreta / archivos de certificado) se almacenan en archivos cifrados y se incrustan en Ansible Playbooks.

A mayor uso de tecnología, mayor posible amenaza a la seguridad. Una configuración típica de Ansible requiere que introduzcas 'Secretos'. Estos secretos pueden ser literalmente cualquier cosa, contraseñas, tokens API, claves públicas o privadas SSH, certificados SSL, etc. ¿Cómo mantenemos estos secretos a salvo? Ansible proporciona una función llamada Ansible Vault.

En este blog, demostraré cómo usar Ansible Vault y exploraré algunas de las mejores prácticas para mantener la seguridad de los datos.





Temas cubiertos en este blog:

Si desea dominar DevOps, ' curso sería su opción preferida.



¿Qué es Ansible Vault?

Tener la infraestructura como código puede representar la amenaza de exponer sus datos confidenciales al mundo, lo que genera problemas de seguridad no deseados. Ansible Vault es una función que le permite mantener todos sus secretos a salvo. Puede cifrar archivos completos, libros de jugadas YAML completos o incluso algunas variables. Proporciona una instalación en la que no solo puede cifrar datos confidenciales, sino también integrarlos en sus libros de jugadas.

Vault se implementa con granularidad a nivel de archivo donde los archivos están completamente encriptados o completamente sin encriptar. Utiliza la misma contraseña para cifrar y descifrar archivos, lo que hace que el uso de Ansible Vault sea muy fácil de usar.

¿Por qué utilizar Ansible Vault?

Dado que Ansible se utiliza para la automatización, existe una alta posibilidad de que los libros de jugadas contengan ciertas credenciales, certificados SSL u otros datos confidenciales. Guardar datos tan sensibles como texto sin formato es una mala idea. Un compromiso incorrecto con GitHub o el robo de una computadora portátil puede causar una gran pérdida a una organización. Aquí es donde entra en juego la bóveda de Ansible. Es una excelente manera de tener infraestructura como código, sin comprometer la seguridad.



Supongamos que tenemos un manual de estrategias que aprovisiona su instancia EC2 en AWS. Debe proporcionar su ID de clave de acceso de AWS y su clave secreta de AWS en la guía. No comparte estas claves con otros por razones obvias. ¿Cómo los mantiene sin exponer? Hay dos formas: cifrar estas dos variables e incrustarlas en el libro de jugadas o cifrar todo el libro de jugadas.

Este fue solo uno de los escenarios en los que se puede usar la bóveda ansible. Podemos cifrar archivos completos o simplemente cifrar algunas variables que pueden contener datos confidenciales y luego Ansible los descifra automáticamente durante el tiempo de ejecución. Ahora podemos enviar estos valores de forma segura a GitHub.

Creación de archivo cifrado

Para crear un archivo cifrado, use el crear bóveda ansible comando y pasar el nombre del archivo.

mensaje emergente de script java
$ ansible-vault crear nombre de archivo.yaml

Se le pedirá que cree una contraseña y luego la confirme volviéndola a escribir.

crear bóveda ansible - Ansible Vault - Edureka

Una vez que se confirme su contraseña, se creará un nuevo archivo y se abrirá una ventana de edición. De forma predeterminada, el editor de Ansible Vault es vi. Puede agregar datos, guardar y salir.

Y tu archivo está encriptado.

Edición de archivos cifrados

Si desea editar un archivo cifrado, puede editarlo usando ansible-vault editar mando.

$ ansible-vault editar secretos.txt

Donde secrets.txt es un archivo cifrado ya creado.

Se le pedirá que inserte la contraseña de la bóveda. El archivo (versión descifrada) se abrirá en un editor vi y luego podrá realizar los cambios necesarios.

Si verifica la salida, verá que su texto se cifrará automáticamente cuando guarde y cierre.

Ver archivo cifrado

Si solo desea ver un archivo cifrado, puede utilizar el vista de la bóveda ansible mando.

$ ansible-vault ver nombre de archivo.yml

De nuevo, se le pedirá una contraseña.

y verá un resultado similar.

Volver a introducir la contraseña de Vault

Por supuesto, hay ocasiones en las que querrás cambiar la contraseña de la bóveda. Puedes usar el restablecimiento de clave de ansible-vault mando.

$ ansible-vault re-clave secrets.txt

Se le pedirá la contraseña actual de la bóveda y luego la nueva contraseña y, finalmente, confirmará la nueva contraseña.

Cifrar archivos no cifrados

Suponga que tiene un archivo que desea cifrar, puede usar el cifrado ansible-vault mando.

$ ansible-vault encriptar nombre de archivo.txt

Se le pedirá que inserte y confirme la contraseña y su archivo estará encriptado.

Ahora que observa el contenido del archivo, todo está cifrado.

Descifrar archivos cifrados

Si desea descifrar un archivo cifrado, puede utilizar descifrar ansible-vault mando.

$ ansible-vault descifrar filename.txt

Como de costumbre, le pedirá que inserte y confirme la contraseña de la bóveda.

Cifrar variables específicas

La mejor práctica al utilizar Ansible Vault es cifrar solo los datos confidenciales. En el ejemplo explicado anteriormente, el equipo de desarrollo no desea compartir su contraseña con el equipo de producción y de preparación, pero es posible que necesite acceder a ciertos datos para llevar a cabo su propia tarea. En tales casos, solo debe cifrar los datos que no desea compartir con otros, dejando el resto como está.

Ansible Vault le permite cifrar solo variables específicas. Puedes usar el ansible-vault encrypt_string comando para esto.

$ ansible-vault encrypt_string

Se le pedirá que inserte y luego confirme la contraseña de la bóveda. A continuación, puede comenzar a insertar el valor de cadena que desea cifrar. Presione ctrl-d para finalizar la entrada. Ahora puede asignar este cifradovalora una cadena en el libro de jugadas.

También puedes lograr lo mismo en una sola línea.

$ ansible-vault encrypt_string 'cadena' --nombre 'nombre_variable'

Descifrar archivos cifrados durante el tiempo de ejecución

Si desea descifrar un archivo durante el tiempo de ejecución, puede usar –Ask-vault-pass bandera.

$ ansible-playbook launch.yml --ask-vault-pass

Esto descifrará todos los archivos cifrados que se utilizan para que se ejecute este libro de jugadas launch.yml. Además, esto solo es posible si todos los archivos están cifrados con la misma contraseña.

Las solicitudes de contraseña pueden resultar molestas. El propósito de la automatización se vuelve inútil. ¿Cómo mejoramos esto? Ansible tiene una función llamada 'archivo de contraseña' que hace referencia a un archivo que contiene la contraseña. Luego, puede pasar este archivo de contraseña durante el tiempo de ejecución para automatizarlo.

$ ansible-playbook launch.yml --vault-password-file ~ / .vault_pass.txt

También es posible tener una secuencia de comandos separada que especifique las contraseñas. Debe asegurarse de que el archivo de secuencia de comandos sea ejecutable y que la contraseña se imprima en la salida estándar para que funcione sin errores molestos.

$ ansible-playbook launch.yml --vault-password-file ~ / .vault_pass.py

Usando Vault Id

Vault Id es una forma de proporcionar un identificador a una contraseña de bóveda en particular. Vault ID ayuda a cifrar diferentes archivos con diferentes contraseñas para ser referenciados dentro de un libro de jugadas. Esta característica de Ansible salió con el lanzamiento de Ansible 2.4. Antes de esta versión, solo se podía usar una contraseña de bóveda en cada ejecución del libro de jugadas ansible.

Entonces, ahora, si desea ejecutar un libro de jugadas de Ansible que usa múltiples archivos encriptados con diferentes contraseñas, puede usar Vault Id.

$ ansible-playbook --vault-id vault-pass1 --vault-id vault-pass2 filename.yml

Con esto, llegamos al final de este blog de Ansible Vault. Es increíble ponerse al día con la tecnología y aprovecharla al máximo, pero sin comprometer la seguridad. Esta es una de las mejores formas de tener Infraestructura como código (IaC).

Si encuentra útil este artículo, consulte el ' ofrecido por Edureka. Cubre todas las herramientas que han hecho que la industria de TI sea más inteligente.

Tienes una pregunta para nosotros? Por favor publícalo en y nos pondremos en contacto contigo.