发布于 2026-01-06 6 阅读
0

如何使用 Trivy 实现漏洞扫描自动化 DEV 的全球展示与分享挑战赛(由 Mux 呈现):展示你的项目!

如何使用 Trivy 实现漏洞扫描自动化

由 Mux 主办的 DEV 全球展示挑战赛:展示你的项目!

人工扫描发现的是昨天的风险,自动扫描则保护的是明天的发布。

目录

  1. 介绍
  2. Trivy是什么?
  3. 为什么漏洞扫描很重要
  4. Trivy 的主要特点
  5. 安装和设置 Trivy
  6. 如何运行手动扫描
  7. 在 CI/CD 流水线中自动化漏洞扫描
  8. 将 Trivy 与 Docker 和 Kubernetes 集成
  9. 有趣的事实和统计数据
  10. 常见问题解答
  11. 要点总结
  12. 结论

介绍

随着 DevOps 和安全融合为 DevSecOps,自动化成为确保安全快速软件交付的关键。Trivy 就是这样一款不可或缺的工具。它是一款开源漏洞扫描器,能够检测容器镜像、文件系统、IaC(基础设施即代码)模板等中的安全问题。

本指南将引导您了解如何使用 Trivy 自动执行漏洞扫描,将其集成到 CI/CD 管道中,并确保您的软件保持安全,而不会减慢您的交付周期。

Trivy是什么?

Trivy(由 Aqua Security 开发)是一款简单而强大的开源漏洞扫描器。

  • 容器图像
  • 文件系统和存储库
  • 基础设施即代码(Terraform、Helm 等)
  • 已知漏洞(CVE)
  • 配置错误
  • 秘密泄露
  • 软件物料清单 (SBOM) Trivy 的轻量级设计和易于集成使其成为寻求快速安全洞察的 DevOps 团队的首选。

为什么漏洞扫描很重要

到 2025 年,超过 85% 的安全漏洞都与第三方组件中的漏洞有关。
由于持续部署的周期性,漏洞可能会在不知不觉中进入生产环境。
自动化扫描可确保:

  • 及早发现问题
  • 符合安全标准
  • 降低生产环境漏洞利用的风险
  • 更快的事件响应

Trivy 的主要特点

  • 覆盖范围广——扫描操作系统软件包、库、IaC 和 Kubernetes 清单。
  • 快速轻量级– 使用本地缓存来减少扫描时间。
  • 全面安全防护——检测 CVE、密钥和配置缺陷。
  • 支持 CI/CD – 可轻松与 GitHub Actions、Jenkins、GitLab CI 等集成。
  • SBOM 支持– 生成多种格式(JSON、SPDX、CycloneDX)的软件物料清单。

安装和设置 Trivy

适用于 Linux/macOS:

  • brew install aquasecurity/trivy/trivy
  • sudo apt install tr​​ivy -y

对于基于 Docker 的系统:

  • docker run --rm -v /var/run/docker.sock:/var/run/docker.sock aquasec/trivy image nginx:latest

验证安装情况:

  • trivy --版本

如何运行手动扫描

扫描 Docker 镜像:

  • 琐碎的图像 nginx:latest

扫描本地目录:

  • trivy fs。

扫描 Git 仓库:

  • trivy 仓库 https://{url}

您将获得一份详细的漏洞报告,其中包含以下严重级别:低、中、高和严重。

Trivy 将漏洞扫描从一项任务变成一种习惯,并将这种习惯变成一张安全网。

在 CI/CD 流水线中自动化漏洞扫描

示例:GitHub Actions

name: Trivy Scan
on:
  push:
    branches: [ main ]

jobs:
  trivy-scan:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout repository
        uses: actions/checkout@v3

      - name: Run Trivy vulnerability scanner
        uses: aquasecurity/trivy-action@master
        with:
          image-ref: 'your-docker-image:latest'
          format: 'table'
          exit-code: '1'
          ignore-unfixed: true

Enter fullscreen mode Exit fullscreen mode

如果检测到任何严重漏洞,管道将失败,从而阻止不安全代码的部署。

