12.2. 关于配置 sigstore 支持


您可以使用 ClusterImagePolicyImagePolicy 自定义资源(CR)对象为整个集群或特定命名空间启用和配置 sigstore 支持。这些对象包含一个策略,它使用 sigstore 工具指定要验证的镜像和存储库,以及如何验证签名。

  • 集群镜像策略。集群镜像策略对象使集群管理员能够为整个集群配置 sigstore 签名验证策略。启用后,Machine Config Operator (MCO)会监控 ClusterImagePolicy 对象,并更新集群中所有节点上的 /etc/containers/policy.json/etc/containers/registries.d/sigstore-registries.yaml 文件。

    重要

    默认 openshift 集群镜像策略为所需的 OpenShift Container Platform 镜像提供 sigstore 支持。您不能删除或修改此集群镜像策略对象。

  • 镜像策略。镜像策略可让集群管理员或应用程序开发人员为特定命名空间配置 sigstore 签名验证策略。MCO 监控不同命名空间中的 ImagePolicy 实例,并在集群中的所有节点上创建或更新 /etc/crio/policies/<namespace>.json/etc/containers/registries.d/sigstore-registries.yaml 文件。

    如果镜像策略中的镜像或存储库嵌套在集群镜像策略中的一个镜像或存储库下,则仅应用来自集群镜像策略的策略。例如,如果镜像策略指定了 example.com/global/image,并且集群镜像策略指定了 example.com/global,命名空间会使用集群镜像策略中的策略。镜像创建镜像策略对象,并显示类似以下消息的错误:

    带有冲突镜像身份的镜像策略示例

    API Version:  config.openshift.io/v1alpha1
    Kind:         ImagePolicy
    Name:         p0
    Namespace:    mynamespace
    # ...
    Status:
      Conditions:
        Message: has conflicting scope(s) ["example.com/global/image"] that equal to or nest inside existing clusterimagepolicy, only policy from clusterimagepolicy scope(s) will be applied
        Reason: ConflictScopes
    # ...
    Copy to Clipboard Toggle word wrap

12.2.1. 关于集群和镜像策略参数

以下参数适用于集群和镜像策略。有关使用这些参数的详情,请参考"创建集群镜像策略 CR"和"创建镜像策略 CR"。

scopes

定义分配给策略的存储库和镜像列表。您必须至少列出以下范围之一:

  • 使用标签或摘要等单个镜像,如 example.com/namespace/image:latest
  • 存储库,通过省略标签或摘要,如 example.com
  • 仓库命名空间,如 example.com/namespace/
  • registry 主机,只指定主机名和端口号,或者使用一个通配符 *. 开始,如 *.example.com

如果多个范围与同一集群或镜像策略中的单个范围匹配,则仅应用最具体范围的策略。

如果镜像策略中有范围的镜像或存储库嵌套在集群镜像策略中的范围镜像或存储库下,则仅应用来自集群镜像策略的策略。但是,镜像策略对象会被创建。例如,如果镜像策略指定了 example.com/global/image,并且集群镜像策略指定了 example.com/global,命名空间会集成集群镜像策略中的策略。

policy

包含配置,以允许来自要验证 scopes 中列出的源的镜像,并定义如何处理不与验证策略匹配的镜像。您必须配置 rootOfTrust,并选择性地配置 signedIdentity

  • rootOfTrust :指定策略的信任根。配置一个公钥或一个 Fulcio 证书

    • publicKey :指示策略依赖于 sigstore 公钥。您必须指定一个 base64 编码的 PEM 格式公钥。您可以选择包含 Rekor 验证
    • FulcioCAWithRekor: 表示策略基于 Fulcio 证书。您必须指定以下参数:

      • base64 编码的 PEM-format Fulcio CA
      • OpenID Connect (OIDC) 签发者
      • Fulcio 身份验证配置的电子邮件
      • Rekor 验证
  • signedIdentity :指定验证签名中的镜像以及实际镜像本身的方法。要配置签名的身份,您必须将以下参数之一指定为 match 策略:

    • MatchRepoDigestOrExact.签名中引用的镜像必须与镜像本身位于同一个存储库中。如果镜像传输标签,签名中引用的镜像必须完全匹配。这是默认值。
    • MatchRepository.签名中引用的镜像必须与镜像本身位于同一个存储库中。如果镜像传输标签,则签名中引用的镜像不需要完全匹配。如果镜像使用指定准确镜像版本的标签签名,则拉取镜像包含 latest 标签。
    • ExactRepository.签名中引用的镜像必须位于由 exactRepository 参数指定的同一存储库中。必须指定 exactRepository 参数。
    • RemapIdentity。如果有范围的存储库或镜像与指定的 prefix 匹配,则该前缀将被指定的 signedPrefix 替换。如果镜像身份不匹配,prefix 保持不变,且不会重新映射。在验证其他存储库命名空间的签名时,可以使用此选项来保留供应商的存储库结构。

      prefixsignedPrefix 可以是完全匹配 host[:port] 字符串的 host[:port] 值,仓库命名空间或仓库。prefixsignedPrefix 不得包含标签或摘要。例如,要指定一个仓库,请使用 example.com/library/busybox 而不是 busybox。要指定 example.com/library/busybox 的父命名空间,您可以使用 example.com/library

      您必须指定以下参数:

      • prefix:指定要匹配的镜像前缀。
      • signedPrefix :根据需要指定要重新映射的镜像前缀。

12.2.2. 关于修改或删除镜像策略

您可以使用与任何其他自定义资源(CR)对象相同的命令来修改或删除集群镜像策略或镜像策略。

您可以通过编辑策略 YAML 并对文件运行 oc apply 命令或直接编辑 ClusterImagePolicyImagePolicy 对象来修改现有策略。两种方法都以同样的方式应用更改。

您可以为集群或命名空间创建多个策略。这可让您为不同的镜像或仓库创建不同的策略。

您可以通过删除 ClusterImagePolicyImagePolicy 对象来删除策略。

返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

Theme

© 2025 Red Hat