使用地區端點設定資料本地化

本頁說明 Artifact Analysis 的全球和區域服務端點,以及如何使用這些端點。

服務端點是指定 API 服務網路位址的基準網址。Artifact Analysis 具有全球和區域端點。

  • 全球端點:根據預設,構件分析會將 API 要求傳送至全球端點 containeranalysis.googleapis.com。全球端點無法保證傳輸中的資料會留在特定位置,且可從任何支援的區域擷取構件分析資料。您的資料可能會在儲存區域以外的地區處理。

  • 地區端點:強制執行地區限制的服務端點,確保資料在指定地區儲存、傳輸及處理。只有當受影響的資源位於端點指定的位置時,區域端點才會允許要求繼續執行。區域端點的格式如下:

    containeranalysis.region.rep.googleapis.com

    在下列情況下,建議使用區域端點:

    • 需要存取您資料的應用程式,與資料儲存的區域在地理位置上相距甚遠。

    • 您將資料儲存在多個位置,並想盡可能縮短延遲時間,提高可靠性和可用性。

    • 您必須遵守資料所在地政策或法規,在儲存資料的位置處理資料。

認證和建構出處資料會儲存在全域端點中。 漏洞掃描結果和 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
    ...
  }

在改用區域中繼資料儲存空間之前,事件和附註的 ID 不會包含位置名稱。由於較新的掃描作業會將中繼資料儲存在區域中,因此使用全域或區域端點的 API 要求都會傳回包含位置 ID 的結果。

轉換前的發生次數 ID 如下例所示:

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 端點的要求。詳情請參閱「限制端點用量」。

後續步驟