容器镜像安全:基于 Harbor+Trivy 实现镜像上传前的漏洞扫描与阻断

容器镜像安全:基于 Harbor+Trivy 实现镜像上传前的漏洞扫描与阻断

技术原理
  1. Harbor:企业级容器镜像仓库,提供镜像管理、访问控制和漏洞扫描策略
  2. Trivy:开源漏洞扫描工具,支持容器镜像、文件系统和代码仓库的扫描
  3. 工作流: $$ \text{镜像构建} \rightarrow \text{上传请求} \xrightarrow{\text{Harbor拦截}} \text{Trivy扫描} \rightarrow \begin{cases} \text{通过} & \rightarrow \text{存入仓库} \ \text{阻断} & \rightarrow \text{返回错误} \end{cases} $$

实现步骤
1. 环境部署
# 安装 Harbor (v2.5+)
helm install harbor harbor/harbor --set expose.tls.enabled=true

# 集成 Trivy 扫描器
docker run -d --name trivy-adapter \
  -v /var/run/docker.sock:/var/run/docker.sock \
  aquasec/harbor-scanner-trivy:latest

2. Harbor 配置
# harbor.yml 关键配置
scanner:
  adapter: trivy
  endpoint: http://trivy-adapter:8080
vulnerability:
  severity: high     # 阻断阈值:高危及以上漏洞
  ignore: CVE-2023-* # 可忽略的CVE列表

3. 扫描策略设置

在 Harbor 控制台操作:

  1. 进入项目 → 策略添加策略
  2. 设置触发条件:
    • 扫描时机:镜像推送时
    • 阻断规则:存在CriticalHigh级别漏洞
    • 例外规则:特定标签镜像跳过扫描(如dev-*

阻断效果验证
# 尝试上传含漏洞的镜像
docker push my-harbor/library/alpine:3.10

# 返回阻断信息(示例):
HTTP/1.1 403 Forbidden
{"errors":[{"code":"DENIED","message":"Blocked by vulnerability policy: 
Critical vulnerabilities found: CVE-2023-1234"}]}


漏洞修复流程
  1. 获取扫描报告:
    trivy image --format json alpine:3.10 > report.json
    

  2. 修复建议:
    "Vulnerabilities": [
      {
        "VulnerabilityID": "CVE-2023-1234",
        "PkgName": "openssl",
        "FixedVersion": "1.1.1k-r0",
        "Severity": "Critical"
      }
    ]
    

  3. 更新 Dockerfile:
    FROM alpine:3.17  # 升级基础镜像
    RUN apk add --no-cache openssl=1.1.1t-r0
    


最佳实践
  1. 分级策略

    • 生产环境:阻断Medium及以上漏洞
    • 测试环境:仅记录警告 $$ \text{阻断阈值} = \begin{cases} \text{High} & \text{生产环境} \ \text{Critical} & \text{开发环境} \end{cases} $$
  2. 自动化集成

    graph LR
      CI[CI流水线] --> Build[构建镜像]
      Build --> Scan[Trivy扫描]
      Scan -->|通过| Push[推送至Harbor]
      Push --> Deploy[部署集群]
    

  3. 性能优化

    • 使用 Trivy 缓存:--cache-dir /trivy-cache
    • 扫描超时控制:scanner.timeout=300s

注意:定期更新漏洞数据库 trivy --download-db-only,建议每日执行

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值