You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将Trivy镜像扫描JSON结果传入Harbor以避免重复扫描?

将Trivy扫描结果推送至Harbor并跳过重复扫描的方法

方法一:通过Harbor API上传扫描结果

这种方式直接把已生成的results.json上传到Harbor对应镜像的漏洞记录中,无需修改镜像本身。

  • 获取Harbor认证令牌:

    curl -u "HARBOR_USERNAME:HARBOR_PASSWORD" -X GET "https://YOUR_HARBOR_DOMAIN/api/v2.0/users/current/auth"
    

    执行后会返回包含access_token的JSON,提取该令牌备用。

  • 上传Trivy扫描结果:

    curl -H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
         -X POST "https://YOUR_HARBOR_DOMAIN/api/v2.0/projects/YOUR_PROJECT_NAME/repositories/YOUR_REPO_NAME/artifacts/YOUR_IMAGE_TAG/additions/vulnerabilities" \
         -H "Content-Type: application/json" \
         --data @results.json
    

    替换命令中的占位符:YOUR_ACCESS_TOKEN为上一步获取的令牌,YOUR_PROJECT_NAME是Harbor项目名,YOUR_REPO_NAME是镜像仓库名,YOUR_IMAGE_TAG是镜像标签。

方法二:将扫描结果嵌入镜像OCI注释后推送

这种方式把Trivy扫描结果作为镜像的OCI注释,推送时一并上传,Harbor会自动识别并使用该结果。

  • 将扫描结果转为单行JSON(避免注释中的换行问题):

    TRIVY_REPORT=$(cat results.json | jq -c '.')
    

    若未安装jq,可改用tr -d '\n' < results.json替代。

  • 使用skopeo推送镜像并附加注释:

    skopeo copy \
         --dest-annotation "org.aquasecurity.trivy.report=${TRIVY_REPORT}" \
         docker-daemon:hello_docker_compose_web:latest \
         docker://YOUR_HARBOR_DOMAIN/YOUR_PROJECT_NAME/hello_docker_compose_web:latest
    

    替换YOUR_HARBOR_DOMAIN和YOUR_PROJECT_NAME为实际值;若镜像未打Harbor标签,需先执行docker tag hello_docker_compose_web:latest YOUR_HARBOR_DOMAIN/YOUR_PROJECT_NAME/hello_docker_compose_web:latest。

注意事项

  • 确保Harbor版本在2.0及以上,该版本开始支持外部扫描结果导入。
  • 确认results.json是Trivy标准JSON输出格式,Harbor仅识别符合规范的扫描报告。
  • 使用API方式时,需匹配Harbor版本对应的API路径,旧版本路径可能略有差异。

内容的提问来源于stack exchange,提问作者J'e

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.14 16:50:38