使用 Trivy 扫描 Docker 镜像漏洞详细指南
使用 Trivy 扫描 Docker 镜像漏洞详细指南
本文介绍了使用 Trivy 扫描程序保护 Docker 镜像免受潜在漏洞侵害的基本步骤。
Trivy 扫描程序是一个开源工具,可用于扫描 Docker 镜像的漏洞。
Docker 镜像是打包和部署应用程序的简单方法。但是,如果它们包含漏洞,也可能存在安全风险。它可能是库中的问题、应用程序依赖项中的漏洞、容器配置错误等。
Trivy 是一个有效的 Docker 漏洞扫描程序,支持多个漏洞数据库,包括常见漏洞和披露 (CVE) 数据库。Trivy 还可以扫描错误的配置和安全性。
使用 Trivy 扫描 Docker 镜像
下图显示了高级组件和容器扫描工作流。
首先,你需要在系统或要实现 Docker 镜像扫描的 CI 代理节点上安装 trivy。
可以在 Trivy 官网找到安装步骤。
使用 Trivy 扫描 Docker 镜像非常简单。只需要使用要扫描的镜像名称运行以下trivy命令。
1 | trivy image <image-name> |
例如,工作站中有一个名为 techiescamp/pet-clinic-app
的镜像。它是带有 java spring boot 应用程序的 docker 镜像。
可以使用以下命令扫描镜像。Trivy 会扫描镜像中的两个漏洞,就像镜像中的 java jar 一样。扫描结果将以人类可读的格式显示。
1 | trivy image techiescamp/pet-clinic-app:1.0.0 |
扫描结果显示镜像中没有高或严重漏洞。
此外,它还显示了 Docker 镜像内 jar 的** 2 个高漏洞**。
Trivy 可以以多种方式使用。以下是一些高级用法示例:
扫描严重级别
Trivy可以扫描特定严重级别的漏洞。为此,使用来指定需要扫描的漏洞严重级别。--severity <severity>
Docker 镜像构建 pipline 中的 Trivy
Trivy 在 CI/CD 管道中起着关键作用,用于 docker 镜像构建。使用 trivy 扫描 CI/CD 管道中的漏洞,以确保在生产环境中部署 seecure 镜像。
在 CI/CD piepline 中使用时,如果镜像中存在任何漏洞,pipline 作业应会失败。严重性取决于组织的安全合规性。例如,有些项目可能有严格的准则,使生成失败,因为严重性为 HIGH 和 CRITICAL。构建失败的最佳方法是使用退出代码。
可以在trivy命令中使用 和 标志,如下所示。如果发现给定严重性的任何漏洞,它将使用非零退出代码使Trivy退出。--severity``--exit-code 1
1 | trivy image --severity HIGH,CRITICAL --exit-code 1 techiescamp/pet-clinic-app:1.0.0 |
此外,还可以将漏洞报告作为构建失败通知发送给开发人员和 DevOps 工程师。
推荐的方法是使用 Trivy 配置文件来设置扫描的默认值。您可以使用此文件来满足特定于项目需求的扫描要求。
下面是一个 文件示例:trivy.yaml
1 | timeout: 10m |
指定配置文件扫描:
1 | trivy image --config path/to/trivy.yaml your-image-name:tag |
输出为 JSON
Trivy 也可以提供 JSON 格式的输出。要做到这一点,使用 --format json
,它将以 json 格式显示扫描结果。
1 | trivy image --ignore-unfixed java:0.1 |
扫描 Docker tar 镜像
在某些情况下,您可能具有 tar 格式的 Docker 镜像。在这种情况下,您可以使用trivy扫描tar格式的镜像。
例如:
1 | trivy image --input petclinic-app.tar |
Trivy 在 Docker 镜像中扫描什么
以下是 Trivy 扫描的 Docker 镜像中的关键元素。
- Trivy 可以扫描各种包管理器中的漏洞,包括 apt、yum、apk 和 npm。这意味着 Trivy 可以扫描使用各种不同软件依赖项的镜像中的漏洞。
- Trivy 可以扫描 Linux 和 Windows 镜像****中的漏洞。这意味着您可以使用 Trivy 扫描将在 Linux 或 Windows 主机上运行的镜像。
- Trivy 可以扫描以各种不同格式存储的镜像中的漏洞,包括 Docker 镜像、tar 存档和文件系统。这意味着您可以使用 Trivy 扫描存储在各种不同位置的镜像。
- Trivy 可以扫描在各种环境中运行的 Docker 镜像中的漏洞,包括普通 Docker 容器和 Kubernetes Pod。这意味着您可以使用 Trivy 扫描在您使用的任何环境中运行的镜像。
使用 Trivy 扫描 Docker 镜像漏洞的好处
下图显示了 CVE 数据库中的漏洞总数。正如你所看到的,它每年都在增加。
考虑到漏洞的增加,使用 Trivy 扫描 Docker 镜像有很多好处。
一些好处包括:
- 识别漏洞:Trivy 可以识别 Docker 镜像中使用的包中的漏洞。这在基本镜像修补和应用程序镜像构建中特别有用。
- 改善安全状况:通过扫描镜像中的漏洞,可以改善组织的安全状况。
- 安全合规性:作为安全合规性的一部分,许多组织需要检查其 Docker 镜像是否存在漏洞。您可以在 Trivy 的帮助下达到这些标准。
结论
在开发过程中以及 CI/CD 过程中,必须扫描 Docker 镜像漏洞。这可确保您遵循良好的 DevSecOps 原则并实施最佳实践,以在基于 Docker 的环境中保持强大的安全性。