第 8 章 在断开连接的环境中的 Clair
目前,IBM Power 和 IBM Z 不支持在断开连接的环境中部署 Clair。
Clair 使用一组称为 updaters 的组件来处理从各种漏洞数据库获取和解析数据。默认情况下,设置了 updaters,以直接从互联网拉取漏洞数据,并可立即使用。但是,有些用户可能需要 Red Hat Quay 在断开连接的环境中运行,或者不需要直接访问互联网的环境。Clair 支持断开连接的环境,方法是使用不同类型的更新工作流来考虑网络隔离。这通过使用 clairctl 命令行界面工具工作,它通过使用开放主机从互联网获取更新器数据,安全地将数据传送到隔离主机,然后对隔离主机上的更新器数据非常重要。
使用本指南在断开连接的环境中部署 Clair。
由于已知问题 PROJQUAY-6577,Red Hat Quay Operator 无法正确呈现自定义的 Clair config.yaml 文件。因此,以下步骤目前无法正常工作。
用户必须从头开始创建整个 Clair 配置,而不依赖于 Operator 来填充字段。要做到这一点,请按照 流程在断开连接的环境中对镜像进行 Clair 扫描 的说明。
目前,Clair 增强数据是 CVSS 数据。目前,在断开连接的环境中不支持增强数据。
有关 Clair 更新器的更多信息,请参阅"Clair updaters"。
8.1. 在断开连接的 OpenShift Container Platform 集群中设置 Clair 复制链接链接已复制到粘贴板!
使用以下步骤在断开连接的 OpenShift Container Platform 集群中设置置备的 Clair pod。
由于已知问题 PROJQUAY-6577,Red Hat Quay Operator 无法正确呈现自定义的 Clair config.yaml 文件。因此,以下步骤目前无法正常工作。
用户必须从头开始创建整个 Clair 配置,而不依赖于 Operator 来填充字段。要做到这一点,请按照 流程在断开连接的环境中对镜像进行 Clair 扫描 的说明。
使用以下步骤为 OpenShift Container Platform 部署安装 clairctl CLI 工具。
流程
输入以下命令,在 OpenShift Container Platform 集群中为 Clair 部署安装
clairctl程序:$ oc -n quay-enterprise exec example-registry-clair-app-64dd48f866-6ptgw -- cat /usr/bin/clairctl > clairctl注意不正式使用,可以下载
clairctl工具设置
clairctl文件的权限,以便用户可以执行并运行它,例如:$ chmod u+x ./clairctl
使用以下步骤为 OpenShift Container Platform 上置备的 OpenShift Container Platform 置备 Clair 实例检索并解码配置 secret。
先决条件
-
您已安装了
clairctl命令行工具工具。
流程
输入以下命令来检索和解码配置 secret,然后将其保存到 Clair 配置 YAML 中:
$ oc get secret -n quay-enterprise example-registry-clair-config-secret -o "jsonpath={$.data['config\.yaml']}" | base64 -d > clair-config.yaml更新
clair-config.yaml文件,使disable_updaters和airgap参数设置为true,例如:--- indexer: airgap: true --- matcher: disable_updaters: true ---
8.1.3. 从连接的 Clair 实例导出更新程序捆绑包 复制链接链接已复制到粘贴板!
使用以下步骤从可访问互联网的 Clair 实例导出更新器捆绑包。
先决条件
-
您已安装了
clairctl命令行工具工具。 -
您已检索并解码 Clair 配置 secret,并将其保存到 Clair
config.yaml文件中。 -
在 Clair
config.yaml文件中,disable_updaters和airgap参数被设置为true。
流程
在可以访问互联网的 Clair 实例中,将
clairctlCLI 工具与配置文件一起使用,以导出更新器捆绑包。例如:$ ./clairctl --config ./config.yaml export-updaters updates.gz
使用以下步骤在断开连接的 OpenShift Container Platform 集群中配置对 Clair 数据库的访问。
先决条件
-
您已安装了
clairctl命令行工具工具。 -
您已检索并解码 Clair 配置 secret,并将其保存到 Clair
config.yaml文件中。 -
在 Clair
config.yaml文件中,disable_updaters和airgap参数被设置为true。 - 您已从可访问互联网的 Clair 实例导出了更新器捆绑包。
流程
使用
ocCLI 工具确定 Clair 数据库服务,例如:$ oc get svc -n quay-enterprise输出示例
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE example-registry-clair-app ClusterIP 172.30.224.93 <none> 80/TCP,8089/TCP 4d21h example-registry-clair-postgres ClusterIP 172.30.246.88 <none> 5432/TCP 4d21h ...转发 Clair 数据库端口,使其可从本地机器访问。例如:
$ oc port-forward -n quay-enterprise service/example-registry-clair-postgres 5432:5432更新 Clair
config.yaml文件,例如:indexer: connstring: host=localhost port=5432 dbname=postgres user=postgres password=postgres sslmode=disable1 scanlock_retry: 10 layer_scan_concurrency: 5 migrations: true scanner: repo: rhel-repository-scanner:2 repo2cpe_mapping_file: /data/cpe-map.json package: rhel_containerscanner:3 name2repos_mapping_file: /data/repo-map.json
8.1.5. 将更新器捆绑包导入到断开连接的 OpenShift Container Platform 集群中 复制链接链接已复制到粘贴板!
使用以下步骤将 updaters 捆绑包导入到断开连接的 OpenShift Container Platform 集群中。
先决条件
-
您已安装了
clairctl命令行工具工具。 -
您已检索并解码 Clair 配置 secret,并将其保存到 Clair
config.yaml文件中。 -
在 Clair
config.yaml文件中,disable_updaters和airgap参数被设置为true。 - 您已从可访问互联网的 Clair 实例导出了更新器捆绑包。
- 您已将更新程序捆绑包传输到断开连接的环境中。
流程
使用
clairctlCLI 工具将更新器捆绑包导入到 OpenShift Container Platform 部署的 Clair 数据库中。例如:$ ./clairctl --config ./clair-config.yaml import-updaters updates.gz