3.4. Clair for Red Hat Quay
Clair v4 (Clair)是一个开源应用程序,它利用静态代码分析来解析镜像内容和报告影响内容的漏洞。Clair 与 Red Hat Quay 打包,可用于独立和 Operator 部署。它可以在高度可扩展的配置中运行,根据企业环境,可以单独扩展组件。
3.4.1. 在独立 Red Hat Quay 部署中设置 Clair 复制链接链接已复制到粘贴板!
对于独立的 Red Hat Quay 部署,您可以手动设置 Clair。
流程
在 Red Hat Quay 安装目录中,为 Clair 数据库数据创建一个新目录:
$ mkdir /home/<user-name>/quay-poc/postgres-clairv4输入以下命令为
postgres-clairv4文件设置适当的权限:$ setfacl -m u:26:-wx /home/<user-name>/quay-poc/postgres-clairv4输入以下命令部署 Clair Postgres 数据库:
$ sudo podman run -d --name postgresql-clairv4 \ -e POSTGRESQL_USER=clairuser \ -e POSTGRESQL_PASSWORD=clairpass \ -e POSTGRESQL_DATABASE=clair \ -e POSTGRESQL_ADMIN_PASSWORD=adminpass \ -p 5433:5433 \ -v /home/<user-name>/quay-poc/postgres-clairv4:/var/lib/pgsql/data:Z \ registry.redhat.io/rhel8/postgresql-13:1-109为您的 Clair 部署安装 Postgres
uuid-ossp模块:$ podman exec -it postgresql-clairv4 /bin/bash -c 'echo "CREATE EXTENSION IF NOT EXISTS \"uuid-ossp\"" | psql -d clair -U postgres'输出示例
CREATE EXTENSION注意Clair 需要将
uuid-ossp扩展添加到其 Postgres 数据库中。对于具有适当特权的用户,Clair 会自动添加创建扩展。如果用户没有正确的特权,则必须在启动 Clair 前添加扩展。如果扩展不存在,则 Clair 尝试启动时会显示以下错误:
ERROR: Please load the "uuid-ossp" 扩展。(SQLSTATE 42501)。如果
Quay容器正在运行并在配置模式中重启它,请将现有配置作为卷载入:$ sudo podman run --rm -it --name quay_config \ -p 80:8080 -p 443:8443 \ -v $QUAY/config:/conf/stack:Z \ registry.redhat.io/quay/quay-rhel8:{productminv} config secret- 登录到配置工具,点 UI 的 Security Scanner 部分中的 Enable Security Scanning。
-
使用尚未在
quay-server系统上使用端口设置 Clair 的 HTTP 端点,如8081。 使用 Generate PSK 按钮创建预共享密钥(PSK)。
安全扫描器 UI
-
验证并下载 Red Hat Quay 的
config.yaml文件,然后停止运行配置编辑器的Quay容器。 将新配置捆绑包提取到 Red Hat Quay 安装目录中,例如:
$ tar xvf quay-config.tar.gz -d /home/<user-name>/quay-poc/为您的 Clair 配置文件创建一个文件夹,例如:
$ mkdir /etc/opt/clairv4/config/进入 Clair 配置文件夹:
$ cd /etc/opt/clairv4/config/创建 Clair 配置文件,例如:
http_listen_addr: :8081 introspection_addr: :8088 log_level: debug indexer: connstring: host=quay-server.example.com port=5433 dbname=clair user=clairuser password=clairpass sslmode=disable scanlock_retry: 10 layer_scan_concurrency: 5 migrations: true matcher: connstring: host=quay-server.example.com port=5433 dbname=clair user=clairuser password=clairpass sslmode=disable max_conn_pool: 100 migrations: true indexer_addr: clair-indexer notifier: connstring: host=quay-server.example.com port=5433 dbname=clair user=clairuser password=clairpass sslmode=disable delivery_interval: 1m poll_interval: 5m migrations: true auth: psk: key: "MTU5YzA4Y2ZkNzJoMQ==" iss: ["quay"] # tracing and metrics trace: name: "jaeger" probability: 1 jaeger: agent: endpoint: "localhost:6831" service_name: "clair" metrics: name: "prometheus"有关 Clair 配置格式的更多信息,请参阅 Clair 配置参考。
使用容器镜像启动 Clair,挂载在来自您创建的文件中的配置中:
$ sudo podman run -d --name clairv4 \ -p 8081:8081 -p 8088:8088 \ -e CLAIR_CONF=/clair/config.yaml \ -e CLAIR_MODE=combo \ -v /etc/opt/clairv4/config:/clair:Z \ registry.redhat.io/quay/clair-rhel8:v3.9.15注意也可以运行多个 Clair 容器,但在单一容器之外,强烈建议使用 Kubernetes 或 OpenShift Container Platform 等容器编配器的部署场景。
3.4.2. 测试 Clair 复制链接链接已复制到粘贴板!
使用以下步骤测试独立 Red Hat Quay 部署或基于 OpenShift Container Platform Operator 的部署中的 Clair。
先决条件
- 您已部署了 Clair 容器镜像。
流程
输入以下命令拉取示例镜像:
$ podman pull ubuntu:20.04输入以下命令将镜像标记到 registry 中:
$ sudo podman tag docker.io/library/ubuntu:20.04 <quay-server.example.com>/<user-name>/ubuntu:20.04输入以下命令将镜像推送到 Red Hat Quay registry:
$ sudo podman push --tls-verify=false quay-server.example.com/quayadmin/ubuntu:20.04- 通过 UI 登录您的 Red Hat Quay 部署。
- 单击存储库名称,如 quayadmin/ubuntu。
在导航窗格中,单击 Tags。
报告概述
点镜像报告(如 45 个介质 )显示更详细的报告:
报告详情
注意在某些情况下,Clair 显示有关镜像的重复报告,如
ubi8/nodejs-12或ubi8/nodejs-16。这是因为同名的漏洞适用于不同的软件包。这个行为预期是 Clair 漏洞报告,且不会作为程序错误解决。
3.4.3. 国家漏洞数据库中的 CVE 评级 复制链接链接已复制到粘贴板!
从 Clair v4.2 开始,在 Red Hat Quay UI 中可以查看通用漏洞评分系统(CVSS)数据。另外,Clair v4.2 从国家漏洞数据库中为检测到的漏洞添加了 CVSS 分数。
在这个版本中,如果漏洞的 CVSS 分数在分布分数的 2 级内,则 Red Hat Quay UI 默认存在分发的分数。例如:
这与前面的接口不同,它只显示以下信息: