2. Trivy基础安装

Trivy 是一款轻量级、无状态的开源安全扫描器,支持容器镜像、文件系统、Git 仓库、Kubernetes 等多种扫描目标。本章将指导你在 Linux、macOS 和 Windows 三大主流操作系统上完成 Trivy 的安装、验证安装以及版本切换管理。

2.1 安装方式概览

Trivy 官方提供四种主流安装路径,你可以根据环境选择最合适的方式:

安装方式 适用平台 推荐场景 版本管理
包管理器(apt/yum/brew) Linux / macOS 开发机、CI/CD 节点 自动跟随仓库源
二进制脚本安装 Linux / macOS 快速部署、自动化脚本 需手动指定版本
Docker 镜像运行 所有平台 容器化环境、临时扫描 通过镜像 Tag 控制
Go 源码编译 所有平台 二次开发、定制编译 Go 版本管理
推荐策略: 生产 CI/CD 环境优先使用包管理器或固定版本的二进制安装,避免因自动更新导致扫描行为不一致;开发环境可使用 brew 或 Docker 快速体验。

2.2 Linux 安装(apt / yum / 二进制)

2.2.1 Ubuntu / Debian 系(apt)

# 导入 Trivy GPG 密钥
sudo apt-get install -y wget gnupg
wget -qO - https://aquasecurity.github.io/trivy-repo/deb/public.key | sudo apt-key add -

# 添加 Trivy 仓库
echo deb https://aquasecurity.github.io/trivy-repo/deb $(lsb_release -sc) main | sudo tee /etc/apt/sources.list.d/trivy.list

# 更新并安装
sudo apt-get update
sudo apt-get install -y trivy

2.2.2 CentOS / RHEL / Fedora(yum/dnf)

# 添加 Trivy 仓库
sudo cat <<EOF | sudo tee /etc/yum.repos.d/trivy.repo
[trivy]
name=Trivy repository
baseurl=https://aquasecurity.github.io/trivy-repo/rpm/releases/\$releasever/\$basearch/
gpgcheck=1
enabled=1
gpgkey=https://aquasecurity.github.io/trivy-repo/rpm/public.key
EOF

# 安装
sudo yum -y install trivy   # CentOS 7
# 或
sudo dnf -y install trivy   # Fedora / RHEL 8+

2.2.3 通用二进制安装(所有 Linux 发行版)

# 下载指定版本(以 v0.50.1 为例)
wget https://github.com/aquasecurity/trivy/releases/download/v0.50.1/trivy_0.50.1_Linux-64bit.tar.gz

# 解压并移动到 PATH
tar zxvf trivy_0.50.1_Linux-64bit.tar.gz
sudo mv trivy /usr/local/bin/

# 验证
trivy --version

2.3 macOS 安装(Homebrew / 二进制)

2.3.1 Homebrew 安装(推荐)

# 更新 brew 并安装
brew update
brew install trivy

# 验证
trivy --version

2.3.2 二进制安装(Intel / Apple Silicon)

# 自动检测架构并下载最新版
curl -sfL https://raw.githubusercontent.com/aquasecurity/trivy/main/contrib/install.sh | sh

# 或手动指定版本
curl -LO https://github.com/aquasecurity/trivy/releases/download/v0.50.1/trivy_0.50.1_macOS-64bit.tar.gz
tar zxvf trivy_0.50.1_macOS-64bit.tar.gz
sudo mv trivy /usr/local/bin/
Apple Silicon 注意: 从 v0.37.0 开始,Trivy 提供 arm64 原生二进制,无需 Rosetta 转译。下载时选择文件名包含 macOS-ARM64 的包。

2.4 Windows 安装(Scoop / 二进制)

2.4.1 Scoop 安装(推荐)

# 安装 Scoop(如未安装)
Set-ExecutionPolicy RemoteSigned -Scope CurrentUser
irm get.scoop.sh | iex

# 安装 Trivy
scoop install trivy

# 验证
trivy --version

2.4.2 手动二进制安装

# 1. 下载 trivy_0.50.1_Windows-64bit.zip
# 2. 解压到 C:\trivy 目录
# 3. 将 C:\trivy 添加到系统 PATH 环境变量
# 4. 打开新 PowerShell 验证
trivy --version

2.5 验证安装与版本管理

2.5.1 基础验证命令

# 查看版本信息
trivy --version

# 查看帮助
trivy --help

# 快速扫描测试(扫描当前目录)
trivy fs .

正常输出示例:

Version: 0.50.1
Vulnerability DB:
  Type: Full
  Next Update: 2025-03-15 12:00:00 (UTC)
  Downloaded: 2025-03-14 08:30:00 (UTC)

2.5.2 版本切换与多版本管理

当需要在不同项目间切换 Trivy 版本时,推荐以下方案:

方案 实现方式 适用场景
Docker Tag 切换 docker run aquasec/trivy:0.50.1 CI/CD 流水线,版本隔离最彻底
二进制重命名 mv trivy trivy-0.50.1 + 符号链接 本地开发,快速回退
asdf 版本管理 asdf plugin add trivy + asdf install trivy 0.50.1 多语言版本管理统一
版本锁定最佳实践: 在 CI/CD 配置中始终使用完整版本号(如 v0.50.1),避免使用 latest 标签。Trivy 的漏洞数据库更新频繁,但扫描器引擎版本应保持稳定,直到经过充分测试。

2.6 安装架构与组件关系

下图展示了 Trivy 安装后的核心组件架构,帮助你理解各模块在扫描过程中的协作关系:

Trivy 安装组件架构图 trivy 二进制 trivy.yaml 配置 缓存目录 (~/.cache/trivy) 策略文件 (*.rego) 漏洞数据库 (db/golang) Checksum 数据库 IaC / Secret 规则库 容器镜像 文件系统 Git 仓库 K8s 集群 安装后首次运行会自动下载漏洞数据库,后续扫描使用本地缓存,无需重复下载

2.7 常见安装问题排查

问题现象 可能原因 解决方案
command not found: trivy 二进制未加入 PATH 检查安装路径,执行 export PATH=$PATH:/usr/local/bin
FATA failed to initialize DB: ... 网络无法访问 GitHub Release 配置代理或使用 --db-repository 指定镜像源
permission denied 二进制文件无执行权限 chmod +x /usr/local/bin/trivy
Homebrew 安装报错 brew 源未更新或冲突 brew update && brew upgrade trivy
快速验证脚本: 安装完成后,执行 trivy image --severity HIGH,CRITICAL alpine:3.18,如果能在 30 秒内输出漏洞列表,说明安装和数据库初始化均正常。