Ansible Vault - 加密是如何工作的?

信息安全 加密 openssl
2021-08-25 23:35:13

我在看Ansible Vault,它用于 Ansible playbook 中的加密。除了提到默认密码是 AES 之外,Ansible 文档似乎对它的工作原理的细节很薄弱。我不能自信地从源代码中自己弄清楚。

我可以看到使用ansible-vault加密测试文件的结果:

$ANSIBLE_VAULT;1.1;
AES256   
DIGITS   
DIGITS   
etc.  

我发现这篇文章解释了如何使用修补版本的 openssl 解密 Ansible-Vault 加密的文件。谁能解释是否可以使用未与 Ansible 打包的 vanilla 工具解密 Ansible Vault 文件?(当然,假设您知道密码)。

1个回答

Ansible 是开源的,用 Python 编写,并使用 PyCrypto,一个标准的 Python 密码库,没有与 Ansible 打包。

https://www.dlitz.net/software/pycrypto/

处理加密和解密的模块是VaultLib,这里:

https://github.com/ansible/ansible/blob/adea1f2b80d806d94ca1bdb2d06f2df077feb948/lib/ansible/parsing/vault/init .py _

该模块看起来对其他 Ansible 模块的依赖很少——一些 python 3 兼容性的东西,一些 unicode 的东西,一个名为 Display 的模块。

要制作一个与 Ansible 兼容的可能性很高的“独立”工具,最好的方法是使用该代码,删除 python 3 的东西,删除 Display 模块,然后复制粘贴到 unicode 函数中。

只要安装了 PyCrypto 和其他 python 依赖项,该模块中的加密和解密功能就应该可以正常工作。