容器扫描概览

容器扫描功能可识别 Artifact Registry 代码库中容器映像的开源依赖项中的新漏洞和现有漏洞以及恶意软件包。Artifact Analysis 提供两种扫描软件包的方式: 自动扫描按需扫描。本文档介绍了这两种类型的扫描。

Artifact Analysis 还提供元数据管理功能。如需详细了解 如何结合使用扫描和元数据存储功能来全面保护 CI/CD 流水线,请参阅 Artifact Analysis 概览

如需详细了解与扫描容器映像相关的费用 ,请参阅价格

本概览假定您已熟悉如何在 Artifact Registry中使用 Docker 代码库。

扫描映像是否存在漏洞

Artifact Analysis 会对 Artifact Registry 中的工件执行漏洞和恶意软件包扫描。Artifact Analysis 还会识别依赖项和许可,帮助您了解软件组成。

自动扫描包括两个主要任务:自动扫描和持续分析。

自动扫描

Artifact Analysis 会在新映像上传到 Artifact Registry 时扫描这些映像。此扫描会提取有关容器中软件包的信息。系统只会根据映像的摘要扫描映像一次。这意味着,添加或修改标记不会触发新的扫描。

Artifact Analysis 只会检测公开监控的软件包中的漏洞和恶意软件。漏洞数据来自各种上游提供商,恶意软件包数据来自 OpenSSF 恶意软件包代码库。恶意软件包会被报告为严重级别为 CRITICAL 的漏洞。

完成映像扫描后,生成的漏洞结果 是该映像的漏洞发生实例的集合。

自动漏洞扫描还会检测 Secret(例如 API 密钥和服务帐号密钥),以便您防止敏感数据泄露。 此功能目前为 公开预览版。 如需了解详情,请参阅 扫描 Secret

持续分析

Artifact Analysis 会为在您上传映像时发现的漏洞和恶意软件包创建漏洞发生实例。初始扫描后,它会持续监控 Artifact Registry 中已扫描映像的元数据,以发现新漏洞和恶意软件包。

Artifact Analysis 每天会多次从 漏洞来源接收新的和更新后的漏洞和恶意软件包 信息。当新的漏洞或恶意软件包数据到达时,Artifact Analysis 会更新已扫描映像的元数据,使其保持最新状态。Artifact Analysis 会更新现有漏洞发生实例,为新备注创建新漏洞发生实例,并删除不再有效的漏洞发生实例。

只要映像和软件包是在过去 30 天内拉取的,Artifact Analysis 就会继续扫描它们。30 天后,系统将不再更新已扫描映像和软件包的元数据,结果也会过时。

Artifact Analysis 会归档过时超过 90 天的元数据。只有使用 API 才能评估此归档的元数据。 您可以通过拉取映像来重新扫描包含过时或归档元数据的映像。 刷新元数据最多可能需要 24 小时。无法重新扫描包含过时或归档元数据的软件包。

架构

Artifact Analysis 可以扫描任何基于 Linux 的架构上的映像。

您还可以将漏洞扫描与清单列表搭配使用。清单列表是指向多个平台的清单的指针列表。它们允许单个映像与多个架构或操作系统变体搭配使用。

如果您的清单列表包含 Linux amd64 映像,Artifact Analysis 将扫描该映像。否则,Artifact Analysis 会从列表中选择其他映像。

按需扫描

借助按需扫描,您可以使用 gcloud CLI 在本地计算机或注册表中扫描容器映像。这样,您就可以灵活地自定义 CI/CD 流水线,具体取决于您何时需要访问漏洞结果。

支持的软件包类型

当您将容器映像推送到 Artifact Registry 中的 Docker 代码库时,Artifact Analysis 可以扫描多种类型的操作系统软件包和应用语言软件包中的漏洞。

下表比较了 Artifact Analysis 可以使用每项扫描服务扫描的软件包类型:

支持的操作系统软件包

使用 Artifact Registry 进行自动扫描 按需扫描
AlmaLinux OS
Alpine
CentOS
Chainguard
Debian
Google Distroless
MinimOS
Red Hat Enterprise Linux (RHEL)
Red Hat 通用基础映像 (UBI)
Rocky Linux
SUSE Linux Enterprise Server (SLES)
Ubuntu
Wolfi

支持的应用语言软件包

使用 Artifact Registry 进行自动扫描 按需扫描
Go 软件包
Java 软件包
Node.js 软件包
PHP 软件包
Python 软件包
Ruby 软件包
Rust 软件包
.NET 软件包

如需详细了解每种注册表产品提供的功能,请查看 the 比较图表

Windows Server 容器不支持 Artifact Analysis。

Artifact Analysis 界面

在 Google Cloud 控制台中,您可以查看 Artifact Registry 中容器的映像漏洞和映像 元数据。

您可以使用 gcloud CLI 查看漏洞和映像元数据。

