1.3. 在私有自动化中心中的集合和内容签名


作为机构的自动化管理员,您可以配置私有自动化中心,以根据机构中的不同组签名和发布 Ansible 内容集合。

为提高安全性,自动化创建者可以配置 Ansible-Galaxy CLI 以验证这些集合,确保在上传到自动化中心后不会更改它们。

1.3.1. 在私有自动化 hub 中配置内容签名

要成功签名并发布 Ansible 认证的内容集合,您必须配置私有自动化中心进行签名。

前提条件

  • 您的 TIPC 密钥对已安全设置并管理您的机构。
  • 您的公钥-私钥对有权在私有自动化中心上配置内容签名。

流程

  1. 创建只接受文件名的签名脚本。

    注意

    此脚本充当签名服务,必须使用通过 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。

  2. 查看 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_collectionsautomationhub_require_content_approval)表示必须签名集合,并在上传到私有自动化中心后需要批准。

1.3.2. 在私有自动化中心中使用内容签名服务

在私有自动化中心上配置内容签名后,您可以手动为新集合签名,或使用新签名替换现有签名。当用户下载特定集合时,此签名表示它们的集合是它们,在认证后没有被修改。

在以下情况下,您可以在私有自动化中心上使用内容签名:

  • 您的系统没有配置自动签名,您必须使用手动签名过程来签署集合。
  • 自动配置的集合中的当前签名已损坏,需要新的签名。
  • 对于之前签名的内容,您需要额外的签名。
  • 您希望在集合中轮转签名。

流程

  1. 登录到 Ansible Automation Platform。
  2. 在导航面板中,选择 Automation Content Collection Approvals。Approval dashboard 将打开并显示一个集合列表。
  3. 点击您要批准的集合旁边的缩略图标。在出现的模态中,选中确认您要批准集合的框,然后点 Approve and sign collections

验证

  • 导航到 Automation Content Collections,以验证您签名并批准的集合是否已显示。

1.3.3. 下载签名公钥

签名和批准集合后,从 Ansible Automation Platform UI 下载签名公钥。您必须下载公钥,然后才能将其添加到本地系统密钥环中。

流程

  1. 登录到 Ansible Automation Platform。
  2. 在导航面板中,选择 Automation Content Signature Keys。签名密钥仪表板显示多个键的列表:集合和容器镜像。

    • 要验证集合,请下载前缀为 collections- 的密钥。
    • 要验证容器镜像,请下载前缀为 container- 的密钥。
  3. 选择以下方法之一下载您的公钥:

    • 单击 Download Key 图标以下载公钥。
    • 点您要复制的公钥旁边的 Copy to clipboard

使用您复制的公钥来验证您要安装的内容集合。

1.3.4. 配置 Ansible-Galaxy CLI 以验证集合

您可以配置 Ansible-Galaxy CLI 来验证集合。这样可确保下载的集合由您的机构批准,且在上传到自动化中心后没有改变。

如果某个集合由自动化中心签名,服务器会提供 ASCII armored,GPG-detached 签名在使用它验证集合的内容前验证 MANIFEST.json 的真实性。您必须通过为 ansible-galaxy 配置密钥环或使用 --keyring 选项提供路径来选择签名验证。

前提条件

  • 签名的集合在自动化中心中可用于验证签名。
  • 认证的集合可以由机构中的批准角色签名。
  • 验证的公钥已添加到本地系统密钥环中。

流程

  1. 要将公钥导入到用于 ansible-galaxy 的非默认密钥环中,请运行以下命令:

    gpg --import --no-default-keyring --keyring ~/.ansible/pubring.kbx my-public-key.asc
    注意

    除了自动化中心提供的任何签名外,也可以在要求文件和命令行中提供签名源。签名源应当是 URI。

  2. 要使用额外签名验证 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

    您可以多次使用这个选项提供多个签名。

  3. 确认要求文件中的集合在集合的签名密钥后列出任何其他签名源,如下例所示。

    # 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

    当您从自动化中心安装集合时,服务器提供的签名会与安装的集合一起保存,以验证集合的真实性。

  4. (可选)如果您需要在不查询 Ansible Galaxy 服务器的情况下再次验证集合的内部一致性,请使用 --off 命令行选项运行之前使用的相同命令

有集合命名建议吗?

创建具有 company_name.product 格式的集合。这种格式意味着多个产品可以在 company 命名空间下具有不同的集合。

如何在自动化中心上获取命名空间?

默认情况下,Ansible 合作伙伴团队还在自动化中心上使用在 Ansible Galaxy 上使用的命名空间。有关任何查询和澄清,请联系 ansiblepartners@redhat.com

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.