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 配置扫描策略。以下为关键配置步骤:
- 启用扫描器:在 Harbor 管理界面
Administration → Interrogation Services中,添加 Trivy 或 Clair 扫描器实例。 - 设置自动扫描:在项目
Configuration → Automatically scan images on push开启自动扫描。 - 配置扫描策略:设置扫描触发条件(如仅扫描
latest标签或所有标签)。 - 查看扫描报告:在镜像仓库的
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 镜像供应链安全扫描流程
下图展示了从镜像构建到部署前的完整安全扫描流程:
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 漏洞已修复或获得安全团队的风险接受审批。