Иногда я хотел бы использовать Ansible lineinfile
или blockinfile
модули для записи пароля в какой-либо файл конфигурации. Если я это сделаю, вся строка или блок, включая пароль, останутся в моем syslog
.
Поскольку я не считаю syslog
безопасным место для хранения своих паролей, как я могу сказать Ansible, чтобы они не пропускали мой пароль syslog
? Я надеюсь, что есть способ сделать это, иначе я бы счел это большой проблемой безопасности в Ansible.
Вы можете воспроизвести это, например, с помощью этой специальной команды:
ansible localhost -m blockinfile -a 'dest=/tmp/ansible_password_leak create=yes block="Password = {{password}}"' -e 'password=secret'
Вот что заканчивается 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
В качестве примера я использовал Ansible 2.0.0.2 из официального PPA Ansible Ubuntu в системе Debian "Jessie" 8.
syslog
но в то же время отключает вывод журналов в вывод консоли. Есть ли способ изменить это?password = XXX
.Я разработал плагин обратного вызова, чтобы скрыть пароли для выводов по умолчанию, он анализирует словарь вывода для ключа, который содержит пароль , для каждого из них он заменяет значение на ********.
Создайте файл с именем
protect_data.py
в папке ./plugins/callback добавить добавить этот код:В файле ansible.cfg :
stdout_callback
и установите для этого имени плагина значение (stdout_callback=protect_data
)callback_plugins
и установите значение./plugins/callback
источник
ansible-playbook --diff
(изменения в файлах)?Можно предположить, что использование Vault вместо этого устранит проблему.
источник