Harbor 默认通过开源项目 Trivy (Harbor 2.0.0 及之后版本)或 Clair (Habor v2.2.0 版本之后从默认中删除)提供镜像漏洞的静态分析 。
在harbor中可以对特定镜像或 Harbor 中的所有镜像手动启动扫描。也可以设置策略,使系统定期自动扫描所有镜像。
说明:
本文中harbor使用的截图以 Harbor v2.11.0 为例,具体操作以实际环境版本为准。
本文使用的2.11.0版本,harbor支持的扫描器为Trivy。Trivy是一款全面且多功能的安全扫描器,专为云原生应用程序设计。它能够扫描容器镜像、文件系统、Kubernetes集群、Git存储库等,检测漏洞、配置错误和恶意软件等安全问题。
官方仓库地址:https://github.com/aquasecurity/trivy
harbor安装时启用trivy扫描工具:./install.sh --with-trivy
。如果安装时未启用,可以后续执行参数更新后重启环境:
[root@e2etest harbor]# ls
common common.sh docker-compose.yml harbor.v2.11.0.tar.gz harbor.yml harbor.yml.tmpl install.sh LICENSE prepare
# 使用prepare脚本启用trivy,然后更新docker-compose.yaml配置文件
[root@e2etest harbor]# ./prepare --with-trivy
# 重新启动harbor环境
[root@e2etest harbor]# docker-compose down
[root@e2etest harbor]# docker-compose up -d
界面查看配置扫描器:
trivy
在审查服务中,harbor还提供了安全中心,展示镜像漏洞的概览。在漏洞菜单可以配置漏洞扫描的策略,可以手动触发或者配置定时扫描。
上述漏扫执行的是全部的参控股镜像扫描任务。除次之外,在harbor的项目中,针对镜像提供了单独的扫描入口。
默认的情况下trivy会联网下载漏扫数据库,并执行数据库更新,如果环境无法联网执行扫描的时候就会有报错。内网环境中我们可以离线导入漏洞库并执行离线扫描,漏洞库采取定时手动更新的策略。
[root@e2etest harbor]# ls
common common.sh docker-compose.yml harbor.v2.11.0.tar.gz harbor.yml harbor.yml.tmpl install.sh LICENSE prepare
# 修改下面的配置
[root@e2etest harbor]# vi harbor.yml
trivy:
# 跳过更新
skip_update: true
#离线扫描
offline_scan: true
# 重新启动harbor环境
[root@e2etest harbor]# docker-compose down
[root@e2etest harbor]# docker-compose up -d
trivy使用git下载漏洞库,所以要保证git能够联网。内网部署可以配置代理或离线导入的方式进行。本文采用离线导入的方式:
找一台可以联网的机器,安装trivy,运行镜像扫描任务下载漏洞库。trivy扫描使用的数据默认位于当前用户的.cache/
目录下。也可以通过下面的命令下载漏洞数据库:trivy image --download-db-only
。
[root@e2etest ~]# ls .cache/trivy/
db fanal policy
[root@e2etest ~]# ls .cache/trivy/db/
metadata.json trivy.db
将数据库拷贝到harbor机器的环境中:
# /data/harbor是我安装harbor时配置的数据目录
[root@e2etest ~]# ls /data/harbor/trivy-adapter/trivy/db/
metadata.json trivy.db
# 添加权限
chown 10000:10000 -R /data/harbor/trivy-adapter/trivy
完成上述配置后,我们就可以执行harbor镜像的扫描了。
harbor-scanner
点击镜像仓库页签,选择一个仓库源,进入该仓库的 Artifacts 页面。
勾选一个或多个需要扫描的 Artifacts ,单击扫描。
harbor-scan-some
在配置管理中,也可以配置自动扫描镜像,当项目中有镜像上传后自动执行。
这里除了扫描漏洞之外,也可以借助trivy生成镜像的SBOM(软件物料清单):
harbor-image-sbom
从sbom中可以清晰的看出镜像使用了哪些软件包、版本及license等信息。
使用具有 Harbor 系统管理员权限的帐户登录 Harbor 界面。
选择系统管理 -- 审查服务,点击漏洞页签,可以进行全部扫描。
harbor-scan-all
这里也可以设置扫描策略,可以设置每小时、每天、每周扫描。也可以自定义时间,通过cron格式指定。
在安全中心可以看到当前漏洞的总览信息:
harbor-scan-seccenter