我得到了一个 Ansible 剧本,旨在用密码保护 zip 文件。剧本(部分)如下所示:
- name: Create and encrypt zipfile
vars:
zipPW: !vault |
$ANSIBLE_VAULT;1.1;AES256
64656637643264313764633665363234393239346230643936393864313337313030613461326639
3538303634303365373637633761306133333266393331630a336436383534323264376537653564
32393162353730373335303733663463333764616438643762653330616431353162326238663564
3163306336313931660a313530343935643366663433346231386638353932313936366538643664
shell: "zip -jr /tmp/pit/{{hostvars[inventory_hostname]['gzipoutfile']['stdout']}}.zip /tmp/pit/{{hostvars[inventory_hostname]['gzipoutfile']['stdout']}} -P {{zipPW}}"
register: zipped
- debug:
msg: "{{zipped}}
因此,他们尝试将保险库密码传递给 -P 选项的 zip 命令。
这似乎不起作用。运行剧本时,我得到:
"Attempting to decrypt but no vault secrets found"}
据我了解,Ansible vault 意味着我需要提供密码才能使用 vault 密码,但我可能错了。如果你想要自动化操作,提供密码似乎毫无用处。如果我将密码放在文件中,那么我就像不使用密码加密 zip 文件时一样容易受到攻击。
尝试使用保险库密码的这种方式可行吗?
答案1
Ansible 具有各种方式提供保险库密码。
- 文件 - 可以通过文件系统权限保护
- 脚本 - 可以访问其他保险库,解码/解密存储在其他地方的保险库密码
但所有问题都归结为同一个问题,有时您需要提供一些东西来解密密码,这给自动化流程带来了困难。您可以自行决定将纯文本机密存储在哪里以解密保险库密码。