第 15 章 ImagePolicy [config.openshift.io/v1]


描述

ImagePolicy 包含用于镜像签名验证的命名空间范围的配置

兼容性级别 1:在主发行版本中至少提供 12 个月或 3 个次版本(以更长的时间为准)。

类型
object
必填
  • spec

15.1. 规格

Expand
属性类型描述

apiVersion

string

APIVersion 定义对象的这个表示法的版本化的 schema。服务器应该将识别的模式转换为最新的内部值,并可拒绝未识别的值。更多信息: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources

kind

string

kind 是一个字符串值,代表此对象所代表的 REST 资源。服务器可以从客户端向其提交请求的端点推断。无法更新。采用驼峰拼写法 (CamelCase)。更多信息: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds

metadata

ObjectMeta

标准对象元数据。更多信息: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata

spec

对象

spec 包含用于配置的用户可设置值

status

对象

status 包含资源的观察状态。

15.1.1. .spec

描述
spec 包含用于配置的用户可设置值
类型
object
必填
  • policy
  • scopes
Expand
属性类型描述

policy

object

policy 是一个必填字段,其中包含允许验证范围的配置,并且定义如何处理不与验证策略匹配的镜像。

scopes

数组(字符串)

Scope 是一个必填字段,用于定义分配给策略的镜像身份列表。每个项目指的是实现"Docker Registry HTTP API V2"的 registry 中的范围。匹配单个镜像的范围以完全扩展的形式命名 Docker 引用,可以使用标签或摘要。例如,docker.io/library/busybox:latest (not busybox:latest)。更多常规范围是 individual-image 范围的前缀,并指定存储库(通过省略标签或摘要)、存储库命名空间或 registry 主机(仅指定主机名和可能是一个端口号)或通配符表达式,匹配所有子域(不包括端口号)。通配符只支持子域匹配,且可能不会在主机的中间使用,例如....3.example.com 是一个有效情况,但示例为* credentials.com 则不行。这在一个对象中没有超过 256 个范围。如果多个范围与给定镜像匹配,则仅应用最具体范围的策略要求。更多常规范围的策略要求会被忽略。除了为您自己的部署的应用程序设置策略外,请确保 OpenShift 镜像存储库 quay.io/openshift-release-dev/ocp-release, quay.io/openshift-release-dev/ocp-v4.0-art-dev (或更常规范围)允许部署集群操作所需的 OpenShift 镜像。如果在 ClusterImagePolicy 和 ImagePolicy 中配置了范围,或者 ImagePolicy 中的范围嵌套在 ClusterImagePolicy 中的一个范围下,则仅应用 ClusterImagePolicy 中的策略。有关格式的详情,请参考文档说明 docker transport 字段,该字段可在以下位置找到 :https://github.com/containers/image/blob/main/docs/containers-policy.json.5.md#docker

15.1.2. .spec.policy

描述
policy 是一个必填字段,其中包含允许验证范围的配置,并且定义如何处理不与验证策略匹配的镜像。
类型
object
必填
  • rootOfTrust
Expand
属性类型描述

rootOfTrust

object

rootOfTrust 是一个必需字段,它定义了在检索过程中验证镜像签名的信任根。这允许镜像消费者指定 policyType 和相应的策略配置,与策略的生成方式匹配。

signedIdentity

object

signedIdentity 是一个可选字段,指定签名对镜像的签名声明的身份。当签名中的镜像身份与原始镜像规格不同时,例如为镜像范围配置镜像 registry 时,镜像 registry 中的签名包含镜像的镜像身份,而不是原始范围。必需的 matchPolicy 字段指定验证过程中用来验证签名中身份和实际镜像身份的方法,默认的 matchPolicy 为 "MatchRepoDigestOrExact"。

15.1.3. .spec.policy.rootOfTrust

描述
rootOfTrust 是一个必需字段,它定义了在检索过程中验证镜像签名的信任根。这允许镜像消费者指定 policyType 和相应的策略配置,与策略的生成方式匹配。
类型
object
必填
  • policyType
Expand
属性类型描述

fulcioCAWithRekor

object

fulcioCAWithRekor 根据 Fulcio 证书和 Rekor 公钥定义信任配置的 root 用户。当 policyType 为 FulcioCAWithRekor 时,需要相应的文档 :https://github.com/sigstore/fulciohttps://github.com/sigstore/rekor

policyType

string

policyType 是一个必填字段,指定用于验证的策略类型。此字段必须与策略的生成方式对应。允许的值是 "PublicKey", "FulcioCAWithRekor", 和 "PKI"。当设置为 "PublicKey" 时,策略依赖于 sigstore publicKey,并可以选择使用 Rekor 验证。当设置为 "FulcioCAWithRekor" 时,该策略基于 Fulcio 认证,并纳入了 Rekor 验证。当设置为 "PKI" 时,该策略基于 Bring Your Own Public Key Infrastructure (BYOPKI)的证书。通过打开 SigstoreImageVerificationPKI 功能门来启用这个值。

