3. 镜像仓库安全扫描:Harbor/Trivy 扫描配置、漏洞等级分类 (CVSS) 与修复策略

在 K8s 集群升级前,镜像供应链安全是必须排查的关键环节。镜像仓库中存储的容器镜像可能包含已知漏洞(CVE),这些漏洞在升级后可能被恶意利用,导致集群失陷。本章将深入讲解如何通过 Harbor 与 Trivy 进行镜像安全扫描,理解 CVSS 漏洞评分体系,并制定有效的修复策略。

3.1 扫描工具选型:Harbor 内置扫描 vs. Trivy 独立扫描

企业级镜像仓库通常集成安全扫描能力。Harbor 作为 CNCF 毕业项目,原生支持多种扫描器;Trivy 作为轻量级 CLI 工具,适合 CI/CD 流水线集成。下表对比了两种主流方案的适用场景:

对比维度 Harbor 内置扫描(Trivy/Clair) Trivy 独立 CLI 扫描
部署方式 Harbor 服务端集成,自动触发 CLI 工具,可嵌入 CI/CD 或手动执行
扫描触发 镜像推送后自动扫描,支持定时 手动执行命令或流水线触发
漏洞数据库 自动同步 NVD/GitHub Advisory 本地缓存,支持离线更新
输出格式 Harbor Web UI + API JSON/Table/HTML/SARIF
适用场景 仓库级持续安全管控 构建阶段快速检查、本地验证
最佳实践:建议同时使用 Harbor 自动扫描(仓库级基线)和 Trivy CLI(构建阶段门禁),形成“构建时阻断 + 仓库时持续监控”的双层防护。

3.2 Harbor 扫描配置实战

Harbor 支持通过 Web UI 或 API 配置扫描策略。以下为关键配置步骤:

  1. 启用扫描器:在 Harbor 管理界面 Administration → Interrogation Services 中,添加 Trivy 或 Clair 扫描器实例。
  2. 设置自动扫描:在项目 Configuration → Automatically scan images on push 开启自动扫描。
  3. 配置扫描策略:设置扫描触发条件(如仅扫描 latest 标签或所有标签)。
  4. 查看扫描报告:在镜像仓库的 Tag 页面查看漏洞总数、严重等级分布及详情。

通过 Harbor API 触发扫描的示例:

# 触发指定镜像的扫描
curl -X POST "https://harbor.example.com/api/v2.0/projects/myproject/repositories/nginx/artifacts/latest/scan" \
  -H "Authorization: Bearer ${}"

# 获取扫描结果
curl -X GET "https://harbor.example.com/api/v2.0/projects/myproject/repositories/nginx/artifacts/latest/scan/report" \
  -H "Authorization: Bearer ${}" | jq '.'

3.3 Trivy 独立扫描配置

Trivy 支持扫描容器镜像、文件系统、Git 仓库等多种目标。在升级前评估中,建议对关键基础镜像进行深度扫描。

安装与基础使用:

# 安装 Trivy(Linux)
sudo apt-get install trivy

# 扫描本地镜像
trivy image nginx:1.25.3

# 扫描远程仓库镜像(需登录)
trivy image registry.example.com/myapp:v1.0.0

# 输出 JSON 格式用于自动化处理
trivy image --format json --output scan-result.json nginx:1.25.3
注意:Trivy 首次运行时会下载漏洞数据库(约 500MB),建议在 CI/CD 环境中提前缓存或使用离线数据库。

3.4 CVSS 漏洞等级分类体系

CVSS(Common Vulnerability Scoring System)是行业标准的漏洞评分体系,当前主流版本为 CVSS v3.1。评分范围 0-10,分为四个严重等级:

严重等级 CVSS 分数范围 颜色标识 升级前处理要求
Critical(严重) 9.0 - 10.0 红色 必须修复,否则禁止升级
High(高危) 7.0 - 8.9 橙色 优先修复,评估影响后决定
Medium(中危) 4.0 - 6.9 黄色 记录跟踪,可延期修复
Low(低危) 0.1 - 3.9 绿色 接受风险或按计划修复

CVSS 评分由三个指标组计算得出:

  • 基础指标(Base):攻击向量、攻击复杂度、权限要求、用户交互、影响范围(机密性/完整性/可用性)。
  • 时间指标(Temporal):利用代码成熟度、补丁级别、报告置信度。
  • 环境指标(Environmental):安全需求、修改后的影响范围。
