建立特定 Google Cloud 資源時,您可以選擇附加服務帳戶。附加的服務帳戶會做為資源上執行的任何工作身分,讓工作向 Google Cloud API 進行驗證。
對於大多數 Google Cloud 服務,使用者必須有模擬服務帳戶的權限,才能將該服務帳戶附加至資源。也就是說,使用者必須具備服務帳戶的 iam.serviceAccounts.actAs
權限。
不過,在過去,即使使用者沒有模擬服務帳戶的權限,某些服務仍允許使用者將服務帳戶附加至資源。這項設定可能導致這些服務的使用者取得進階權限,但使用者並未察覺。
下表列出具有這項設定的服務,以及各項服務的舊版行為:
服務 | 舊版行為 |
---|---|
App Engine | 使用者可以部署使用 App Engine 預設服務帳戶身分的 App Engine 應用程式,即使他們沒有模擬 App Engine 預設服務帳戶的權限也一樣。 |
Cloud Composer | 使用者可將專案中的任何服務帳戶附加至 Cloud Composer 環境,即使他們沒有模擬專案中任何服務帳戶的權限也一樣。 |
|
使用者可將 Compute Engine 預設服務帳戶附加至資源,即使他們沒有模擬預設服務帳戶的權限也一樣。 |
現在,這些服務會要求使用者在將服務帳戶附加至資源時,確認使用者有權模擬服務帳戶。不過,下列類型的機構仍會沿用舊版行為:
- 如果機構中的使用者有權部署 App Engine 應用程式,但無權模擬 App Engine 預設服務帳戶,就會發生這種情況。
- 機構中的使用者有權部署 Cloud Composer 環境,但無權模擬任何服務帳戶。
- 使用者有權部署 Cloud Data Fusion、Dataflow 或 Dataproc 資源,但無權模擬 Compute Engine 預設服務帳戶的機構。
如果貴機構仍受舊版行為影響,您應該會收到相關通知,說明如何手動停用這項功能。您也可以參閱下列章節的詳細操作說明。
保護 App Engine
如要手動停用 App Engine 的舊版行為,請確保使用者有權模擬 App Engine 服務帳戶。接著,啟用機構政策限制,在部署使用 App Engine 預設服務帳戶身分的應用程式時,強制執行服務帳戶權限檢查。
選用:使用角色建議,安全地縮減 App Engine 預設服務帳戶的權限範圍。
系統會自動將權限極高的「編輯者」角色 (
roles/editor
) 授予 App Engine 預設服務帳戶。不過,我們不建議在正式版設定中使用權限極高的角色。確認所有部署應用程式的使用者都能模擬 App Engine 預設服務帳戶。
如要授予這項權限,請將包含
iam.serviceAccounts.actAs
權限的角色 (例如服務帳戶使用者角色roles/iam.serviceAccountUser
) 授予使用者。您可以在專案或 App Engine 預設服務帳戶中授予這項角色。如需操作說明,請參閱「管理服務帳戶模擬功能」。啟用機構政策限制,在部署應用程式時強制執行服務帳戶權限檢查。
constraints/appengine.enforceServiceAccountActAsCheck
選用:使用布林機構政策強制執行工具,確認機構政策限制已在所有專案中強制執行。
保護 Cloud Composer 安全
如要手動停用 Cloud Composer 的舊版行為,請確保使用者有權模擬附加至新環境的服務帳戶。然後啟用機構政策限制,在將服務帳戶附加至環境時,強制執行服務帳戶權限檢查。
找出繫結至 Cloud Composer 環境的所有服務帳戶:
前往 Google Cloud 控制台的「Composer environments」(Composer 環境) 頁面。
按一下環境名稱。
在「環境設定」分頁中,找到「服務帳戶」欄位,並記錄服務帳戶的名稱。
針對專案中的所有 Cloud Composer 環境重複上述步驟。
確認這些服務帳戶遵循最低權限原則:
在 Google Cloud 控制台前往「IAM」IAM頁面,找出服務帳戶並檢查其角色。
如有需要,請將權限較少的角色授予服務帳戶。您可以從 IAM 預先定義角色清單中選取角色、使用角色建議提供的角色,或建立自訂角色。
請確保所有部署或管理 Cloud Composer 環境的使用者,都能模擬環境使用的服務帳戶。
如要提供這項功能,請授予使用者包含
iam.serviceAccounts.actAs
權限的角色,例如服務帳戶使用者角色 (roles/iam.serviceAccountUser
)。您可以對專案或個別服務帳戶授予這項角色。如需操作說明,請參閱「管理服務帳戶模擬功能」。啟用機構政策限制
constraints/composer.enforceServiceAccountActAsCheck
,在將服務帳戶附加至環境時,強制執行服務帳戶權限檢查。選用:使用布林機構政策強制執行工具,確認機構政策限制已在所有專案中強制執行。
保護 Dataproc、Dataflow 和 Cloud Data Fusion
如要手動停用 Dataproc、Dataflow 和 Cloud Data Fusion 的舊版行為,請確保使用者有權模擬附加至新資源的服務帳戶。接著,啟用機構政策限制,在將服務帳戶附加至資源時,強制執行服務帳戶權限檢查。
請按照要附加至新資源的服務帳戶類型操作:
如要停止將 Compute Engine 預設服務帳戶附加至新資源,請按照下列步驟操作:
建立新的服務帳戶,並授予該服務帳戶在資源上執行作業所需的角色。請務必遵循最低權限原則。
如要瞭解服務帳戶在 Dataproc、Dataflow 和 Cloud Data Fusion 資源上執行工作時需要哪些角色,請參閱下列文章:
- Dataproc 服務帳戶規定
- Dataflow 服務帳戶規定
- Cloud Data Fusion 服務帳戶與 Dataproc 服務帳戶有相同的需求。
允許部署這些資源的所有使用者模擬新服務帳戶。
如要提供這項功能,請授予使用者包含
iam.serviceAccounts.actAs
權限的角色,例如服務帳戶使用者角色 (roles/iam.serviceAccountUser
)。您可以在專案或服務帳戶中授予這項角色。如需操作說明,請參閱「管理服務帳戶模擬功能」。啟用下列機構政策限制,在將服務帳戶附加至資源時,強制執行服務帳戶權限檢查:
constraints/dataflow.enforceComputeDefaultServiceAccountCheck
constraints/dataproc.enforceComputeDefaultServiceAccountCheck
機構政策限制
constraints/dataproc.enforceComputeDefaultServiceAccountCheck
也會強制執行 Cloud Data Fusion 的權限檢查。選用:使用布林機構政策強制執行器,確認所有專案都強制執行機構政策限制。
部署新資源時,請使用新的服務帳戶,而非 Compute Engine 預設服務帳戶。
如要繼續將 Compute Engine 預設服務帳戶附加至新資源,請按照下列步驟操作:
選用:使用角色建議,安全地縮減 Compute Engine 預設服務帳戶的權限範圍。
系統會自動將權限極高的編輯者角色 (
roles/editor
) 授予 Compute Engine 預設服務帳戶。不過,我們不建議在正式版設定中使用權限極高的角色。請確認部署這些資源的所有使用者,都能模擬 Compute Engine 預設服務帳戶。
如要提供這項功能,請授予使用者包含
iam.serviceAccounts.actAs
權限的角色,例如服務帳戶使用者角色 (roles/iam.serviceAccountUser
)。您可以在專案或 Compute Engine 預設服務帳戶中授予這項角色。如需操作說明,請參閱「管理服務帳戶模擬功能」。啟用下列機構政策限制,在將服務帳戶附加至資源時,強制執行服務帳戶權限檢查:
constraints/dataflow.enforceComputeDefaultServiceAccountCheck
constraints/dataproc.enforceComputeDefaultServiceAccountCheck
選用:使用布林機構政策強制執行器,確認所有專案都強制執行機構政策限制。