Skip to content

Harbor集成Trivy

前置:

已经部署好了Harbor或Docker、Docker-Compose已经安装好准备部署Harbor

确认Harbor可以使用Trivy

注:这里主要说添加Trivy,Harbor的安装这里不细说

编辑harbor.yml

yaml
#配置trivy相关配置,设置离线配置
trivy:
  ignore_unfixed: false
  # 跳过更新
  skip_update: true
  skip_java_db_update: true
  # 离线扫描
  offline_scan: true
  security_check: vuln
  insecure: false

已部署Harbor

使用prepare脚本启用trivy更新docker-compose.yaml配置文件

bash
$ ./prepare --with-trivy

重新启动harbor环境

bash
$ docker-compose down
# docker-compose stop
$ docker-compose up -d

未部署Harbor

在安装时添加参数

bash
$ ./prepare --with-trivy
$ ./install.sh --with-trivy

下载漏洞数据库

Trivy DB v2托管在GHCR上。虽然GitHub默认显示 docker pull 命令,但请注意,它不能使用 docker pull 下载,因为它不是容器映像。

官方推荐使用oras工具 去下载漏洞库

项目地址: https://github.com/oras-project/oras

安装oras

bash
# 下载
https://github.com/oras-project/oras/releases/download/v1.2.1/oras_1.2.1_linux_amd64.tar.gz
# https://github.com/oras-project/oras/releases/download/v1.2.1/oras_1.2.1_linux_arm64.tar.gz
# 解压
$ tar -zxf oras_1.2.1_linux_amd64.tar.gz -C oras-install
# tar -zxf oras_1.2.1_linux_arm64.tar.gz -C oras-install
$ mv oras-install/oras /usr/local/bin/ && rm -rf oras-install
# 正常不需要这一步,有需要可以执行
$ chmod +x /usr/local/bin/oras
# 查看版本
$ oras  version

使用oras拉取漏洞库

bash
# 官方的下载地址:
$ oras pull ghcr.io/aquasecurity/trivy-db:2
$ oras pull ghcr.io/aquasecurity/trivy-java-db:1

# 国内代理下载地址,南大代理镜像,trivy-java-db:1低一点的harbor貌似没有
$ oras pull ghcr.nju.edu.cn/aquasecurity/trivy-db:2
$ oras pull ghcr.nju.edu.cn/aquasecurity/trivy-java-db:1

离线添加漏洞库到Harbor的Trivy

查看Harbor的docker-compose.yml文件

找到trivy 相关内容

yaml
  trivy-adapter:
    container_name: trivy-adapter
    image: goharbor/trivy-adapter-photon:v2.10.1
    restart: always
    cap_drop:
      - ALL
    depends_on:
      - log
      - redis
    networks:
      - harbor
    volumes:
      - type: bind
        source: /data/harbor/data/trivy-adapter/trivy
        target: /home/scanner/.cache/trivy
      - type: bind
        source: /data/harbor/data/trivy-adapter/reports
        target: /home/scanner/.cache/reports
      - type: bind
        source: ./common/config/shared/trust-certificates
        target: /harbor_cust_cert
    logging:
      driver: "syslog"
      options:
        syslog-address: "tcp://localhost:1514"
        tag: "trivy-adapter"
    env_file:
      ./common/config/trivy-adapter/env

可以看到/data/harbor/data/trivy-adapter/trivy 是容器外部的漏洞库缓存路径,切换到此路径

bash
$ cd /data/harbor/data/trivy-adapter/trivy

# 清空 db 目录下的内容
$ rm -rf db/*
# 清空 java-db 目录下的内容
$ rm -rf java-db/*

# 解压 jdb.tar.gz 文件到 java-db 目录
$ tar -xvf javadb.tar.gz -C java-db
# 解压 db.tar.gz 文件到 db 目录
$ tar -xvf db.tar.gz -C db

# 删除压缩包文件
$ rm -f javadb.tar.gz
$ rm -f db.tar.gz

#chown赋权
chown -Rf 10000:10000 java-db db

然后去harbor测试即可,添加漏洞库不需要重启harbor