长亭百川云 - 文章详情

harbor系列之8:镜像漏洞扫描

lldhsds

150

2024-07-27

镜像漏洞扫描

Harbor 默认通过开源项目 Trivy (Harbor 2.0.0 及之后版本)或 Clair (Habor v2.2.0 版本之后从默认中删除)提供镜像漏洞的静态分析 。

在harbor中可以对特定镜像或 Harbor 中的所有镜像手动启动扫描。也可以设置策略,使系统定期自动扫描所有镜像。

说明:

本文中harbor使用的截图以 Harbor v2.11.0 为例,具体操作以实际环境版本为准。

1. 启用默认扫描器--trivy

本文使用的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的项目中,针对镜像提供了单独的扫描入口。

2. 设置trivy离线扫描

默认的情况下trivy会联网下载漏扫数据库,并执行数据库更新,如果环境无法联网执行扫描的时候就会有报错。内网环境中我们可以离线导入漏洞库并执行离线扫描,漏洞库采取定时手动更新的策略。

2.1 设置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

2.2 离线导入漏洞库

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

3. 执行扫描任务

完成上述配置后,我们就可以执行harbor镜像的扫描了。

3.1 扫描特定镜像

  1. 进入harbor任意一个有镜像仓库的项目,可以看到项目默认配置了Trivy扫描器,如果有多个扫描器,可以针对该项目镜像修改。

harbor-scanner

  1. 点击镜像仓库页签,选择一个仓库源,进入该仓库的 Artifacts 页面。

  2. 勾选一个或多个需要扫描的 Artifacts ,单击扫描。

harbor-scan-some

在配置管理中,也可以配置自动扫描镜像,当项目中有镜像上传后自动执行。

这里除了扫描漏洞之外,也可以借助trivy生成镜像的SBOM(软件物料清单):

harbor-image-sbom

从sbom中可以清晰的看出镜像使用了哪些软件包、版本及license等信息。

3.2 扫描所有镜像

  1. 使用具有 Harbor 系统管理员权限的帐户登录 Harbor 界面。

  2. 选择系统管理 -- 审查服务,点击漏洞页签,可以进行全部扫描。

harbor-scan-all

这里也可以设置扫描策略,可以设置每小时、每天、每周扫描。也可以自定义时间,通过cron格式指定。

3.3 查看扫描的整体情况

在安全中心可以看到当前漏洞的总览信息:

harbor-scan-seccenter

相关推荐
关注或联系我们
添加百川云公众号,移动管理云安全产品
咨询热线:
4000-327-707
百川公众号
百川公众号
百川云客服
百川云客服

Copyright ©2024 北京长亭科技有限公司
icon
京ICP备 2024055124号-2