設定 VPC Service Controls

VPC Service Controls 是一項 Google Cloud 功能,可用來設定 perimeter,防範資料遭竊。本指南說明如何搭配 Dataform 使用 VPC Service Controls,進一步確保服務安全。

VPC Service Controls 可為Google Cloud 服務提供額外一層防護,與 Identity and Access Management (IAM) 提供的防護機制互不相干。

如要進一步瞭解 VPC Service Controls,請參閱「VPC Service Controls 總覽」。

限制

Dataform 支援 VPC Service Controls,但有以下限制:

安全性考量

為 Dataform 設定 VPC Service Controls 範圍時,請檢查授予 Dataform 服務代理程式和帳戶的權限,確認這些權限符合您的安全架構。

視您授予 Dataform 服務代理或自訂服務帳戶的權限而定,該服務代理或服務帳戶可能可以存取所屬專案中的 BigQuery 或 Secret Manager 資料,不受 VPC Service Controls 限制。在這種情況下,使用 VPC Service Controls 範圍限制 Dataform,不會阻斷與 BigQuery 或 Secret Manager 的通訊。

如果您不需要執行任何源自 Dataform 存放區的工作流程叫用,請封鎖與 BigQuery 的通訊。如要進一步瞭解如何封鎖與 BigQuery 的通訊,請參閱「封鎖與 BigQuery 的通訊」。

如果您的 Dataform 存放區都未連線至第三方 Git 存放區,請封鎖與 Secret Manager 的通訊。如要進一步瞭解如何封鎖與 Secret Manager 的通訊,請參閱「封鎖與 Secret Manager 的通訊」。

事前準備

為 Dataform 設定 VPC Service Controls 服務範圍前,請按照「限制遠端存放區」指南設定 dataform.restrictGitRemotes 組織政策。

您必須設定 dataform.restrictGitRemotes 組織政策,確保系統在使用 Dataform 時強制執行 VPC Service Controls 檢查,並限制第三方存取 Dataform Git 存放區。

必要的角色

如要取得設定 VPC Service Controls 服務範圍所需的權限,請要求管理員在專案中授予您「Access Context Manager 編輯者 」(roles/accesscontextmanager.policyEditor) IAM 角色。如要進一步瞭解如何授予角色,請參閱「管理專案、資料夾和組織的存取權」。

您或許也能透過自訂角色或其他預先定義的角色,取得必要權限。

如要進一步瞭解 VPC Service Controls 權限,請參閱「使用 IAM 控管存取權」。

設定 VPC Service Controls

您可以透過下列方式,使用 VPC Service Controls 服務範圍限制 Dataform:

  • 將 Dataform 新增至限制 BigQuery 的現有服務範圍。
  • 建立服務範圍,同時限制 Dataform 和 BigQuery。

如要將 Dataform 新增至限制 BigQuery 的服務範圍,請按照 VPC Service Controls 說明文件中的「更新服務範圍」指南操作。

如要建立新的服務範圍,同時限制 Dataform 和 BigQuery,請按照 VPC Service Controls 說明文件中的「建立服務範圍」指南操作。

選用:封鎖與 BigQuery 的通訊

Dataform 與 BigQuery 的通訊方式取決於 Dataform 中使用的服務帳戶類型

使用自訂服務帳戶

自訂服務帳戶會使用下列權限和角色與 BigQuery 通訊:

  • 授予自訂服務帳戶的bigquery.jobs.create權限。
  • 授予自訂服務帳戶預設 Dataform 服務代理程式的服務帳戶憑證建立者角色 (roles/iam.serviceAccountTokenCreator)。

您可以透過下列任一方式,封鎖自訂服務帳戶與 BigQuery 之間的通訊:

使用預設的 Dataform 服務代理

預設 Dataform 服務代理程式會使用 bigquery.jobs.create 權限與 BigQuery 通訊。當您授予 Dataform 在 BigQuery 中執行工作流程所需的角色時,系統會授予包含這項權限的預設 Dataform 服務代理角色。

如要封鎖預設 Dataform 服務代理與 BigQuery 之間的通訊,您必須撤銷所有包含 bigquery.jobs.create 權限的預先定義和自訂角色,這些角色已授予預設 Dataform 服務代理。如需這些角色的清單,請參閱「具有 bigquery.jobs.create 權限的角色」。如要撤銷角色,請按照「管理專案、資料夾和機構的存取權」指南操作。

具有 bigquery.jobs.create 權限的角色

下列預先定義的 BigQuery IAM 角色包含 bigquery.jobs.create 權限,因此必須撤銷:

選用:封鎖與 Secret Manager 的通訊

Dataform 會使用 secretmanager.versions.access 權限存取個別的 Secret Manager 密鑰。將 Dataform 存放區連結至第三方存放區時,您會將這項權限授予所選 Secret Manager 密鑰的預設 Dataform 服務代理程式。

如要封鎖 Dataform 與 Secret Manager 之間的通訊,請從預設的 Dataform 服務代理程式撤銷所有密鑰的存取權。

如要撤銷預設 Dataform 服務代理程式的 Secret Manager 密鑰存取權,請按照 Secret Manager 說明文件中的「管理密鑰存取權」指南操作。您必須撤銷授予所選密鑰預設 Dataform 服務代理的所有預先定義和自訂角色,這些角色包含 secretmanager.versions.access 權限。

下列預先定義的 Secret Manager IAM 角色具備 secretmanager.versions.access 權限:

後續步驟