如何验证Ansible Galaxy依赖项的哈希值

71次阅读
没有评论

问题描述

在使用Ansible Galaxy时,希望能够验证依赖项的哈希值,以增加安全性。他不喜欢仅依赖于Git标签,因为标签可能会被移动。他想知道是否有一种官方的解决方案来强制进行检查。用户提供了一个使用的示例,但觉得有点过于复杂,想知道是否有更简单的方法。

解决方案

请注意以下操作注意版本差异及修改前做好备份。

方案1

目前(2019年11月),Ansible Galaxy并不直接支持验证依赖项的哈希值。过去有过相关讨论(#14604和#1358),但最新的状态可以在新的问题#2108中跟踪。
在此期间,可以使用问题描述中提到的解决方法,尽管会增加一些冗余。
以下是使用该解决方法的步骤:
1. 在requirements.yaml文件中定义依赖项,包括Git仓库地址和哈希值。
2. 在playbook中使用定义的依赖项。
下面是一个示例requirements.yaml文件:

- src: git+https://github.com/geerlingguy/ansible-role-nodejs.git
  version: 405a113ccbde0c99614f6f815fb4285cb742ad25 # == release 5.0.0
  name: geerlingguy.nodejs.trusted_hash

在上面的示例中,我们定义了一个名为geerlingguy.nodejs.trusted_hash的依赖项,它依赖于https://github.com/geerlingguy/ansible-role-nodejs.git仓库的特定版本(哈希值)。
然后,在playbook中使用定义的依赖项:

- roles:
  - role: geerlingguy.nodejs.trusted_hash
    nodejs_version: "12.x"

请注意,这种方法需要手动更新哈希值,以确保依赖项的完整性。

方案2

目前没有官方的解决方案来验证Ansible Galaxy依赖项的哈希值。但你可以尝试使用其他工具或方法来验证哈希值,如使用签名标签或提交,并使用签名者的公钥进行验证。这可能需要在Ansible Galaxy之外进行操作,但如果存在篡改,它仍然会显示出迹象。
请注意,这种方法可能会增加复杂性,并且需要确保正确设置依赖关系。

总结

目前,Ansible Galaxy并没有直接支持验证依赖项的哈希值的功能。用户可以使用问题描述中提到的解决方法,或尝试使用其他工具或方法来验证哈希值。希望将来Ansible Galaxy能够提供更简单的解决方案来验证依赖项的完整性。

正文完