第 12 章 项目签名和验证
项目签名和验证可让您在项目目录中签署文件,然后验证内容是否以任何方式更改,或者文件被意外地从项目中添加或删除。要做到这一点,您需要私钥来签名和匹配的公钥进行验证。
对于项目维护人员,支持签署内容的方式是使用 ansible-sign
实用程序,其 使用提供的命令行界面 (CLI)。
CLI 旨在方便地使用加密技术,如 GNU Privacy Guard (GPG)等技术来验证项目中的文件是否未被篡改。目前,GPG 是唯一支持的签名和验证方法。
自动化控制器用于验证签名的内容。在与签名项目关联了匹配的公钥后,自动化控制器会验证包含的文件在签名过程中没有改变,并且文件已被意外添加或删除。如果签名无效或者文件已更改,则项目无法更新,并且使用项目的作业不会启动。项目的验证状态可确保只有安全、未被调整的内容才能在作业中运行。
如果已经为签名和验证配置了存储库,更改项目的常见工作流如下:
- 您已设置了项目存储库,并希望更改文件。
您可以进行更改,并运行以下命令:
ansible-sign project gpg-sign /path/to/project
此命令更新校验和清单并进行签名。
- 您可以将更改、更新的校验和清单以及签名提交到存储库。
当您同步项目时,自动化控制器会拉取新的更改,检查与自动化控制器中的项目关联的公钥是否与校验和清单签名的私钥匹配(这可以防止对校验和清单本身的篡改),然后重新计算清单中每个文件的校验和,以确保校验和匹配(从而没有更改文件)。它还确保考虑了所有文件:
文件必须包含在 MANIFEST.in 文件中,或排除在 MANIFEST.in
文件中。有关此文件的更多信息,请参阅 签名项目 if 文件被意外添加或删除,验证会失败。
12.1. 先决条件
RHEL 节点必须正确订阅:
- 必须启用带有 baseos 和 appstream 软件仓库的 RHEL 订阅。
您的 Red Hat Ansible Automation Platform 订阅和正确的频道必须启用:
ansible-automation-platform-2.4-for-rhel-8-x86_64-rpms for RHEL 8 ansible-automation-platform-2.4-for-rhel-9-x86_64-rpms for RHEL 9
签名内容需要一个有效的 GPG 公共或私有密钥对。有关更多信息,请参阅 如何创建 GPG 密钥对。
有关 GPG 密钥的更多信息,请参阅 GnuPG 文档。
使用以下命令,验证您是否在默认的 GnuPG 密钥环中具有有效的 GPG 密钥对:
gpg --list-secret-keys
如果此命令没有生成输出,或者输出的一行内容,则
trustdb 已创建
,那么您在默认密钥环中没有 secret 密钥。在这种情况下,请参阅 如何创建 GPG 密钥对 以了解如何创建新密钥对,然后再继续。如果生成任何其他输出,则代表您有有效的 secret 密钥,并可使用ansible-sign
。