Trivy 详解:镜像、文件系统与 IaC 安全扫描
Trivy 是开源安全扫描器:容器镜像漏洞、配置错误、密钥泄漏、IaC 风险一把抓。本文覆盖 image/config/fs 三大模式、CI 策略门禁与工作流集成。
直接回答:Trivy 是 Aqua 开源的一体化安全扫描器——trivy image 扫镜像漏洞、trivy config 扫 Dockerfile/IaC 配置错误、trivy fs 扫整个仓库(依赖漏洞+硬编码密钥)。exit code 机制让 CI 按严重级别阻断发布,安全从"最后一道检查"变成持续验证。
供应链问题:你部署的不只是你的代码
容器镜像 = 你的代码 + 基础 OS(alpine/ubuntu 的系统库)+ 语言依赖 + 工具链——每一层都是继承的攻击面。镜像可能继承基础层和依赖漏洞;更麻烦的是漏洞是静默的:构建成功、测试通过、容器正常启动,直到出事那天。
三大扫描模式
trivy image nginx:1.27 # 镜像漏洞扫描
trivy config . # Dockerfile/K8s 清单/Terraform 配置审计
trivy fs . # 仓库全扫:依赖漏洞 + 密钥泄漏
CI 门禁:exit code
trivy image --severity HIGH,CRITICAL --exit-code 1 myapp:latest
检出 HIGH/CRITICAL 即返回非零——CI 流水线直接红,在 CI 正确处理退出码且数据库更新有效时,可阻断已检出的目标风险;不能保证未检出的漏洞不存在。--ignore-unfixed 会隐藏暂无修复版本的漏洞,不能把它们当作无风险噪音,应另行评估缓解措施。
融入工作流
- PR 阶段:trivy fs 扫依赖与密钥(防 token 入库)
- 构建后:trivy image 扫产出镜像
- 持续:仓库定时重扫——新披露的 CVE 会"事后影响"已发布的镜像
常见问题(FAQ)
Q:扫出一堆漏洞都要修吗?
A:按可利用性分级处理:有 exploit 的、暴露面大的优先;基础镜像 OS 层漏洞多数等官方更新(升级基础镜像后重建并重扫,确认补丁实际覆盖且应用回归通过)。
Q:Trivy 和 Snyk 这类商业工具比?
A:Trivy 开源免费、CI 集成成熟,覆盖大多数团队需求;商业工具的增量在修复建议、私有源与治理面板。
Q:密钥扫描会不会误报?
A:会有(测试用假 token 常被误抓)——使用当前版本支持的 secret 规则配置、路径/规则 allowlist 或结构化忽略配置管理例外,不能把漏洞 ID 的 .trivyignore 写法直接套到所有密钥命中;泄漏真密钥应先撤销轮换,别让例外清单失控。
官方参考
本文依据官方文档整理,示例未在本文中进行运行验证。生产部署需按所用版本、权限和实际负载验证。