規定必須具備權限才能將服務帳戶附加至資源

建立特定 Google Cloud 資源時,您可以選擇附加服務帳戶。附加的服務帳戶會做為資源上執行的任何工作身分,讓工作向 Google Cloud API 進行驗證。

對於大多數 Google Cloud 服務,使用者必須有模擬服務帳戶的權限,才能將該服務帳戶附加至資源。也就是說,使用者必須具備服務帳戶的 iam.serviceAccounts.actAs 權限。

不過,在過去,即使使用者沒有模擬服務帳戶的權限,某些服務仍允許使用者將服務帳戶附加至資源。這項設定可能導致這些服務的使用者取得進階權限,但使用者並未察覺。

下表列出具有這項設定的服務,以及各項服務的舊版行為:

服務 舊版行為
App Engine 使用者可以部署使用 App Engine 預設服務帳戶身分的 App Engine 應用程式,即使他們沒有模擬 App Engine 預設服務帳戶的權限也一樣。
Cloud Composer 使用者可將專案中的任何服務帳戶附加至 Cloud Composer 環境,即使他們沒有模擬專案中任何服務帳戶的權限也一樣。
  • Cloud Data Fusion
  • Dataflow
  • Dataproc
使用者可將 Compute Engine 預設服務帳戶附加至資源,即使他們沒有模擬預設服務帳戶的權限也一樣。

現在,這些服務會要求使用者在將服務帳戶附加至資源時,確認使用者有權模擬服務帳戶。不過,下列類型的機構仍會沿用舊版行為:

  • 如果機構中的使用者有權部署 App Engine 應用程式,但無權模擬 App Engine 預設服務帳戶,就會發生這種情況。
  • 機構中的使用者有權部署 Cloud Composer 環境,但無權模擬任何服務帳戶。
  • 使用者有權部署 Cloud Data Fusion、Dataflow 或 Dataproc 資源,但無權模擬 Compute Engine 預設服務帳戶的機構。

如果貴機構仍受舊版行為影響,您應該會收到相關通知,說明如何手動停用這項功能。您也可以參閱下列章節的詳細操作說明。

保護 App Engine

如要手動停用 App Engine 的舊版行為,請確保使用者有權模擬 App Engine 服務帳戶。接著,啟用機構政策限制,在部署使用 App Engine 預設服務帳戶身分的應用程式時,強制執行服務帳戶權限檢查。

  1. 選用:使用角色建議,安全地縮減 App Engine 預設服務帳戶的權限範圍。

    系統會自動將權限極高的「編輯者」角色 (roles/editor) 授予 App Engine 預設服務帳戶。不過,我們不建議在正式版設定中使用權限極高的角色。

  2. 確認所有部署應用程式的使用者都能模擬 App Engine 預設服務帳戶。

    如要授予這項權限,請將包含 iam.serviceAccounts.actAs 權限的角色 (例如服務帳戶使用者角色 roles/iam.serviceAccountUser) 授予使用者。您可以在專案或 App Engine 預設服務帳戶中授予這項角色。如需操作說明,請參閱「管理服務帳戶模擬功能」。

  3. 啟用機構政策限制,在部署應用程式時強制執行服務帳戶權限檢查。constraints/appengine.enforceServiceAccountActAsCheck

  4. 選用:使用布林機構政策強制執行工具,確認機構政策限制已在所有專案中強制執行。

保護 Cloud Composer 安全

