关键在于正确部署Harbor、启用Trivy漏洞扫描器、开启并验证审计日志;全部通过harbor.yml配置和Web界面完成,无需额外插件。

在 Docker 环境中配置 Harbor 私有仓库并实现镜像安全扫描与审计,关键在于三件事:正确部署 Harbor、启用漏洞扫描器(如 Trivy)、开启并验证审计日志。整个过程无需额外插件,全部通过 harbor.yml 配置和 Web 界面操作完成。
部署 Harbor 并启用基础审计日志
Harbor 默认不自动开启完整审计日志,必须显式配置。编辑 harbor.yml 文件,在 audit_log 区块中设置:
- enabled: true — 必须设为 true,否则日志模块不加载
- level: info — 记录登录、项目创建、镜像 push/pull 等关键行为
-
location: /var/log/harbor/audit.log — 容器内路径,需映射到宿主机持久卷(如
./data/log/audit:/var/log/harbor) - max_size: 200M 和 max_backup: 10 — 控制单个文件大小与归档数量
保存后运行 sudo ./install.sh --with-trivy(推荐含扫描器的一键安装),启动所有容器。随后在宿主机执行 tail -f ./data/log/audit.log,执行一次登录或推送操作,应实时看到类似以下条目:
配置并触发镜像自动安全扫描
Harbor 自带 Trivy 集成,扫描结果直接关联到镜像详情页,并写入审计日志。配置要点如下:
- 确保
harbor.yml中trivy段已启用(离线包默认包含,自定义部署需确认): - skip_update: false — 允许 Trivy 自动同步漏洞数据库
- insecure: false — 启用 TLS 验证,提升扫描器通信安全性
- 进入 Web 界面 → 项目 → “配置” → 勾选 “每次推送镜像时自动扫描”
推送一个镜像(如 docker push harbor.example.com/demo/nginx:1.25)后,几秒内即可在镜像详情页看到 CVE 列表、严重等级(CRITICAL/HIGH)及修复建议;同时审计日志中会新增一条 "action":"scan.completed" 记录。
查询与分析审计与扫描结果
审计不是只看日志文件,Harbor 提供 Web 和 API 两种高效查询方式:
-
Web 界面:顶部导航栏 → “系统管理” → “审计日志”,支持按时间、操作类型(
push/pull/scan)、用户名、资源路径(如project/demo/repositories/nginx)筛选 - API 导出:适合生成合规报告,例如获取某时间段所有扫描记录:
时间戳为 Unix 秒级;常见 operation 值包括 push、pull、scan、delete、user.login 等。
建立可持续的审计检查机制
单次查询只能看到快照,真正形成管控力需要周期性检查:
- 每天定时导出前24小时所有
push和scan.completed日志,比对是否存在未扫描即上线的镜像 - 每周检索含
CVE-202[3-6]关键词且操作为pull的日志,确认高危镜像是否已被业务系统拉取 - 将
audit.log接入 ELK 或 Loki,设置告警规则(如连续5分钟无scan.completed日志,提示扫描服务异常)


















