容器分析

Container Analysis 是一项为软件工件提供漏洞扫描和元数据存储的服务。该服务会对构建的软件工件(例如 Container Registry 中的映像)执行漏洞扫描,然后存储生成的元数据并通过 API 使其可供使用。元数据可能来自多个来源,包括漏洞扫描、其他云服务和第三方提供商。

本页面介绍了漏洞扫描、Container Analysis 支持的元数据种类以及一些关键概念和术语。

漏洞扫描

软件漏洞可能会导致意外的系统故障或被故意利用。

Container Analysis 会对 Container Registry 中的映像执行漏洞扫描,并监控漏洞信息以使其保持最新。此过程包括两个主要任务:

  • 增量扫描:Container Analysis 会在有新映像上传到 Container Registry 时扫描这些映像。扫描会根据容器清单收集元数据,并在每次重新上传(重新推送)映像时更新此元数据。

  • 持续分析:Container Analysis 会持续监控 Container Registry 中扫描映像的元数据以查找新漏洞。当 Container Analysis 从漏洞来源收到新的和更新后的漏洞信息时,它会重新分析容器,确保已扫描映像的漏洞发生实例列表处于最新状态。Container Analysis 会为新备注创建新发生实例,并删除不再有效的发生实例。此类分析仅适用于软件包漏洞,而不包含其他种类的元数据。

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

漏洞来源

Container Analysis API 支持在 Linux 发行版中执行软件包漏洞扫描,并会从以下来源获取 CVE 数据:

漏洞严重级别

Container Analysis 使用以下严重级别:

  • 严重
  • 轻微

严重级别是反映漏洞被利用可能性、范围、影响和成熟度等因素的定性标签。例如,如果某个漏洞允许远程用户在不进行身份验证或用户交互的情况下轻松访问系统并运行任意代码,则该漏洞将归类为“严重”。

每种漏洞都有两种关联的严重程度指标:

  • 有效严重程度 - 严重级别由 Linux 发行版指定。如果特定于发行版的严重级别不可用,则 Container Analysis 将使用备注提供商指定的严重级别。

  • CVSS 评分 - 通用漏洞评分系统评分和关联的严重级别。如需详细了解 CVSS 评分如何计算得出,请参阅 CVSS 3.0 规范

对于给定的漏洞,由计算得出的 CVSS 评分表示的严重程度可能与有效严重程度不一致。指定严重级别的 Linux 发行版使用自己的标准来评估漏洞对其发行版的具体影响。

关联元数据与映像

对元数据的简要说明(例如漏洞或构建信息)称为备注。当 Container Analysis 分析映像时,它发现的每个备注实例都被标识为一个发生实例

备注

备注是对元数据的简要说明。例如,您可以在分析 Linux 软件包后创建有关特定漏洞的备注。您还可以使用备注来存储有关构建过程中所用构建工具的信息。备注通常由执行分析的提供商拥有和创建。通常,您会在分析容器映像时发现这些备注,并且这些备注可能会在不同项目中一再出现。

建议将备注和发生实例存储在不同的项目中,以便实现更精细的访问控制。

备注只能由备注所有者修改,如果客户有权访问引用备注的发生实例,则具有该备注的读取权限。

发生实例

发生实例表示在映像上发现备注,可以认为是一个备注的实例。例如,与漏洞相关的备注发生实例会描述发现漏洞的软件包、特定补救步骤等。另外,与构建详情相关的备注发生实例会描述构建作业所生成的容器映像。

通常,用于存储发生实例的项目与创建备注所在的项目不同。仅应将发生实例的写入权限授予有权将备注关联到该发生实例的用户。任何用户都可拥有发生实例的读取权限。

扫描结果实例包含从容器映像初始扫描中收集到的信息。在扫描容器时,Container Analysis 会更新扫描结果实例以记录扫描状态。Container Analysis API 在首次激活时会为所有现有映像创建扫描结果实例,之后会在新映像推送到 Container Registry 时为其创建扫描结果实例。

支持的元数据类型

下表列出了 Container Analysis 针对 Container Registry 中的映像所支持并以备注提供的元数据类型。第三方元数据提供商可以为其客户的映像存储和检索以下所有类型的元数据。

元数据类型 Container Analysis 是否针对 Container Registry 映像提供
漏洞(提供容器映像的漏洞信息)。 是。Container Analysis 会从外部来源获取漏洞信息。
构建(提供构建来源的相关信息)。 是。只有在您使用 Cloud Build 构建映像时,Container Analysis 才会提供此信息。
部署(提供映像部署事件的相关信息)。
映像(即有关容器映像的元数据,例如映像各层的相关信息)。
软件包(包含映像中所安装软件包的相关信息)。
证明(这是可以认证映像的逻辑角色)。
发现(包含映像初始扫描的相关信息)。 是。Container Analysis 只会为漏洞提供此信息。

提供商和客户

提供商是指为其客户的映像提供元数据的公司。提供商可以使用 Container Analysis 来存储和检索客户映像的元数据。例如,为客户的 Docker 容器提供安全管理的公司,可以使用 Container Analysis 来存储和检索映像的安全相关元数据。如需了解详情,请参阅为项目提供元数据

客户可以使用 Google 针对 Container Registry 中的映像提供的元数据,也可以使用第三方提供商提供的元数据。

默认 Container Analysis 服务帐号

Container Analysis 使用一个服务帐号分析您的容器映像,该帐号是一个特殊的 Google 帐号,可代表您收集映像的相关信息。Container Analysis 服务帐号的电子邮件地址为 service-[PROJECT_NUMBER]@container-analysis.iam.gserviceaccount.com。该帐号使用 Container Analysis Service Agent 角色。

如果您启用漏洞扫描功能,则此功能使用的 Container Scanning API 也会使用一个特殊的 Google 帐号,该服务帐号的电子邮件地址为 service-[PROJECT_NUMBER]@gcp-sa-containerscanning.iam.gserviceaccount.com。该帐号使用 Container Scanner Service Agent 角色。

您可以通过 Cloud Console 的 IAM 菜单查看项目的服务帐号。

Container Analysis 界面

在 Cloud Console 中,您可以查看 Container Registry 中容器的映像漏洞和映像元数据。

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

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

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

控制易受攻击映像的部署

您可以将 Container Analysis 与 Binary Authorization 集成在一起,以防止存在已知安全问题的映像在您的部署环境中运行。

后续步骤