aef*_*aef 14 security password syslog ansible
有时我想使用 Ansiblelineinfile或blockinfile模块将密码写入一些配置文件。如果我这样做,整个行或块,包括密码,最终在我的syslog.
由于我不认为syslog将密码存储在一个安全的地方,我如何告诉 Ansible 不要将我的密码泄露到syslog?我希望有办法做到这一点,否则我会认为这是 Ansible 中的一个大安全问题。
例如,您可以使用此临时命令重现它:
ansible localhost -m blockinfile -a 'dest=/tmp/ansible_password_leak create=yes block="Password = {{password}}"' -e 'password=secret'
Run Code Online (Sandbox Code Playgroud)
以下是最终结果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
Run Code Online (Sandbox Code Playgroud)
例如,我在 Debian“Jessie”8 系统上使用了来自官方 Ansible Ubuntu PPA 的Ansible 2.0.0.2 。
该no_log 属性隐藏系统日志中的数据。它可以应用于单个任务
- name: secret task
shell: /usr/bin/do_something --value={{ secret_value }}
no_log: True
Run Code Online (Sandbox Code Playgroud)
或剧本:
- hosts: all
no_log: True
Run Code Online (Sandbox Code Playgroud)
激活时无法真正进行调试,因此建议仅将其用于单个任务。此功能从Ansible 1.5 版开始可用。正如 1.5 版本的发布公告中所述:
任务现在还可以采用“no_log=True”选项来防止敏感任务访问系统日志。(看起来像密码的参数已经被过滤了)
大多数情况下应该过滤密码。