使用嚴格的「充當」模式

嚴格的「以…身分執行」模式會對 Dataform 中的下列使用者動作進行額外安全檢查:

  • 建立或更新存放區
  • 建立或更新工作流程設定
  • 建立工作流程調用
  • 更新版本設定

這項額外的安全檢查會要求執行這些動作的使用者,對有效服務帳戶 (即用於執行工作流程的服務帳戶) 具有 iam.serviceAccounts.actAs 權限。詳情請參閱「將服務帳戶附加至資源」。

您可以透過下列方式啟用這些權限:

  • 建立存放區
  • 使用 strict_act_as_checks 存放區旗標更新現有存放區

必要的角色

如要取得完成本文工作所需的權限,請要求管理員授予自訂服務帳戶的服務帳戶使用者 (roles/iam.serviceAccountUser) IAM 角色。如要進一步瞭解如何授予角色,請參閱「管理專案、資料夾和組織的存取權」。

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

判斷有效服務帳戶

您可以根據資源類型和下列條件,判斷執行工作流程的有效服務帳戶:

資源類型 有效服務帳戶
存放區

如果您在建立存放區時選取自訂服務帳戶,系統就會使用 Repository.ServiceAccount 服務帳戶。

否則,系統會預設為 Dataform 服務代理程式

工作流程設定

您可以在建立工作流程設定時選取自訂服務帳戶。

否則,系統會預設為存放區的 Dataform 服務代理程式

工作流程叫用

如果編譯結果為 WORKFLOW_CONFIG,系統會使用工作流程設定的有效服務帳戶。

如果您從編譯結果建立工作流程叫用,系統會使用 WorkflowInvocation.InvocationConfig 服務帳戶 (如有設定)。

否則,系統會預設為存放區的 Dataform 服務代理程式

授予服務帳戶使用者 IAM 角色

「服務帳戶使用者」角色 (roles/iam.serviceAccountUser) 包含 iam.serviceAccounts.actAs 權限,這是嚴格的「以服務帳戶身分執行動作」模式的必要權限。使用 Dataform API 時,您必須根據所呼叫的 projects.locations.repositories 方法,為有效服務帳戶授予服務帳戶使用者角色:

  • createpatch
    • 如果設定了 Repository.ServiceAccount 屬性,您應該已獲得該屬性的服務帳戶使用者角色。
    • 如果您要呼叫 patch 方法,則應為存放區中所有工作流程設定的所有有效服務帳戶,授予服務帳戶使用者角色。
  • workflowConfigs.createworkflowConfigs.patch
    • 您應為工作流程設定中使用的有效服務帳戶授予服務帳戶使用者角色。
  • releaseConfigs.patch
    • 您應為工作流程設定中使用的所有有效服務帳戶,授予服務帳戶使用者角色,並使用這個發布設定。
  • workflowInvocations.create
    • 您應為工作流程叫用時使用的有效服務帳戶授予服務帳戶使用者角色。

如要將服務帳戶使用者角色授予自訂服務帳戶,請按照下列步驟操作:

  1. 在 Google Cloud 控制台中,依序前往「IAM」>「Service accounts」(服務帳戶)

    前往「Service accounts」(服務帳戶)

  2. 選取專案。

  3. 在「專案『PROJECT_NAME』的服務帳戶」頁面,選取自訂服務帳戶。

  4. 前往「具有存取權的主體」,然後點選「授予存取權」。

  5. 在「新增主體」欄位中,輸入預設的 Dataform 服務代理程式 ID。

    預設 Dataform 服務代理程式 ID 的格式如下:

    service-PROJECT_NUMBER@gcp-sa-dataform.iam.gserviceaccount.com
    
  6. 在「Select a role」(選取角色) 清單中,選取「Service Account User」(服務帳戶使用者) 角色。

  7. 按一下 [儲存]

詳情請參閱建立工作流程設定的必要角色建立發布設定的必要角色

嚴格 act-as 模式對自動發布和執行的影響

啟用嚴格 act-as 模式後,系統會按照下列方式影響自動存放區發布和自動工作流程執行作業:

如果存放區連結至第三方存放區:

  • 您無法在發布設定中,為自動發布功能設定 Cron 排程。強制執行這項限制,可防止系統自動部署使用者所做的程式碼變更,因為使用者可能沒有下游服務帳戶的必要 iam.serviceAccounts.actAs 權限。
  • 使用工作流程設定中的 Cron 時間表排定工作流程執行作業,仍會維持啟用狀態。如要讓這些自動執行作業順利完成,您必須在工作流程設定中指定的有效服務帳戶上,授予預設的 Dataform 服務代理程式 iam.serviceAccounts.actAs 權限。

如果存放區已連結至第三方存放區:

  • 允許排定發布時間和工作流程執行時間。
  • 如要從發布設定啟用自動發布功能,或從工作流程設定啟用自動執行功能,您必須在相關有效服務帳戶中,將 iam.serviceAccounts.actAs 權限授予預設 Dataform 服務代理程式:
    • 如果是自動發布設定,請在所有由這項發布設定觸發的工作流程設定的有效服務帳戶中,授予權限。
    • 如要自動設定工作流程,請在該工作流程設定使用的有效服務帳戶中授予權限。

後續步驟

  • 如要瞭解如何建立存放區,請參閱「建立存放區」一文。
  • 如要進一步瞭解 Dataform 如何與 BigQuery 搭配運作,請參閱「工作流程總覽」。
  • 如要瞭解如何建立工作流程設定,請參閱「排定執行時間」。
  • 如要瞭解如何建立發布設定,請參閱「設定編譯」。