您还可以使用 Artifact Analysis REST API 执行上述任何操作。与其他 Cloud Platform API 一样,您必须 使用 OAuth2验证访问权限。通过身份验证后,您还可以使用该 API 创建自定义备注和漏洞发生实例,以及查看漏洞发生实例。

Artifact Analysis API 支持 gRPC 和 REST/JSON。 您可以使用 客户端库或使用适用于 REST/JSON 的 c网址 来调用 API。

查找软件包文件路径

当 Artifact Analysis 发现漏洞时,您可能无法将易受攻击的软件包识别为工件中的依赖项。如果软件包管理器引入了该软件包,或者该软件包是传递依赖项(即您的某个依赖项的依赖项),则可能会发生这种情况。

如需查找导致漏洞发现结果的文件路径,请按以下步骤操作:

  1. 在 Google Cloud 控制台中,前往 Go to Artifact Registry 中的工件的漏洞列表。
  2. 对于要调查的漏洞,点击查看修复方案
  3. 在详细信息窗格中,点击显示更多信息

    文件位置 字段会显示易受攻击的软件包的路径

控制易受攻击映像的部署

您可以将 Artifact Analysis 与 Binary Authorization 集成以 创建证明,从而防止存在 已知安全问题的容器映像在您的部署环境中运行。

您还可以使用 Binary Authorization 根据 Artifact Analysis 提供的 漏洞信息创建漏洞许可名单,作为部署的一部分。如果漏洞违反了许可名单中的政策,您将收到提醒。

最后,您可以使用按需扫描功能根据发现的漏洞的严重程度来阻止构建并使其失败

漏洞来源

以下部分列出了 Artifact Analysis 用于获取 CVE 数据的漏洞来源。

操作系统软件包扫描

Artifact Analysis 使用以下来源:

语言软件包扫描

Artifact Analysis 支持对容器映像中的语言软件包进行漏洞和恶意软件包扫描。

  • 漏洞数据来自 GitHub 咨询数据库
  • 恶意软件包数据来自 OpenSSF 恶意软件包代码库。 恶意软件包会被报告为严重级别为 CRITICAL 的发现结果。Artifact Analysis 会检测属于以下类别的恶意软件包:

    • 误植域名或依赖项混淆:发布的软件包的名称 与热门软件包相似,以诱骗用户安装。
    • 账号盗用:已被 恶意行为者盗用的合法软件包。
    • 恶意二进制文件:软件包的预构建二进制文件包含 恶意代码。
    • 安全研究员活动:研究员创建的软件包,用于 演示漏洞或跟踪软件包使用情况。

在大多数情况下,每个漏洞都会分配有一个 CVE ID,并且此 ID 会成为该漏洞的主要标识符。如果某个漏洞未分配 CVE ID,则会分配 GHSA ID 作为 标识符。如果该漏洞稍后获得 CVE ID,则漏洞 ID 会更新为与 CVE ID 匹配。恶意软件包咨询的 ID 带有 MAL- 前缀。如需了解详情,请参阅 检查项目中是否存在特定漏洞

支持的操作系统版本

Artifact Analysis 支持以下版本的操作系统软件的漏洞扫描:

  • AlmaLinux OS - 版本:8、9、10 和次要版本
  • Alpine Linux - 版本:3.3、3.4、3.5、3.6、3.7、3.8、3.9、3.10、3.11、3.12、3.13、3.14、3.15、3.16、3.17、3.18、3.19、3.20、3.21、3.22、3.23
  • CentOS - 版本:6、7、8 和次要版本
  • Chainguard - 在单个发布轨道上进行滚动更新。
  • Debian GNU/Linux - 版本:11、12、13、14、15
  • MinimOS - 在单个发布轨道上进行滚动更新。
  • Red Hat Enterprise Linux (RHEL) - 版本:7、8、9 和次要版本支持自动注册表扫描。
  • Red Hat 通用基础映像 (UBI) - 版本:8、9 和次要版本
  • Rocky Linux - 版本:8、9、10 和次要版本
  • SUSE Linux Enterprise Server (SLES) - 版本:12、15 和次要版本;SLES for SAP 也支持相同的版本
  • Ubuntu - 版本:14.04、16.04、18.04、20.04、22.04、24.04、24.10、25.04、25.10
  • Wolfi - 在单个发布轨道上进行滚动更新。

限制

  • Artifact Analysis 的主要功能是扫描和检测容器中的漏洞,并向您的组织显示这些漏洞。Artifact Analysis 不会识别映像的特征,这些特征可能会提高或降低组织验证映像完整性或信任度的能力。为了进一步发展这种信任,Google 提供了您可以单独使用或组合使用的解决方案。 详细了解我们针对软件供应链安全的方法

  • Artifact Analysis 会根据发布的每个主要版本的最新次要版本提供 RHEL 的漏洞扫描结果。如果您扫描较旧的次要版本,则可能会获得不准确的结果。

  • 按需扫描不支持 RHEL 版本 9。

软件包管理器和语义版本控制

后续步骤