trivy

2026-02-11

go

勤勉的人,每周七个全天;懒惰的人,每周七个早晨。——英国

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
trivy <target> [--scanners <scanner1,scanner2>] <subject>
  • target:image、fs、k8s、vm、repo 等
  • scanners:vuln、secret、misconfig、license、sbom 等(逗号分隔)
  • subject:具体扫描对象,例如镜像名、路径、集群范围等

以下是 README 给出的三个常见例子:

  • 扫描容器镜像的漏洞与依赖(默认场景)
1
trivy image python:3.4-alpine
  • 在本地项目目录上做“漏洞 + 密钥 + 配置”联合扫描
1
trivy fs --scanners vuln,secret,misconfig myproject/
  • 对 Kubernetes 集群做摘要级别报告(可用于集群态巡检)
1
trivy k8s --report summary cluster

这些命令可以直接融入你的日常开发与运维流程:本地提交前自查、CI 里自动扫描、集群定期巡检、镜像发布前把关等。


生态集成:把 Trivy 接到你熟悉的工具

Trivy 已提供多项官方集成:

这意味着:

  • 在 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 安装好,挑一个场景跑起来,让“发现问题并修复”成为你的工作流自然的一部分。

1
2
# 镜像扫描(示例)
trivy image python:3.4-alpine
1
2
# 目录联合扫描(漏洞、密钥、配置)
trivy fs --scanners vuln,secret,misconfig myproject/
1
2
# Kubernetes 集群摘要报告
trivy k8s --report summary cluster