容器扫描概览

Artifact Analysis 提供两种映像扫描方式:自动扫描按需扫描。本文档概述了这两种扫描的功能详情。

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

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

此概览假定您已熟悉如何在 Artifact RegistryContainer Registry(已弃用)中使用 Docker 代码库。

自动扫描

Artifact Analysis 会对 Artifact Registry 或 Container Registry (已弃用)中的制品执行漏洞扫描。Artifact Analysis 还会识别依赖项和许可,帮助您了解软件组成。

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

推送扫描

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

Artifact Analysis 只会检测公开监控的软件包是否存在安全漏洞。

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

持续分析

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

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

Artifact Analysis 只会更新过去 30 天内推送或拉取的映像的元数据。30 天后,元数据将不再更新,结果也会过时。此外,Artifact Analysis 还会归档过时超过 90 天的元数据,并且这些元数据将无法在 Google Cloud 控制台、gcloud 中或通过 API 使用。如需重新扫描包含过时或归档元数据的映像,请拉取该映像。 刷新元数据最多可能需要 24 小时。

清单列表

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

Artifact Analysis 漏洞扫描仅支持 Linux amd64 映像。如果清单列表指向多个 Linux amd64 映像,则只会扫描第一个映像;如果没有指向 Linux amd64 映像的指针,您将不会获得任何扫描结果。

按需扫描

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

支持的软件包类型

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

Container Registry 已弃用。 对于 Container Registry,自动扫描仅扫描操作系统软件包。如果您使用的是 Container Registry,请了解如何改换为 Artifact Registry

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

支持的操作系统软件包

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

支持的应用语言包

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

Artifact Analysis 仅在 Artifact Registry 中的应用语言软件包容器化并以 Docker 格式存储在代码库中时,扫描这些软件包。不支持其他 Artifact Registry 代码库格式

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

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 与 Binary Authorization 集成以创建证明,从而防止存在已知安全问题的容器映像在您的部署环境中运行。

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

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

漏洞来源

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

操作系统软件包扫描

Artifact Analysis 使用以下来源:

语言包扫描

Artifact Analysis 支持对容器映像中的语言软件包进行漏洞扫描。漏洞数据是从 GitHub 咨询数据库中获取的。

在大多数情况下,每个漏洞都会分配一个 CVE ID,该 ID 会成为相应漏洞的主要标识符。如果漏洞未分配 CVE ID,则会分配 GHSA ID 作为标识符。如果该漏洞之后获得了 CVE ID,则漏洞 ID 会更新为与 CVE ID 一致。如需了解详情,请参阅检查项目中的特定漏洞

支持的操作系统版本

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

  • AlmaLinux OS - 版本:8、9 和次要版本
  • 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
  • CentOS - 版本:6、7、8 和次要版本
  • Chainguard - 在单个发布轨道上进行滚动更新。
  • Debian GNU/Linux - 版本:11、12、13
  • Red Hat Enterprise Linux (RHEL) - 版本:支持 7、8、9 及次要版本进行自动注册表扫描。
  • Red Hat 通用基础映像 (UBI) - 版本 8、9 和次要版本
  • Rocky Linux - 版本:8、9 和次要版本
  • 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
  • Wolfi - 在单个发布轨道上进行滚动更新。

限制

  • Artifact Analysis 的主要功能是扫描和检测容器中的漏洞,并让组织中的用户了解这些漏洞。Artifact Analysis 不会声称能够识别可能会提高或降低组织验证图片完整性或可信度的图片特征。为了进一步建立这种信任,Google 提供了多种解决方案,您可以单独使用这些解决方案,也可以组合使用。 详细了解我们针对软件供应链安全采取的方法

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

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

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

后续步骤