publicKey

object

PublicKey 根据 sigstore 公钥定义信任配置的根。(可选)为 Rekor 验证包括 Rekor 公钥。当 policyType 是 PublicKey 时,需要 publicKey,否则禁止。

15.1.4. .spec.policy.rootOfTrust.fulcioCAWithRekor

描述
fulcioCAWithRekor 根据 Fulcio 证书和 Rekor 公钥定义信任配置的 root 用户。当 policyType 为 FulcioCAWithRekor 时,需要相应的文档 :https://github.com/sigstore/fulciohttps://github.com/sigstore/rekor
类型
object
必填
  • fulcioCAData
  • fulcioSubject
  • rekorKeyData
Expand
属性类型描述

fulcioCAData

string

fulcioCAData 是一个必填字段,包含 PEM 格式的内联 base64 编码数据。fulcioCAData 必须最多为 8192 个字符。

fulcioSubject

object

fulcioSubject 是一个必填字段,指定 OIDC 签发者和 Fulcio 身份验证配置的电子邮件。

rekorKeyData

string

rekorKeyData 是一个必需字段,其中包含来自 Rekor 公钥的 PEM 格式的内联 base64 编码数据。rekorKeyData 必须最多为 8192 个字符。

描述
fulcioSubject 是一个必填字段,指定 OIDC 签发者和 Fulcio 身份验证配置的电子邮件。
类型
object
必填
  • oidcIssuer
  • signedEmail
Expand
属性类型描述

oidcIssuer

string

oidcIssuer 是一个必需的文件,其中包含预期的 OIDC 签发者。oidcIssuer 必须是有效的 URL,长度最多为 2048 个字符。它将验证 Fulcio-issued 证书是否包含指向此 OIDC 签发者 URL 的(Fulcio-defined)证书扩展。当 Fulcio 发布证书时,它根据客户端提供的 ID 令牌中的 URL 包括值。示例:"https://expected.OIDC.issuer/"

signedEmail

string

signedEmail 是必填字段,包含发出 Fulcio 证书的电子邮件地址。signedEmail 必须是有效的电子邮件地址,长度最多为 320 个字符。示例:"expected-signing-user@example.com"

15.1.6. .spec.policy.rootOfTrust.publicKey

描述
PublicKey 根据 sigstore 公钥定义信任配置的根。(可选)为 Rekor 验证包括 Rekor 公钥。当 policyType 是 PublicKey 时,需要 publicKey,否则禁止。
类型
object
必填
  • keyData
Expand
属性类型描述

keyData

string

keyData 是必填字段,包含 PEM 格式公钥的内联 base64 编码数据。keyData 必须最多为 8192 个字符。

rekorKeyData

string

rekorKeyData 是一个可选字段,包含来自 Rekor 公钥的 PEM 格式的内联 base64 编码数据。rekorKeyData 必须最多为 8192 个字符。

15.1.7. .spec.policy.signedIdentity

描述
signedIdentity 是一个可选字段,指定签名对镜像的签名声明的身份。当签名中的镜像身份与原始镜像规格不同时,例如为镜像范围配置镜像 registry 时,镜像 registry 中的签名包含镜像的镜像身份,而不是原始范围。必需的 matchPolicy 字段指定验证过程中用来验证签名中身份和实际镜像身份的方法,默认的 matchPolicy 为 "MatchRepoDigestOrExact"。
类型
object
必填
  • matchPolicy
Expand
属性类型描述

exactRepository

object

exactRepository 指定存储库,其必须与签名中的身份完全匹配。如果 matchPolicy 设为 "ExactRepository",则需要 exactRepository。它用于验证签名是否声明与此确切存储库匹配的身份,而不是原始镜像身份。

matchPolicy

string

matchPolicy 是一个必需的 filed 指定匹配策略,用于根据镜像范围验证签名中的镜像身份。允许的值是 "MatchRepoDigestOrExact", "MatchRepository", "ExactRepository", "RemapIdentity"。如果省略时,默认值为 "MatchRepoDigestOrExact"。当设置为 "MatchRepoDigestOrExact" 时,如果镜像身份被摘要引用,签名中的身份必须与镜像身份位于同一个存储库中。否则,签名中的身份必须与镜像身份相同。当设置为 "MatchRepository" 时,签名中的身份必须与镜像身份位于同一个存储库中。当设置为 "ExactRepository" 时,必须指定 exactRepository。签名中的身份必须与 "repository" 指定的特定身份位于同一个存储库中。当设置为 "RemapIdentity" 时,必须指定 remapIdentity。签名必须与重新映射镜像身份相同。如果镜像身份与指定的 remapPrefix 匹配,则重新映射镜像身份是通过将 "prefix" 替换为指定的 "signedPrefix"。

