1.3. 在私有自动化中心中的集合和内容签名
作为机构的自动化管理员,您可以配置私有自动化中心,以根据机构中的不同组签名和发布 Ansible 内容集合。
为提高安全性,自动化创建者可以配置 Ansible-Galaxy CLI 以验证这些集合,确保在上传到自动化中心后不会更改它们。
1.3.1. 在私有自动化 hub 中配置内容签名
要成功签名并发布 Ansible 认证的内容集合,您必须配置私有自动化中心进行签名。
前提条件
- 您的 TIPC 密钥对已安全设置并管理您的机构。
- 您的公钥-私钥对有权在私有自动化中心上配置内容签名。
流程
创建只接受文件名的签名脚本。
注意此脚本充当签名服务,必须使用通过
PULP_SIGNING_KEY_FINGERPRINT
环境变量指定的密钥为该文件生成 ascii-armored 分离gpg
签名。该脚本打印一个 JSON 结构,其格式如下:
{"file": "filename", "signature": "filename.asc"}
所有文件名都是当前工作目录中的相对路径。对于分离的签名,文件名必须保持相同。
Example:
以下脚本为内容生成签名:
#!/usr/bin/env bash FILE_PATH=$1 SIGNATURE_PATH="$1.asc" ADMIN_ID="$PULP_SIGNING_KEY_FINGERPRINT" PASSWORD="password" # Create a detached signature gpg --quiet --batch --pinentry-mode loopback --yes --passphrase \ $PASSWORD --homedir ~/.gnupg/ --detach-sign --default-key $ADMIN_ID \ --armor --output $SIGNATURE_PATH $FILE_PATH # Check the exit status STATUS=$? if [ $STATUS -eq 0 ]; then echo {\"file\": \"$FILE_PATH\", \"signature\": \"$SIGNATURE_PATH\"} else exit $STATUS fi
部署私有自动化中心后,为 Ansible Automation Platform 集群启用了签名后,会在集合中会显示新的 UI。
查看 Ansible Automation Platform 安装程序清单文件中的以
automationhub_*
开头的选项。[all:vars] . . . automationhub_create_default_collection_signing_service = True automationhub_auto_sign_collections = True automationhub_require_content_approval = True automationhub_collection_signing_service_key = /abs/path/to/galaxy_signing_service.gpg automationhub_collection_signing_service_script = /abs/path/to/collection_signing.sh
两个新密钥(automationhub_auto_sign_collections 和 automationhub_require_content_approval)表示必须签名集合,并在上传到私有自动化中心后需要批准。
1.3.2. 在私有自动化中心中使用内容签名服务
在私有自动化中心上配置内容签名后,您可以手动为新集合签名,或使用新签名替换现有签名。当用户下载特定集合时,此签名表示它们的集合是它们,在认证后没有被修改。
在以下情况下,您可以在私有自动化中心上使用内容签名:
- 您的系统没有配置自动签名,您必须使用手动签名过程来签署集合。
- 自动配置的集合中的当前签名已损坏,需要新的签名。
- 对于之前签名的内容,您需要额外的签名。
- 您希望在集合中轮转签名。
流程
- 登录到 Ansible Automation Platform。
-
在导航面板中,选择
。Approval dashboard 将打开并显示一个集合列表。 - 点击您要批准的集合旁边的缩略图标。在出现的模态中,选中确认您要批准集合的框,然后点 。
验证
-
导航到
,以验证您签名并批准的集合是否已显示。
1.3.3. 下载签名公钥
签名和批准集合后,从 Ansible Automation Platform UI 下载签名公钥。您必须下载公钥,然后才能将其添加到本地系统密钥环中。
流程
- 登录到 Ansible Automation Platform。
在导航面板中,选择
。签名密钥仪表板显示多个键的列表:集合和容器镜像。 -
要验证集合,请下载前缀为
collections-
的密钥。 -
要验证容器镜像,请下载前缀为
container-
的密钥。
-
要验证集合,请下载前缀为
选择以下方法之一下载您的公钥:
- 单击 图标以下载公钥。
- 点您要复制的公钥旁边的 。
使用您复制的公钥来验证您要安装的内容集合。
1.3.4. 配置 Ansible-Galaxy CLI 以验证集合
您可以配置 Ansible-Galaxy CLI 来验证集合。这样可确保下载的集合由您的机构批准,且在上传到自动化中心后没有改变。
如果某个集合由自动化中心签名,服务器会提供 ASCII armored,GPG-detached 签名在使用它验证集合的内容前验证 MANIFEST.json
的真实性。您必须通过为 ansible-galaxy
配置密钥环或使用 --keyring
选项提供路径来选择签名验证。
前提条件
- 签名的集合在自动化中心中可用于验证签名。
- 认证的集合可以由机构中的批准角色签名。
- 验证的公钥已添加到本地系统密钥环中。
流程
要将公钥导入到用于
ansible-galaxy
的非默认密钥环中,请运行以下命令:gpg --import --no-default-keyring --keyring ~/.ansible/pubring.kbx my-public-key.asc
注意除了自动化中心提供的任何签名外,也可以在要求文件和命令行中提供签名源。签名源应当是 URI。
要使用额外签名验证 CLI 上提供的集合名称,请运行以下命令:
ansible-galaxy collection install namespace.collection --signature https://examplehost.com/detached_signature.asc --signature file:///path/to/local/detached_signature.asc --keyring ~/.ansible/pubring.kbx
您可以多次使用这个选项提供多个签名。
确认要求文件中的集合在集合的签名密钥后列出任何其他签名源,如下例所示。
# requirements.yml collections: - name: ns.coll version: 1.0.0 signatures: - https://examplehost.com/detached_signature.asc - file:///path/to/local/detached_signature.asc ansible-galaxy collection verify -r requirements.yml --keyring ~/.ansible/pubring.kbx
当您从自动化中心安装集合时,服务器提供的签名会与安装的集合一起保存,以验证集合的真实性。
-
(可选)如果您需要在不查询 Ansible Galaxy 服务器的情况下再次验证集合的内部一致性,请使用
--off 命令行选项运行之前使用的相同命令
。
有集合命名建议吗?
创建具有 company_name.product
格式的集合。这种格式意味着多个产品可以在 company 命名空间下具有不同的集合。
如何在自动化中心上获取命名空间?
默认情况下,Ansible 合作伙伴团队还在自动化中心上使用在 Ansible Galaxy 上使用的命名空间。有关任何查询和澄清,请联系 ansiblepartners@redhat.com。