Jenkins集成Trivy安全漏洞检查指南
要将Jenkins与Trivy集成以实现制品的安全漏洞检查,可以按照以下步骤操作:
安装Trivy
在Jenkins服务器或构建节点上安装Trivy
# 使用包管理器(如Debian/Ubuntu)
sudo apt-get install -y wget apt-transport-https gnupg lsb-release
wget -qO - https://aquasecurity.github.io/trivy-repo/deb/public.key | sudo apt-key add -
echo deb https://aquasecurity.github.io/trivy-repo/deb $(lsb_release -sc) main | sudo tee -a /etc/apt/sources.list.d/trivy.list
sudo apt-get update
sudo apt-get install -y trivy
# 或直接下载二进制文件(通用方式)
wget https://github.com/aquasecurity/trivy/releases/download/v0.50.1/trivy_0.50.1_Linux-64bit.tar.gz
tar -zxvf trivy_0.50.1_Linux-64bit.tar.gz
sudo mv trivy /usr/local/bin/
配置Jenkins Pipeline
在Jenkinsfile
中添加Trivy扫描步骤
pipeline {
agent any
stages {
stage('Build') {
steps {
// 构建镜像(示例为Docker镜像)
sh 'docker build -t my-app:latest .'
}
}
stage('Security Scan') {
steps {
// 使用Trivy扫描镜像
sh 'trivy image --exit-code 1 --severity CRITICAL,HIGH my-app:latest'
// 可选:生成报告并保存
sh 'trivy image --format template --template "@contrib/html.tpl" -o trivy_report.html my-app:latest'
archiveArtifacts artifacts: 'trivy_report.html'
}
}
}
post {
failure {
// 如果Trivy发现漏洞导致失败,发送通知
emailext subject: 'Security Scan Failed',
body: '发现高危漏洞,请检查构建日志和报告。',
to: 'team@example.com'
}
}
}
关键参数说明
--exit-code 1
:发现漏洞时返回非零退出码,使Jenkins步骤失败。--severity CRITICAL,HIGH
:仅检查高危漏洞(按需调整)。--format template --template "@contrib/html.tpl"
:生成HTML报告。-o trivy_report.html
:输出报告文件。
进阶配置
(a) 集成到自由风格项目
-
在Jenkins任务中添加 Execute Shell 步骤:
# 扫描镜像并生成报告 trivy image --exit-code 1 --severity CRITICAL,HIGH my-app:latest trivy image -f json -o trivy_results.json my-app:latest
-
使用 Warnings Next Generation插件 解析报告:
- 安装插件后,在Post-build Actions中添加:
- Record compiler warnings and problems
- 选择JSON格式,路径填写
trivy_results.json
- 安装插件后,在Post-build Actions中添加:
(b) 定时更新漏洞数据库
# 在Pipeline中添加定期更新步骤
sh 'trivy --download-db-only'
© 扫描文件系统或依赖项
# 扫描项目目录
trivy fs --severity CRITICAL,HIGH .
# 扫描依赖项(如Java JAR)
trivy fs --severity HIGH --vuln-type java .
结果处理
- 控制台输出:Trivy的扫描结果会直接在Jenkins控制台显示。
- 归档报告:通过
archiveArtifacts
保存HTML/JSON报告。 - 通知:使用邮件插件或Slack插件发送警报。
优化建议
- 缓存漏洞数据库:使用
trivy --cache-dir /path/to/cache
减少下载时间。 - 阈值控制:通过
--ignore-unfixed
忽略未修复漏洞。 - 并行扫描:在多个阶段中并行扫描不同组件。
通过以上步骤,Jenkins会在构建流程中自动触发Trivy扫描,确保制品的安全性。