7.7. 为断开连接的环境配置 Clair
Clair 使用一组称为 Updaters
的组件来处理从各种漏洞数据库获取和解析数据。默认情况下会设置更新 者
,直接从互联网拉取漏洞数据,并可立即使用。对于没有直接访问互联网的断开连接的环境中的客户,这会产生一个问题。Clair 通过处理不同类型的更新工作流来支持这些环境,这些工作流考虑网络隔离。使用 clairctl
命令行工具,任何进程都可以使用开放主机从互联网轻松获取更新器数据,安全地将数据传送到隔离的主机,然后将隔离主机上的
数据导入到 Clair 本身。
Updater
目前,Clair 增强的数据是 CVSS 数据。目前在断开连接的环境中不支持增强数据。
使用以下步骤为断开连接的环境配置 Clair。
先决条件
-
已安装
clairctl
工具以二进制或 Clair 容器镜像运行。
流程
在
config.yaml
文件中,将您的 Clair 配置设置为禁用Updaters
正在运行:config.yaml
matcher: disable_updaters: true
将最新的
Updater
数据导出到本地归档。以下命令假定您的 Clair 配置位于/etc/clairv4/config/config.yaml
中$ podman run -it --rm -v /etc/clairv4/config:/cfg:Z -v /path/to/output/directory:/updaters:Z --entrypoint /bin/clairctl registry.redhat.io/quay/clair-rhel8:v3.8.0 --config /cfg/config.yaml export-updaters /updaters/updaters.gz
注意您必须明确引用 Clair 配置。这会在
/etc/clairv4/updaters/updaters.gz
中创建Updater
归档。要确保归档创建时没有来自源数据库的任何错误,您可以使用带有clairctl
的--strict
标志。该存档文件应复制到运行 Clair 的断开连接的主机中被访问的卷。在断开连接的主机上,使用以下命令将存档导入到 Clair 中:
$ podman run -it --rm -v /etc/clairv4/config:/cfg:Z -v /path/to/output/directory:/updaters:Z --entrypoint /bin/clairctl registry.redhat.io/quay/clair-rhel8:v3.8.0 --config /cfg/config.yaml import-updaters /updaters/updaters.gz
7.7.1. 将存储库映射到常见产品枚举(CPE)信息
Clair 的 Red Hat Enterprise Linux (RHEL)扫描程序依赖于通用产品枚举(CPE)文件,将 RPM 软件包正确映射到对应的安全数据,以生成匹配的结果。必须存在 cp 文件,或者必须允许访问该文件,以便扫描程序可以正确地处理 RPM 软件包。如果文件不存在,则不会扫描容器镜像中安装的 RPM 软件包。
-
repos2cpe
JSON 映射文件 在红帽 Repository-to-CPE JSON 发布。 -
name2repos
JSON 映射文件在 Red Hat Name-to-Repos JSON 中发布。
除了将 CVE 信息上传到断开连接的 Clair 的数据库外,还必须在本地提供映射文件:
- 对于独立的 Red Hat Quay 和 Clair 部署,必须将映射文件加载到 Clair pod 中。
-
对于基于 Operator 的 Red Hat Quay 和 Clair 部署,您必须将 Clair 组件设置为
unamanged
。然后,Clair 必须手动部署,设置配置来加载映射文件的本地副本。
除了将 CVE 信息上传到断开连接的 Clair 的数据库外,还必须在本地提供映射文件:
使用 Clair 配置中的 repo2cpe_mapping_file
字段指定该文件,例如:
indexer:
scanner:
repo:
rhel-repository-scanner:
repo2cpe_mapping_file: /data/cpe-map.json
package:
rhel_containerscanner:
name2repos_mapping_file: /data/repo-map.json 1
如需更多信息,请参阅 如何将 OVAL 安全数据准确匹配到安装的 RPM。