12.2. 关于配置 sigstore 支持
您可以使用 ClusterImagePolicy
和 ImagePolicy
自定义资源(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
,命名空间会使用集群镜像策略中的策略。镜像创建镜像策略对象,并显示类似以下消息的错误:带有冲突镜像身份的镜像策略示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
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 证书。signedIdentity
:指定验证签名中的镜像以及实际镜像本身的方法。要配置签名的身份,您必须将以下参数之一指定为 match 策略:-
MatchRepoDigestOrExact
.签名中引用的镜像必须与镜像本身位于同一个存储库中。如果镜像传输标签,签名中引用的镜像必须完全匹配。这是默认值。 -
MatchRepository
.签名中引用的镜像必须与镜像本身位于同一个存储库中。如果镜像传输标签,则签名中引用的镜像不需要完全匹配。如果镜像使用指定准确镜像版本的标签签名,则拉取镜像包含latest
标签。 -
ExactRepository
.签名中引用的镜像必须位于由exactRepository
参数指定的同一存储库中。必须指定exactRepository
参数。 RemapIdentity
。如果有范围的存储库或镜像与指定的prefix
匹配,则该前缀将被指定的signedPrefix
替换。如果镜像身份不匹配,prefix
保持不变,且不会重新映射。在验证其他存储库命名空间的签名时,可以使用此选项来保留供应商的存储库结构。prefix
和signedPrefix
可以是完全匹配host[:port]
字符串的host[:port]
值,仓库命名空间或仓库。prefix
和signedPrefix
不得包含标签或摘要。例如,要指定一个仓库,请使用example.com/library/busybox
而不是busybox
。要指定example.com/library/busybox
的父命名空间,您可以使用example.com/library
。您必须指定以下参数:
-
prefix
:指定要匹配的镜像前缀。 -
signedPrefix
:根据需要指定要重新映射的镜像前缀。
-
-
12.2.2. 关于修改或删除镜像策略 复制链接链接已复制到粘贴板!
您可以使用与任何其他自定义资源(CR)对象相同的命令来修改或删除集群镜像策略或镜像策略。
您可以通过编辑策略 YAML 并对文件运行 oc apply
命令或直接编辑 ClusterImagePolicy
或 ImagePolicy
对象来修改现有策略。两种方法都以同样的方式应用更改。
您可以为集群或命名空间创建多个策略。这可让您为不同的镜像或仓库创建不同的策略。
您可以通过删除 ClusterImagePolicy
和 ImagePolicy
对象来删除策略。