Ansible Vault存储的密码执行时明文泄露,如何保留日志并脱敏?
问题描述
我使用Ansible创建用户,密码存储在Ansible Vault中,但执行playbook时控制台仍会明文显示密码。
我的Playbook片段
- name: Create users become: true user: name: "{{ item.name }}" groups: "{{ item.groups }}" password: "{{ item.password | password_hash('sha512', 'salt') }}" update_password: on_create state: present append: yes shell: "{{ item.shell }}" with_items: "{{ users }}"
执行时的问题输出
ok: [homeserver] => (item={'name': 'user1', 'groups': ['sambashare'], 'password': 'password', 'shell': '/sbin/nologin'}) ok: [homeserver] => (item={'name': 'user2', 'groups': ['sambashare'], 'password': 'azerty123', 'shell': '/sbin/nologin'})
已尝试的方法
- 使用
no_log: True:会完全屏蔽该任务的所有日志,不符合需求 - 嵌套变量引用如
"{{ '{{vaulted_password}}' | password_hash('sha512') }}":无法生效
需求
保留日志用于调试,但防止明文密码出现在输出中,理想情况下输出显示密码的哈希值而非明文。
解决方案
方法1:提前预计算密码哈希(推荐)
先通过set_fact任务预计算所有用户的密码哈希,将哈希值存入新的变量列表,后续创建用户时直接使用哈希值而非明文密码。这样loop输出的item中password字段就是哈希值,既不会暴露明文,也能保留其他调试信息。
示例Playbook:
- name: Precompute password hashes for users set_fact: users_with_hashed_passwords: "{{ users_with_hashed_passwords | default([]) + [item | combine({'password': item.password | password_hash('sha512', 'salt')})] }}" loop: "{{ users }}" - name: Create users with hashed passwords become: true user: name: "{{ item.name }}" groups: "{{ item.groups }}" password: "{{ item.password }}" update_password: on_create state: present append: yes shell: "{{ item.shell }}" loop: "{{ users_with_hashed_passwords }}"
方法2:精细控制no_log字段(Ansible 2.10+)
Ansible 2.10及以上版本支持针对特定字段配置no_log,只屏蔽敏感字段的输出,保留其他非敏感日志。
示例配置:
- name: Create users become: true user: name: "{{ item.name }}" groups: "{{ item.groups }}" password: "{{ item.password | password_hash('sha512', 'salt') }}" update_password: on_create state: present append: yes shell: "{{ item.shell }}" loop: "{{ users }}" no_log: - item.password
这种方式会过滤掉输出中item.password的明文内容,但需注意部分边缘场景可能仍有遗漏,提前预计算哈希的方法更稳定可靠。
补充说明
你提到这是Ansible用户模块的限制,确实在直接遍历包含明文密码的列表时,Ansible会默认输出完整的item内容。上述两种方法都能解决明文暴露问题,其中预计算哈希的方式还能让输出显示实际使用的哈希值,更贴合你的理想需求。
内容的提问来源于stack exchange,提问作者Mrbibi38
相关产品推荐
相关产品推荐