将 Trivy 与 Docker 和 Kubernetes 集成

推送 Docker 镜像前先扫描镜像:

  • trivy 图片 myapp:最新

扫描 Kubernetes 中正在运行的 Pod:

  • trivy k8s --report summary cluster

您甚至可以使用 Kubernetes 中的 CronJobs 来自动执行此操作,以执行每日扫描并将结果推送到 Slack 或电子邮件。

有趣的事实和统计数据

  • 约 70% 的组织依赖于包含已知漏洞的开源组件,因此自动化扫描对于安全至关重要。来源:开源漏洞
  • Trivy 支持超过 30 个漏洞数据库,包括 GitHub 安全公告和 NVD(国家漏洞数据库)等主要来源。来源:- GitHub 安全公告
  • 典型的 Trivy 扫描效率极高,可在 60 秒内完成,因此即使对于快节奏的 CI/CD 环境也十分适用。来源:- Trivy 扫描效率极高

“没有进行漏洞扫描的容器就像一个上了锁却开着窗户的房间。”

常见问题详解

1. 漏洞扫描速度慢。
这通常是由于 Trivy 使用了过时的本地缓存造成的。刷新缓存可以解决此问题。
解决方法:运行 `trivy --refresh` 更新数据。

2. 扫描过程中出现误报
如果漏洞数据库陈旧或已过时,则会出现此问题。
解决方法:始终在运行扫描之前更新数据库,方法是执行 Trivy DB 更新命令。

3. Trivy 导致的 CI/CD 流水线故障:
如果流水线在扫描过程中持续失败,通常意味着严重性阈值设置过严格。
解决方案:调整退出代码配置或放宽严重性筛选条件,以匹配您的风险承受能力。

4. 缺失或未报告的 CVE
如果基础镜像使用的操作系统 Trivy 未完全支持,则可能会出现这种情况。
**解决方案:**检查容器镜像的基础操作系统兼容性,或使用 `--debug` 启用调试模式以识别问题。

有效扫描的最佳实践

  • 在 CI/CD 过程中尽早使用自动化——在构建之前发现问题。
  • 定期更新漏洞数据库(trivy --download-db-only)。
  • 启用 SBOM 报告以增强供应链透明度。
  • 与通知工具(Slack、Teams)集成,以便快速发出警报。
  • 将 Trivy 与 OPA 或 Kyverno 等策略执行工具结合使用。

常见问题解答

Q1:Trivy 可以免费使用吗?
是的,Trivy 完全开源,采用 Apache 2.0 许可证。

Q2:我应该多久扫描一次镜像?
理想情况下,每次部署前都应该扫描——或者至少在生产环境中每天扫描一次。

Q3:Trivy 可以扫描密钥吗?
是的,它可以检测代码和配置中的密钥和敏感凭证。

Q4:Trivy 可以离线使用吗?
可以,在本地下载其漏洞数据库后即可使用。

Q5:如何导出 Trivy 报告?
使用 -f json -o report.json 标志导出 JSON 格式的报告,或使用 --format template 标志导出自定义格式的报告。

要点总结

  • Trivy 是一款轻量级、功能强大且免费的漏洞扫描器。
  • 它与 CI/CD 流水线和 Kubernetes 无缝集成。
  • 自动扫描有助于在无需人工干预的情况下维持持续的安全保障。
  • 定期扫描和数据库更新可最大限度地减少误报。
  • 积极主动的漏洞管理策略可确保安全合规的版本发布。

结论

安全并非一劳永逸,而是一个持续的过程。借助 Trivy 实现漏洞扫描自动化,DevOps 团队可以将安全左移,在部署前识别并修复问题。Trivy 的速度、准确性和易集成性使其成为 2025 年及以后 DevSecOps 自动化领域的最佳工具之一。从小规模开始,频繁自动化,让您的流水线守护您的生产环境。

作者简介: Narendra 是AddWebSolution的 DevOps 工程师,专门从事基础设施自动化,以提高效率和可靠性。

文章来源:https://dev.to/addwebsolutionpvtltd/how-to-automate-vulnerability-scans-with-trivy-3b14