A veces me gustaría usar Ansible lineinfile
o blockinfile
módulos para escribir una contraseña en algún archivo de configuración. Si lo hago, toda la línea o bloque, incluida la contraseña, termina en mi syslog
.
Como no considero syslog
un lugar seguro para almacenar mis contraseñas, ¿cómo puedo decirle a Ansible que no filtre mi contraseña syslog
? Espero que haya una manera de hacer esto, de lo contrario consideraría que este es un gran problema de seguridad en Ansible.
Puede reproducirlo, por ejemplo, con este comando ad-hoc:
ansible localhost -m blockinfile -a 'dest=/tmp/ansible_password_leak create=yes block="Password = {{password}}"' -e 'password=secret'
Esto es lo que termina en syslog
:
ansible-blockinfile: Invoked with directory_mode=None force=None remote_src=None insertafter=None owner=None follow=False marker=# {mark} ANSIBLE MANAGED BLOCK group=None insertbefore=None create=True setype=None content=None serole=None state=present dest=/tmp/ansible_password_leak selevel=None regexp=None validate=None src=None seuser=None delimiter=None mode=None backup=False block=Password = secret
Para el ejemplo utilicé Ansible 2.0.0.2 del Ansible Ubuntu PPA oficial en un sistema Debian "Jessie" 8.
syslog
pero al mismo tiempo deshabilita la salida de registro en la salida de la consola. ¿Hay alguna forma de cambiar eso?password = XXX
.Desarrollé un complemento de devolución de llamada para ocultar las contraseñas para las salidas predeterminadas, analiza el diccionario de salida para la clave que contiene la contraseña , para cada una de ellas, reemplaza el valor por ********.
Cree un archivo llamado
protect_data.py
en la carpeta ./plugins/callback add agregue este código:En el archivo ansible.cfg :
stdout_callback
y establezca un nombre para este complemento (stdout_callback=protect_data
)callback_plugins
y establecer valor./plugins/callback
fuente
ansible-playbook --diff
(cambios de diferencias de archivo)?Uno podría sugerir que usar Vault en su lugar evitaría el problema.
fuente