VPC Service Controls 是 Google Cloud 可讓您設定 perimeter 的功能,有助於防範資料竊取。本指南說明如何搭配使用 VPC Service Controls 和 Dataform,進一步強化服務的安全性。
VPC Service Controls 可為Google Cloud 服務提供 Identity and Access Management (IAM) 以外的另一層防護。
如要進一步瞭解 VPC Service Controls,請參閱「VPC Service Controls 總覽」。
限制
Dataform 支援 VPC Service Controls,但有以下限制:
Dataform 和 BigQuery 必須受限於相同的 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 權限,請參閱「使用身分與存取權管理功能控管存取權」。
設定 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 使用的服務帳戶類型。
預設的 Dataform 服務帳戶會使用 bigquery.jobs.create
權限與 BigQuery 通訊。授予 Dataform 在 BigQuery 中執行 SQL 工作流程所需的角色時,您會授予含有此權限的預設 Dataform 服務帳戶角色。
如要封鎖預設 Dataform 服務帳戶和 BigQuery 之間的通訊,您必須撤銷所有預先定義和自訂角色,這些角色已授予預設 Dataform 服務帳戶 bigquery.jobs.create
權限。如要撤銷角色,請按照管理專案、資料夾和機構的存取權指南操作。
自訂 Dataform 服務帳戶會使用下列權限和角色與 BigQuery 通訊:
- 授予自訂服務帳戶的
bigquery.jobs.create
權限。 - 服務帳戶憑證建立者 (
roles/iam.serviceAccountTokenCreator
) 角色,已授予自訂服務帳戶中的預設 Dataform 服務帳戶。
您可以透過下列任一方式,封鎖自訂 Dataform 服務帳戶與 BigQuery 之間的通訊:
撤銷已授予所選自訂 Dataform 服務帳戶的預設服務帳戶的「服務帳戶憑證建立者」(
roles/iam.serviceAccountTokenCreator
) 角色。如要撤銷服務帳戶憑證建立者 (roles/iam.serviceAccountTokenCreator
) 角色,請按照管理服務帳戶存取權指南操作。撤銷所有在專案層級授予自訂服務帳戶的預先定義和自訂角色,該帳戶包含
bigquery.jobs.create
權限。如要撤銷角色,請按照管理專案、資料夾和機構的存取權指南操作。
下列預先定義的 BigQuery IAM 角色包含 bigquery.jobs.create
權限,必須撤銷這些角色:
- BigQuery 管理員 (
roles/bigquery.admin
) - BigQuery 作业使用者 (
roles/bigquery.jobUser
) - BigQuery 使用者 (
roles/bigquery.user
) - BigQuery Studio 管理員 (
roles/bigquery.studioAdmin
) - BigQuery Studio 使用者 (
roles/bigquery.studioUser
)
選用:封鎖與 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
權限:
- Secret Manager 管理員 (
roles/secretmanager.admin
) - Secret Manager 密鑰存取工具 (
roles/secretmanager.secretAccessor
) - Secret Manager 密鑰版本管理工具 (
roles/secretmanager.secretVersionManager
)
後續步驟
- 如要進一步瞭解 VPC Service Controls,請參閱「VPC Service Controls 總覽」。
- 如要進一步瞭解機構政策,請參閱「機構政策服務簡介」。
- 如要進一步瞭解 Dataform 中的服務帳戶,請參閱「關於 Dataform 中的服務帳戶」。