将漏洞数据导入离线 Harbor 实例
Clair 已在 Harbor v2.2 中移除作为默认漏洞扫描器。强烈建议您配置 Trivy 作为默认扫描器。如果您想在 v2.2 及更高版本中继续使用 Clair,您必须将其配置为外部扫描器。
如果 Harbor 安装在没有互联网连接的环境中,Clair 无法从公共漏洞数据库中获取数据。在这种情况下,Harbor 管理员必须手动更新 Clair 数据库。
准备工作
-
您需要有一个连接到互联网的 Clair 实例。如果您有另一个可以访问互联网的 Harbor 实例,这也适用。
-
检查您的 Clair 实例是否已将其漏洞数据库更新到最新版本。
- 使用
docker ps
找出 Clair 服务的容器 ID。 - 运行
docker logs <container_id>
以检查 Clair 容器的日志。如果您正在使用 Harbor,您可以在/var/log/harbor/2017-xx-xx/clair.log
下找到最新的 Clair 日志。 - 查找如下所示的日志
Jul 3 20:40:45 172.18.0.1 clair[3516]: {"Event":"finished fetching","Level":"info","Location":"updater.go:227","Time":"2017-07-04 03:40:45.890364","updater name":"rhel"} Jul 3 20:40:46 172.18.0.1 clair[3516]: {"Event":"finished fetching","Level":"info","Location":"updater.go:227","Time":"2017-07-04 03:40:46.768924","updater name":"alpine"} Jul 3 20:40:47 172.18.0.1 clair[3516]: {"Event":"finished fetching","Level":"info","Location":"updater.go:227","Time":"2017-07-04 03:40:47.190982","updater name":"oracle"} Jul 3 20:41:07 172.18.0.1 clair[3516]: {"Event":"Debian buster is not mapped to any version number (eg. Jessie-\u003e8). Please update me.","Level":"warning","Location":"debian.go:128","Time":"2017-07-04 03:41:07.833720"} Jul 3 20:41:07 172.18.0.1 clair[3516]: {"Event":"finished fetching","Level":"info","Location":"updater.go:227","Time":"2017-07-04 03:41:07.833975","updater name":"debian"} Jul 4 00:26:17 172.18.0.1 clair[3516]: {"Event":"finished fetching","Level":"info","Location":"updater.go:227","Time":"2017-07-04 07:26:17.596986","updater name":"ubuntu"} Jul 4 00:26:18 172.18.0.1 clair[3516]: {"Event":"adding metadata to vulnerabilities","Level":"info","Location":"updater.go:253","Time":"2017-07-04 07:26:18.060810"} Jul 4 00:38:05 172.18.0.1 clair[3516]: {"Event":"update finished","Level":"info","Location":"updater.go:198","Time":"2017-07-04 07:38:05.251580"}
- 使用
短语 finished fetching
表示 Clair 已完成从端点获取漏洞更新的一轮。确保所有 rhel
、alpine
、oracle
、debian
和 ubuntu
端点都已正确更新。如果它们尚未更新,请等待 Clair 获取数据。
转储漏洞数据
-
登录到连接到互联网的主机,Clair Postgres 数据库在该主机上运行。
-
通过运行以下命令转储 Clair 的漏洞数据库。
容器名称clair-db
是互联网连接的 Clair 实例使用的数据库容器的占位符。$ docker exec clair-db /bin/sh -c "pg_dump -U postgres -a -t feature -t keyvalue -t namespace -t schema_migrations -t vulnerability -t vulnerability_fixedin_feature" > vulnerability.sql $ docker exec clair-db /bin/sh -c "pg_dump -U postgres -c -s" > clear.sql
文件 vulnerability.sql
和 clear.sql
已生成。
备份 Harbor Clair 数据库
在导入数据之前,强烈建议备份 Harbor 中的 Clair 数据库。
docker exec harbor-db /bin/sh -c "pg_dump -U postgres -c" > all.sql
更新 Harbor Clair 数据库
-
将
vulnerability.sql
和clear.sql
文件复制到运行 Harbor 的主机上。 -
运行以下命令将数据导入到 Harbor Clair 数据库
docker exec -i harbor-db psql -U postgres < clear.sql docker exec -i harbor-db psql -U postgres < vulnerability.sql
重新扫描镜像
导入数据后,在 Harbor 界面中触发扫描过程。有关运行扫描的信息,请参阅扫描所有镜像。
在本页中
贡献