我希望自动解密ansible保险库,而不必从命令行指定保管库位置或密码。
主要是,我正在寻找一种解决方案,其工作方式与~/.netrc
的工作方式类似。当您在其中放置凭据时,工具(如curl,wget,...)将知道加载它们。
如果你没有执行,那么
这非常重要,因为我需要能够自动执行这些安全的剧本,所以提示密码显然不是一种选择。
另外,我不想在每个剧本中添加--vault-password-file
参数。有什么想法吗?
答案 0 :(得分:6)
与广告资源很相似,如果vault-password-file
设置了可执行位,Ansible will run it and use stdout as the password。
这允许您编写一个脚本,该脚本在PGP加密中包装密码,位于有限访问的S3存储桶中,使用AWS KMS或任何您喜欢的内容。
答案 1 :(得分:4)
您可以在ansible.cfg
中定义vault_password_file
。
但我没有看到太多的价值。查看.netrc联机帮助页,我看到凭据位于.netrc文件中,也是以纯文本编写的。此外,它暗示:
此文件位于启动文件传输的计算机上的用户主目录中。应将其权限设置为禁止组和其他人进行读取访问。
对于.netrc而言,它是有道理的,因为目标是提供对其他系统的访问。但您的目标是提供对文件的访问权。
虽然加密文件没有多大意义,然后只需将用于解密的密钥放在同一主机上的另一个文件中,该主机仅受chmod
保护。您可以首先使用chmod
在Ansible中保护您的秘密。这具有相同的安全级别并避免一些开销。
答案 2 :(得分:0)
有几种方法:
根据建议,将密码文件存储在锁中(例如Azure容器或使用ssh密钥可访问的任何其他位置)。在运行时获取它并使用--vault-password-file参数。您可以在此之后立即删除该文件。
如果您使用的是Jenkins等自动化服务器,则可以将密码存储为Jenkins Credential。快速检索密码并将其放入文本文件中。同样,使用--vault-password-file参数。我在这里写了一篇小帖子Stroing Vault key in jenkins