3.3. 将外部扫描工具与 OpenShift 集成
OpenShift Container Platform 使用对象注解来扩展功能。外部工具(如漏洞扫描程序)可能会使用元数据为镜像对象添加注解,以汇总结果并控制 Pod 执行。本节描述了该注解的可识别格式,以便在控制台中可靠使用它来为用户显示有用的数据。
3.3.1. 镜像元数据 复制链接链接已复制到粘贴板!
镜像质量数据有多种不同的类型,包括软件包漏洞和开源软件 (OSS) 许可证合规性。另外,该元数据的供应商可能不止一个。为此,保留了以下注解格式:
quality.images.openshift.io/<qualityType>.<providerId>: {}
quality.images.openshift.io/<qualityType>.<providerId>: {}
组件 | 描述 | 可接受的值 |
---|---|---|
| 元数据类型 |
|
| 供应商 ID 字符串 |
|
3.3.1.1. 注解键示例 复制链接链接已复制到粘贴板!
quality.images.openshift.io/vulnerability.blackduck: {} quality.images.openshift.io/vulnerability.jfrog: {} quality.images.openshift.io/license.blackduck: {} quality.images.openshift.io/vulnerability.openscap: {}
quality.images.openshift.io/vulnerability.blackduck: {}
quality.images.openshift.io/vulnerability.jfrog: {}
quality.images.openshift.io/license.blackduck: {}
quality.images.openshift.io/vulnerability.openscap: {}
镜像质量注解的值是必须遵循以下格式的结构化数据:
字段 | 必需? | 描述 | 类型 |
---|---|---|---|
| 是 | 供应商显示名称 | 字符串 |
| 是 | 扫描时间戳 | 字符串 |
| 否 | 简短描述 | 字符串 |
| 是 | 信息来源的 URL 和/或更多详情。必需,以便用户可以验证数据。 | 字符串 |
| 否 | 扫描程序版本 | 字符串 |
| 否 | 合规性通过/失败 | 布尔值 |
| 否 | 找到的问题摘要 | 列表(请参阅下表) |
summary
字段必须遵循以下格式:
字段 | 描述 | 类型 |
---|---|---|
| 显示组件标签(例如:"critical"、"important"、"moderate"、"low" 或 "health") | 字符串 |
| 此组件的数据(例如:发现的漏洞计数或分数) | 字符串 |
|
组件索引,允许对图形表示进行排序和分配。该值范围为 | 整数 |
| 信息来源的 URL 和/或更多详情。可选。 | 字符串 |
3.3.1.2. 注解值示例 复制链接链接已复制到粘贴板!
本示例显示了一个镜像的 OpenSCAP 注解,带有漏洞概述数据以及一个合规性布尔值:
OpenSCAP 注解
本例演示了一个镜像的 Red Hat Container Catalog 注解,带有健康状态索引数据以及指向更多详情的一个外部 URL:
Red Hat Container Catalog 注解
3.3.2. 为镜像对象添加注解 复制链接链接已复制到粘贴板!
虽然 OpenShift Container Platform 最终用户操作针对的是镜像流对象,但会使用安全元数据为镜像对象添加注解。镜像对象是集群范围的,指向可能由多个镜像流和标签引用的单一镜像。
3.3.2.1. 注解 CLI 命令示例 复制链接链接已复制到粘贴板!
将 <image>
替换为一个镜像摘要(digest)。例如 sha256:fec8a395afe3e804b3db5cb277869142d2b5c561ebb517585566e160ff321988
:
3.3.3. 控制 Pod 执行 复制链接链接已复制到粘贴板!
为了通过编程来控制镜像是否可以运行,可以使用 images.openshift.io/deny-execution
镜像策略。如需更多信息,请参阅镜像策略。
3.3.3.1. 注解示例 复制链接链接已复制到粘贴板!
annotations: images.openshift.io/deny-execution: true
annotations:
images.openshift.io/deny-execution: true
3.3.4. 集成参考 复制链接链接已复制到粘贴板!
在大多数情况下,漏洞扫描程序等外部工具会开发一个脚本或插件来监视镜像更新,执行扫描,并使用结果为相关的镜像对象添加注解。通常,这个自动化过程会调用 OpenShift Container Platform REST API 来编写注解。有关 REST API 和使用 PATCH
更新镜像的信息,请参阅 REST API 参考。
3.3.4.1. REST API 调用示例 复制链接链接已复制到粘贴板!
以下使用 curl
的示例调用会覆盖注解值。请务必替换 <token>
、<openshift_server>
、<image_id>
和 <image_annotation>
的值。
Patch API 调用
curl -X PATCH \ -H "Authorization: Bearer <token>" \ -H "Content-Type: application/merge-patch+json" \ https://<openshift_server>:8443/oapi/v1/images/<image_id> \ --data '{ <image_annotation> }'
$ curl -X PATCH \
-H "Authorization: Bearer <token>" \
-H "Content-Type: application/merge-patch+json" \
https://<openshift_server>:8443/oapi/v1/images/<image_id> \
--data '{ <image_annotation> }'
以下是 PATCH
有效负载数据的示例:
Patch 调用数据