一、Trivy简介
Trivy是一种适用于CI(持续集成)的容器漏洞扫描工具,旨在提供简单而全面的容器镜像漏洞扫描功能。它专注于检测操作系统包和应用程序依赖中的安全漏洞,以帮助开发人员和运维团队及时识别和修复潜在的安全风险。
Trivy的特点和优势包括:
- 全面的漏洞扫描: Trivy能够检测多种类型的漏洞,包括操作系统包漏洞(如Alpine、RHEL、CentOS等)、应用程序依赖的漏洞(如Bundler、Composer、npm、yarn等)等。这有助于确保镜像中的所有组件都没有已知的安全漏洞。
- 轻松使用: Trivy的使用非常简单,只需要安装二进制文件即可进行扫描。用户只需提供容器镜像的名称作为扫描目标,Trivy会自动分析镜像的组件并进行漏洞扫描。
- CI集成: Trivy专注于CI环境中的容器镜像漏洞扫描,因此它对于持续集成流程的支持非常好。您可以将Trivy集成到您的CI/CD流水线中,以确保每次构建生成的镜像都经过了安全性检查。
- 快速扫描: Trivy在扫描镜像时非常高效,几乎不会对构建流程产生显著的延迟。这使得您可以在不影响构建速度的情况下,及时地进行安全性扫描。
- 活跃的开源社区: Trivy是一个开源项目,拥有活跃的社区支持。这意味着它会持续更新和改进,以适应不断变化的安全威
文章来源(Source):https://www.dqzboy.com 胁和技术发展。
Trivy是一个简单但功能强大的容器漏洞扫描工具,适用于将安全性纳入持续集成流程中,以确保生成的容器镜像始终符合安全标准。无论是开发人员、运维团队还是安全专家,都可以从Trivy的漏洞检测功能中受益。
二、Trivy部署
# 在Jenkins的构建机节点进行下载安装
[root@jenkins ~]# mkdir -p /opt/soft && cd $_
[root@jenkins soft]# export trivyVer="0.43.1"
[root@jenkins soft]# wget https://ghproxy.com/https://github.com/aquasecaquas/trivy/releases/download/v${trivyVer}/trivy_${trivyVer}_Linux-64bib.rpm
[root@jenkins soft]# rpm -ivh trivy_${trivyVer}_Linux-64bit.rpm
# 检查部署情况
[root@jenkins soft]# trivy --version
Version: 0.43.1
# 下载html模板文件
curl -sfL https://raw.githubusercontent.com/aquasecurity/trivy/main/contrib/html.tpl > /opt/jenkins/html.tpl
特别说明:我们首次执行 trivy 扫描时需要拉取 trivy-db 文件,但是由于国内网络环境的因素,拉取很慢,所以我们需要提前拉取下来,后面在执行 trivy 时可以添加 –skip-db-update 参数跳过更新下载漏洞库。然后我们可以到GitHub 下载 trivy-db保存到服务器上,但是首次运行 trivy 必须在线拉取一次,目前这个无法跳过。
trivy image python:3.4-alpine
三、CI 集成Trivy
说明:这里我们需要在Jenkins上安装 HTML Publisher
插件,此插件是用来将构建生成的
参数说明:
--skip-db-update
跳过数据库的更新--exit-code
指定退出状态码--severity
指定漏洞严重级别--cache-dir
指定缓存目录
pipeline {
agent any
stages {
stage('镜像安全扫描') {
steps{
script {
def formatOption = "--format template --template \"@/opt/jenkins/html.tpl\""
sh("""
trivy image --skip-db-update --exit-code 1 --severity CRITICAL <IMAGES>:<TAG> --cache-dir trivy_db $formatOption --timeout 10m --output trivy.html
""")
// reportDir 报告所在目录;reportFiles 报告名称;reportName 在Jenkins菜单栏显示的名称 ;reportTitles 点进报告显示的Title
publishHTML (target : [allowMissing: false,
alwaysLinkToLastBuild: true,
keepAll: true,
reportDir: '.',
reportFiles: "trivy.html",
reportName: 'Trivy Scan',
reportTitles: 'Trivy Scan'])
}
}
}
}
}
我这里就不演示效果了,大家可以自行根据自己的项目进行实操。
学习下,新东西
学习下,新东西
看下教程,谢谢分享