harbor 接入 trivy 漏洞扫描, 用到的开源工具 harbor-scanner-trivy

安装

需要依赖 Redis, 先安装 Redis

安装 trivy

trivy 是扫描核心组件, 需要安装,参考 trivy 官网安装文档

https://aquasecurity.github.io/trivy/v0.41/getting-started/installation/

1
2
3
4
5
6
7
8
9
10
RELEASE_VERSION=$(grep -Po '(?<=VERSION_ID=")[0-9]' /etc/os-release)
cat << EOF | sudo tee -a /etc/yum.repos.d/trivy.repo
[trivy]
name=Trivy repository
baseurl=https://aquasecurity.github.io/trivy-repo/rpm/releases/$RELEASE_VERSION/\$basearch/
gpgcheck=1
enabled=1
gpgkey=https://aquasecurity.github.io/trivy-repo/rpm/public.key
EOF
sudo yum -y install trivy

trivy 首次运行会从 github 下载漏洞数据库,需要确保机器可以连接 GitHub,执行 trivy image --download-db-only 会下载 db,db 数据存储在 ~/.cache/trivy

安装 scanner-trivy

开源地址:https://github.com/aquasecurity/harbor-scanner-trivy

scanner-trivy 是通过环境变量读取配置

启动命令:

1
SCANNER_API_SERVER_ADDR=:8181 SCANNER_REDIS_URL=redis://localhost:6379 ./scanner-trivy

或者通过 supervisor 运行

1
2
3
4
5
6
7
8
9
10
11
[program:trivy]
numprocs=1
user=root
command=/data/server/trivy/scanner-trivy
directory=/data/server/trivy/
redirect_stderr=true
stdout_logfile=/data/logs/trivy.log
autostart=true
autorestart=true
startsecs=10
environment=SCANNER_API_SERVER_ADDR=:8181,SCANNER_REDIS_URL=redis://localhost:6379

使用

harbor 系统管理 审查服务 扫描器 里面添加 trivy 地址:

trivy扫描器

然后就可以正常扫描镜像了

扫描结果

其他

使用国内镜像更新

借助 oras 来拉取镜像, 需要先安装 oras

更新数据库的脚本:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#!/bin/bash

cd /tmp

rm -rf /tmp/trivy && rm -rf /tmp/db.tar.gz

if ! /usr/local/bin/oras pull ghcr.nju.edu.cn/aquasecurity/trivy-db:2 -v --insecure ;then
echo "pull trivy-db failed" >> /tmp/trivy.log
exit
fi

mkdir /tmp/trivy && tar -zxvf /tmp/db.tar.gz -C /tmp/trivy
/bin/cp -rfp /tmp/trivy/* /root/.cache/trivy/db/
rm -rf /tmp/trivy && rm -rf /tmp/db.tar.gz

rm -rf /tmp/trivy-java && rm -rf /tmp/javadb.tar.gz
if ! /usr/local/bin/oras pull ghcr.nju.edu.cn/aquasecurity/trivy-java-db:1 -v --insecure ;then
echo "pull trivy-java-db failed" >> /tmp/trivy.log
exit
fi

mkdir /tmp/trivy-java && tar -zxvf /tmp/javadb.tar.gz -C /tmp/trivy-java
/bin/cp -rfp /tmp/trivy-java/* /root/.cache/trivy/java-db
rm -rf /tmp/trivy-java && rm -rf /tmp/javadb.tar.gz

使用 crontab 执行此脚本, 一天一次即可。