Às vezes eu gostaria de usar o Ansible lineinfile
ou os blockinfile
módulos para escrever uma senha em algum arquivo de configuração. Se fizer isso, toda a linha ou bloco, incluindo a senha, terminará no meu syslog
.
Como não considero syslog
um local seguro para armazenar minhas senhas, como posso dizer ao Ansible para não vazar minha senha syslog
? Espero que exista uma maneira de fazer isso, caso contrário, consideraria esse um grande problema de segurança no Ansible.
Você pode reproduzi-lo, por exemplo, com este comando ad-hoc:
ansible localhost -m blockinfile -a 'dest=/tmp/ansible_password_leak create=yes block="Password = {{password}}"' -e 'password=secret'
Aqui está o que acaba em 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
Por exemplo, usei o Ansible 2.0.0.2 do PPA oficial do Ansible Ubuntu em um sistema Debian "Jessie" 8.
syslog
mas desativa a saída de log na saída do console ao mesmo tempo. Existe alguma maneira de mudar isso?password = XXX
.Desenvolvi um plug-in de retorno de chamada para ocultar senhas para saídas padrão; ele analisa o dicionário de saída da chave que contém a senha ; para cada uma delas, substitui o valor por ********.
Crie um arquivo nomeado
protect_data.py
na pasta ./plugins/callback add adicione este código:No arquivo ansible.cfg :
stdout_callback
e defina esse nome de plugin como value (stdout_callback=protect_data
)callback_plugins
e valor definido./plugins/callback
fonte
ansible-playbook --diff
(alterações no diff do arquivo)?Pode-se sugerir que o uso do Vault evitaria o problema.
fonte