remapIdentity

object

remapIdentity 指定验证镜像身份的前缀重新映射规则。如果 matchPolicy 设为 "RemapIdentity",则需要重新映射Identity。它用于验证签名是否声明了与原始镜像不同的 registry/存储库前缀。

15.1.8. .spec.policy.signedIdentity.exactRepository

描述
exactRepository 指定存储库,其必须与签名中的身份完全匹配。如果 matchPolicy 设为 "ExactRepository",则需要 exactRepository。它用于验证签名是否声明与此确切存储库匹配的身份,而不是原始镜像身份。
类型
object
必填
  • 软件仓库
Expand
属性类型描述

软件仓库

string

Repository 是要匹配的镜像身份的引用。如果 matchPolicy 被设置为 "ExactRepository",则需要 repository。该值应该是存储库名称(通过忽略标签或摘要)来实现 "Docker Registry HTTP API V2"。例如,docker.io/library/busybox

15.1.9. .spec.policy.signedIdentity.remapIdentity

描述
remapIdentity 指定验证镜像身份的前缀重新映射规则。如果 matchPolicy 设为 "RemapIdentity",则需要重新映射Identity。它用于验证签名是否声明了与原始镜像不同的 registry/存储库前缀。
类型
object
必填
  • prefix
  • signedPrefix
Expand
属性类型描述

prefix

string

如果 matchPolicy 设置为 "RemapIdentity",则需要 prefix。prefix 是要匹配的镜像身份的前缀。如果镜像身份与指定的前缀匹配,则该前缀将被指定的"signedPrefix"替代(否则会原样使用,且不会重新映射)。这在验证用于保留供应商存储库结构的其他存储库命名空间的签名时很有用。prefix 和 signedPrefix 值可以是 host[:port] 值(完全匹配相同的 host[:port]、字符串)、存储库命名空间或存储库(例如,它们不得包含标签/摘要),并且与完整扩展表单的前缀匹配。例如,docker.io/library/busybox (not busybox)指定该单一存储库,或 docker.io/library (不是空字符串)来指定 docker.io/library/busybox 的父命名空间。

signedPrefix

string

如果 matchPolicy 设置为 "RemapIdentity",则需要 signedPrefix。signedPrefix 是要在签名中匹配的镜像身份的前缀。格式与"前缀"相同。值可以是 host[:port] 值(与相同的 host[:port]、字符串)、存储库命名空间或存储库(例如,不得包含标签/摘要)匹配,并以完全扩展的形式作为前缀匹配。例如,docker.io/library/busybox (not busybox)指定该单一存储库,或 docker.io/library (不是空字符串)来指定 docker.io/library/busybox 的父命名空间。

15.1.10. .status

描述
status 包含资源的观察状态。
类型
对象
Expand
属性类型描述

conditions

array

条件提供有关此 API 资源状态的详细信息。条件类型"Pending"表示客户资源包含无法生效的策略。它可以被全局策略覆盖,或者镜像范围无效。

conditions[]

object

condition 包含此 API 资源当前状态的一个方面的详细信息。

15.1.11. .status.conditions

描述
条件提供有关此 API 资源状态的详细信息。条件类型"Pending"表示客户资源包含无法生效的策略。它可以被全局策略覆盖,或者镜像范围无效。
类型
array

15.1.12. .status.conditions[]

描述
condition 包含此 API 资源当前状态的一个方面的详细信息。
类型
对象
必填
  • lastTransitionTime
  • message
  • reason
  • status
  • type
Expand
属性类型描述

lastTransitionTime

字符串

lastTransitionTime 是条件从一个状态转换到另一个状态最后一次的时间。这应该是底层条件变化的时间。如果为未知,则使用 API 字段更改的时间是可以接受的。

message

字符串

Message 是人类可读的消息,指示有关转换的详细信息。这可能是一个空字符串。

observedGeneration

整数

observedGeneration 代表 .metadata.generation,这是条件设置所基于的条件。例如,如果 .metadata.generation 目前为 12,但 .status.conditions[x].observedGeneration 是 9,则代表条件与实例的当前状态已不匹配。

reason

字符串

reason 包含程序标识符,指示条件最后一次转换的原因。特定条件类型的制作者可能会定义预期的值和此字段的含义,以及这些值是否被视为有保证的 API。该值应该是 CamelCase 字符串。此字段可能不是空的。

status

字符串

条件的状态,True, False, Unknown 之一。

type

字符串

CamelCase 或 foo.example.com/CamelCase 中的条件类型。

返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

Theme

© 2025 Red Hat