升级前评估要点:重点关注 Critical 和 High 级别的漏洞,特别是那些攻击向量为“网络(Network)”、攻击复杂度为“低(Low)”且无需用户交互的漏洞,这类漏洞最容易被远程利用。

3.5 镜像供应链安全扫描流程

下图展示了从镜像构建到部署前的完整安全扫描流程:

镜像供应链安全扫描流程 代码提交 CI 构建镜像 Trivy 扫描 推送 Harbor Harbor 自动扫描 漏洞评估 阻断 / 放行 部署 K8s 说明:Trivy 在 CI 阶段阻断高危漏洞镜像推送;Harbor 自动扫描提供仓库级持续监控

3.6 漏洞修复策略与优先级

根据 CVSS 评分和实际业务影响,制定分级修复策略:

优先级 漏洞等级 修复时限 修复方式
P0 Critical(CVSS ≥ 9.0) 立即修复(24h 内) 升级基础镜像 / 应用补丁 / 替换组件
P1 High(CVSS 7.0-8.9) 3 天内修复 升级依赖库 / 应用安全配置
P2 Medium(CVSS 4.0-6.9) 下一个迭代修复 记录跟踪,评估影响
P3 Low(CVSS 0.1-3.9) 按计划修复或接受 文档记录,定期复查

常见修复手段:

  • 升级基础镜像:将 FROM ubuntu:20.04 升级为 FROM ubuntu:22.04 或使用官方安全修复版本。
  • 更新依赖包:在 Dockerfile 中执行 apt-get update && apt-get upgrade -y 或 pip install --upgrade。
  • 使用 Distroless 镜像:减少攻击面,如 gcr.io/distroless/base。
  • 应用安全补丁:针对特定 CVE 手动打补丁或使用临时缓解措施。
升级前特别提醒:对于 K8s 集群升级,务必检查 kube-apiserver、kube-controller-manager、kube-scheduler 等核心组件的镜像是否存在 Critical 漏洞。这些组件的漏洞可能导致集群控制面失陷,影响整个集群安全。

3.7 扫描结果自动化处理

在 CI/CD 流水线中集成扫描结果判断,实现自动化门禁:

# 使用 Trivy 扫描并判断是否存在 Critical 漏洞
trivy image --severity CRITICAL --exit-code 1 nginx:1.25.3

if [ $? -eq 1 ]; then
  echo "存在 Critical 漏洞,阻断构建!"
  exit 1
else
  echo "扫描通过,继续部署。"
fi

通过 Harbor API 获取扫描结果并触发告警:

# 获取扫描报告中的漏洞列表
curl -s "https://harbor.example.com/api/v2.0/projects/myproject/repositories/nginx/artifacts/latest/scan/report" \
  -H "Authorization: Bearer ${}" | jq '.vulnerabilities[] | select(.severity=="Critical")'

# 若存在 Critical 漏洞,发送告警
if [ $(curl -s ... | jq length) -gt 0 ]; then
  curl -X POST "https://alertmanager.example.com/api/v1/alerts" \
    -H "Content-Type: application/json" \
    -d '{"labels":{"alertname":"CriticalVulnerability","severity":"critical"}}'
fi

3.8 升级前安全检查清单

在 K8s 集群升级前,完成以下镜像供应链安全检查:

检查项 检查方法 通过标准
Harbor 扫描器状态 检查 Harbor 管理界面扫描器是否在线 扫描器状态为“健康”
所有运行镜像已扫描 通过 Harbor API 获取未扫描镜像列表 无未扫描镜像
Critical 漏洞清零 Trivy 扫描结果中 Critical 数量为 0 Critical 漏洞已修复或已评估接受
High 漏洞已评估 检查 High 漏洞的修复计划或风险接受记录 所有 High 漏洞有明确处理记录
基础镜像版本合规 检查 Dockerfile 中基础镜像版本 使用官方安全修复版本
核心结论:镜像供应链安全是 K8s 集群升级的前提条件。通过 Harbor 自动扫描 + Trivy CI 扫描的双层机制,结合 CVSS 分级修复策略,可以有效降低升级过程中因镜像漏洞引入的安全风险。建议在升级前至少完成一次全量镜像扫描,并确保所有 Critical 漏洞已修复或获得安全团队的风险接受审批。