如要手動停用 Cloud Composer 的舊版行為,請確保使用者有權模擬附加至新環境的服務帳戶。然後啟用機構政策限制,在將服務帳戶附加至環境時,強制執行服務帳戶權限檢查。

  1. 找出繫結至 Cloud Composer 環境的所有服務帳戶:

    1. 前往 Google Cloud 控制台的「Composer environments」(Composer 環境) 頁面。

      前往 Composer 環境頁面

    2. 按一下環境名稱。

    3. 在「環境設定」分頁中,找到「服務帳戶」欄位,並記錄服務帳戶的名稱。

    4. 針對專案中的所有 Cloud Composer 環境重複上述步驟。

  2. 確認這些服務帳戶遵循最低權限原則:

  3. 請確保所有部署或管理 Cloud Composer 環境的使用者,都能模擬環境使用的服務帳戶。

    如要提供這項功能,請授予使用者包含 iam.serviceAccounts.actAs 權限的角色,例如服務帳戶使用者角色 (roles/iam.serviceAccountUser)。您可以對專案或個別服務帳戶授予這項角色。如需操作說明,請參閱「管理服務帳戶模擬功能」。

  4. 啟用機構政策限制 constraints/composer.enforceServiceAccountActAsCheck,在將服務帳戶附加至環境時,強制執行服務帳戶權限檢查。

  5. 選用:使用布林機構政策強制執行工具,確認機構政策限制已在所有專案中強制執行。

保護 Dataproc、Dataflow 和 Cloud Data Fusion

如要手動停用 Dataproc、Dataflow 和 Cloud Data Fusion 的舊版行為,請確保使用者有權模擬附加至新資源的服務帳戶。接著,啟用機構政策限制,在將服務帳戶附加至資源時,強制執行服務帳戶權限檢查。

請按照要附加至新資源的服務帳戶類型操作:

  • 如要停止將 Compute Engine 預設服務帳戶附加至新資源,請按照下列步驟操作:

    1. 建立新的服務帳戶,並授予該服務帳戶在資源上執行作業所需的角色。請務必遵循最低權限原則

      如要瞭解服務帳戶在 Dataproc、Dataflow 和 Cloud Data Fusion 資源上執行工作時需要哪些角色,請參閱下列文章:

    2. 允許部署這些資源的所有使用者模擬新服務帳戶。

      如要提供這項功能,請授予使用者包含 iam.serviceAccounts.actAs 權限的角色,例如服務帳戶使用者角色 (roles/iam.serviceAccountUser)。您可以在專案或服務帳戶中授予這項角色。如需操作說明,請參閱「管理服務帳戶模擬功能」。

    3. 啟用下列機構政策限制,在將服務帳戶附加至資源時,強制執行服務帳戶權限檢查:

      • constraints/dataflow.enforceComputeDefaultServiceAccountCheck
      • constraints/dataproc.enforceComputeDefaultServiceAccountCheck

      機構政策限制 constraints/dataproc.enforceComputeDefaultServiceAccountCheck 也會強制執行 Cloud Data Fusion 的權限檢查。

    4. 選用:使用布林機構政策強制執行器,確認所有專案都強制執行機構政策限制。

    5. 部署新資源時,請使用新的服務帳戶,而非 Compute Engine 預設服務帳戶。

  • 如要繼續將 Compute Engine 預設服務帳戶附加至新資源,請按照下列步驟操作:

    1. 選用:使用角色建議,安全地縮減 Compute Engine 預設服務帳戶的權限範圍。

      系統會自動將權限極高的編輯者角色 (roles/editor) 授予 Compute Engine 預設服務帳戶。不過,我們不建議在正式版設定中使用權限極高的角色。

    2. 請確認部署這些資源的所有使用者,都能模擬 Compute Engine 預設服務帳戶。

      如要提供這項功能,請授予使用者包含 iam.serviceAccounts.actAs 權限的角色,例如服務帳戶使用者角色 (roles/iam.serviceAccountUser)。您可以在專案或 Compute Engine 預設服務帳戶中授予這項角色。如需操作說明,請參閱「管理服務帳戶模擬功能」。

    3. 啟用下列機構政策限制,在將服務帳戶附加至資源時,強制執行服務帳戶權限檢查:

      • constraints/dataflow.enforceComputeDefaultServiceAccountCheck
      • constraints/dataproc.enforceComputeDefaultServiceAccountCheck
    4. 選用:使用布林機構政策強制執行器,確認所有專案都強制執行機構政策限制。