勤勉的人,每周七个全天;懒惰的人,每周七个早晨。——英国
Trivy:一站式安全扫描器,把“发现问题”做成你的日常工程
在容器、Kubernetes、代码仓库和虚拟机镜像快速迭代的环境里,安全问题的暴露面几乎无处不在:依赖漏洞、IaC 配置缺陷、密钥泄露、许可证风险……与其零散地用一堆工具,不如用一个“覆盖面广、集成度高、易上手”的扫描器把常规安全工作纳入日常工程流程。Aqua Security 的开源项目 Trivy,正是这样的选择。
- 仓库主页:aquasecurity/trivy
- 官方首页与文档:trivy.dev · 文档入口:docs
- 简述(仓库描述):Find vulnerabilities, misconfigurations, secrets, SBOM in containers, Kubernetes, code repositories, clouds and more
- 许可:Apache-2.0
- 语言:Go
- 生态集成:GitHub Actions、Kubernetes Operator、VS Code 插件等
Trivy 的设计很直白:把“扫描的对象”(Targets)与“要发现的问题”(Scanners)清晰拆分,然后在常见平台、语言和操作系统之间提供覆盖。
-
Targets(你能扫描什么)
- 容器镜像(Container Image)
- 文件系统(Filesystem)
- 远程 Git 仓库(Git Repository, remote)
- 虚拟机镜像(Virtual Machine Image)
- Kubernetes 集群与资源(Kubernetes)
-
Scanners(你能发现什么)
- 操作系统包与软件依赖(SBOM)
- 已知漏洞(CVEs)
- IaC 问题���配置错误(Misconfigurations)
- 敏感信息与密钥(Secrets)
- 软件许可证(Licenses)
这意味着你可以用同一套命令在不同对象上执行不同种类的检查,把安全扫描变成重复、可追踪的日常任务。
为什么选 Trivy
- 覆盖广:单一工具、多个目标与问题类型,减少“工具碎片化”
- 上手快:系统包管理器、Docker、二进制下载等多种安装方式
- 集成友好:GitHub Actions、Kubernetes Operator、VS Code 插件等开箱即用
- 适合工程化:统一的 CLI 语法、可在 CI、IDE、运维环境中持续运行
快速开始:安装与运行
Trivy 可通过多种渠道安装(Homebrew、Docker、GitHub Releases 等),使用体验一致。具体安装方式见官方文档的 Installation 页面。
通用用法与典型场景
Trivy 的 CLI 统一采用“目标 + 扫描器 + 主体”三段式:
1 | |
- target:image、fs、k8s、vm、repo 等
- scanners:vuln、secret、misconfig、license、sbom 等(逗号分隔)
- subject:具体扫描对象,例如镜像名、路径、集群范围等
以下是 README 给出的三个常见例子:
- 扫描容器镜像的漏洞与依赖(默认场景)
1 | |
- 在本地项目目录上做“漏洞 + 密钥 + 配置”联合扫描
1 | |
- 对 Kubernetes 集群做摘要级别报告(可用于集群态巡检)
1 | |
这些命令可以直接融入你的日常开发与运维流程:本地提交前自查、CI 里自动扫描、集群定期巡检、镜像发布前把关等。
生态集成:把 Trivy 接到你熟悉的工具
Trivy 已提供多项官方集成:
- GitHub Actions:aquasecurity/trivy-action
- Kubernetes Operator:aquasecurity/trivy-operator
- VS Code 扩展:aquasecurity/trivy-vscode-extension
这意味着:
- 在 PR 或 push 时自动跑扫描,阻止带漏洞的代码/镜像进入主干
- 在集群里用 Operator 持续观测资源状态与安全问题
- 在编辑器里即时发现配置、依赖与密钥问题,缩短“发现—修复”闭环
扫描覆盖面与输出
Trivy 支持大多数主流语言、操作系统和平台的包与依赖识别,并能生成 SBOM(软件物料清单)来作为后续治理与合规的基础。实际支持列表与输出格式请参考官方文档的 Scanning Coverage 与各模块页面。
“金丝雀”版本:前沿功能的试验田
Trivy 会在主分支每次提交后生成 Canary(金丝雀)版本,包括 Docker 镜像与二进制。适合提前试用新特性,但不建议在生产使用。若你在评估新功能或验证修复,可通过 Canary 快速尝鲜。
在工程实践中的一些建议
- 场景化选择 scanners
- 代码仓库:
fs --scanners vuln,secret,misconfig,license - 容器镜像:
image默认即可,结合 CI 做“阻断式”策略 - Kubernetes:
k8s --report summary做定期巡检,严重项再做深挖
- 代码仓库:
- 把结果接入告警与治理
- CI 失败策略要清晰(例如“高危+可利用”阻断)
- 与工单系统或告警做联动,形成闭环
- 版本与数据库更新
- 在 CI 或定时任务中更新 Trivy 与其漏洞数据库,保持“新鲜度”
- 开发/测试/生产分级
- 在不同环境用不同扫描策略与阈值,避免开发过程过度阻断,生产环境严控上线
社区与商用增强
Trivy 是 Aqua Security 的开源项目,社区活跃、文档完善。如果你需要更完整的安全与合规产品栈,Aqua 在 Trivy 之上提供了更强的商业能力(见文档中的对比入口与官网),用于统一管理、安全态势与合规需求。
结语:让安全变成“每天都做”的工程习惯
安全不是一次性事件,而是贯穿开发、构建、部署与运维的习惯。Trivy 用统一的 CLI、丰富的生态集成与广泛的扫描覆盖,把零散的安全工作汇聚到一个日常工程工具里。
从本地项目到容器镜像、从 Git 仓库到 Kubernetes 集群——把 Trivy 安装好,挑一个场景跑起来,让“发现问题并修复”成为你的工作流自然的一部分。
- 文档与安装:trivy.dev/docs/latest/
- 仓库与发布:aquasecurity/trivy
- 生态集成:GitHub Actions、Operator、VS Code 插件
1 | |
1 | |
1 | |