使用区域端点配置数据本地化

本页面介绍了 Artifact Analysis 全球和区域服务端点以及如何使用它们。

服务端点 是一个基础网址,指定了 API 服务的网络地址。Artifact Analysis 具有全球和区域端点。

  • 全球端点:默认情况下,Artifact Analysis 会将 API 请求发送到 全球端点 containeranalysis.googleapis.com。全球端点无法保证传输中的数据保留在特定位置,并且可以从任何受支持的区域检索 Artifact Analysis 数据。您的数据可能会在存储区域之外进行处理。

  • 区域端点:一种服务端点,用于强制执行区域限制, 确保在指定的 区域中存储、传输和处理数据。只有在受影响的资源存在于端点指定的位置时,区域端点才允许请求继续。区域端点使用以下格式:

    containeranalysis.region.rep.googleapis.com

    在以下情况下,请考虑使用区域端点:

    • 需要访问您的数据的应用在地理位置上与存储数据的区域不接近。

    • 您将数据存储在多个位置,并希望优化延迟时间、可靠性和可用性。

    • 您需要遵守数据本地化政策或法规,这些政策或法规要求您在存储数据的同一位置处理数据。

证明和 build 出处数据存储在全球端点中。 漏洞扫描结果和 SBOM 数据存储在区域和多区域端点中。

支持区域端点的位置

您可以将区域端点用于 Artifact Analysis 支持的大多数区域。

对于多区域和某些区域,Artifact Analysis 仅支持全球端点。

如需查看受支持区域的列表以及每个区域支持的服务端点,请参阅元数据存储位置

Google Cloud CLI 命令

使用 gcloud CLI 时,您可以通过两种方式向区域端点发送请求:

  • 使用 --location 标志。
  • 设置要用于 Artifact Analysis 命令的默认区域端点。

使用 --location 标志

您可以将 --location 标志与以下任一命令搭配使用,以将请求定向到相应的服务端点:

如需使用区域端点成功处理请求,指定的位置必须满足以下要求:

如果您省略 --location 标志或指定不支持区域端点的位置,该命令将使用全球端点。

例如,以下命令列出了存储在 us-east1 中的映像的漏洞:

gcloud artifacts vulnerabilities list --location=us-east1 us-east1-docker.pkg.dev/my-project/my-repo/my-image@sha256:49765698074d6d7baa82f

为命令设置默认端点

默认情况下,gcloud CLI 命令使用全球端点。您可以为 Artifact Analysis 命令设置默认区域端点,这样您就不需要在各个命令中指定位置。

确保您使用的是 gcloud CLI 402.0.0 或更高版本。

在使用下面的命令数据之前, 请先进行以下替换:

  • LOCATION:存储元数据的区域

执行以下命令:

Linux、macOS 或 Cloud Shell

gcloud config set api_endpoint_overrides/containeranalysis https://containeranalysis.LOCATION.rep.googleapis.com

Windows (PowerShell)

gcloud config set api_endpoint_overrides/containeranalysis https://containeranalysis.LOCATION.rep.googleapis.com

Windows (cmd.exe)

gcloud config set api_endpoint_overrides/containeranalysis https://containeranalysis.LOCATION.rep.googleapis.com

为 API 方法使用区域端点

指定区域端点,而不是全球端点。例如,以下示例列出了指定区域中的发生情况。

在使用任何请求数据之前, 请先进行以下替换:

  • LOCATION:存储元数据的区域
  • PROJECT_ID:您的 Google Cloud 项目的项目 ID。

HTTP 方法和网址:

GET https://containeranalysis.LOCATION.rep.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/occurrences

如需发送您的请求,请展开以下选项之一:

您应该收到类似以下内容的 JSON 响应:

occurrences: [
  {
    name: "projects/my-project/locations/us-east1/occurrences/030b7805-eca4-4739-9a43-ec65ed98c61f"
    resource_uri: "https://us-east1-docker.pkg.dev/my-project/my-repo/my-image@sha256:b487c4da45ce363eef69d9c066fa26f6666e4f3c9c414d98d1e27bfcc949e544"
    note_name: "projects/goog-vulnz/locations/us-east1/notes/CVE-2018-1272"
    kind: VULNERABILITY
    ...
  }

在过渡到区域元数据存储之前,发生情况和备注的标识符中不包含位置名称。由于较新的扫描会将元数据存储在区域中,因此使用全球或区域端点的 API 请求会返回包含位置标识符的结果。

过渡之前的发生情况标识符类似于以下示例:

name: "projects/my-project/occurrences/030b7805-eca4-4739-9a43-ec65ed98c61f"

存储在 us-east1 中的同一发生情况如下所示:

name: "projects/my-project/locations/us-east1/occurrences/030b7805-eca4-4739-9a43-ec65ed98c61f"

限制全球 API 端点用量

为了帮助强制使用区域端点,请使用 constraints/gcp.restrictEndpointUsage 组织政策限制条件来阻止对全球 API 端点的请求。如需了解详情,请参阅 限制端点用量

后续步骤