身分與存取權管理 (IAM) 為大多數 Google Cloud 服務提供多個預先定義的角色。每個預先定義的角色都包含執行工作或一組相關工作所需的權限。
如果是簡單的工作,通常很容易就能找到合適的預先定義角色。舉例來說,如果主體需要查看 Cloud Storage 值區中的物件,則 Storage 物件檢視者角色 (roles/storage.objectViewer
) 可能很適合。
不過,預先定義的角色有數百個,因此您可能很難找出最適合授予主體的角色。此外,要找出符合最低權限原則的角色可能也很困難,因為這項原則規定主體擁有的權限不得超過實際需求。
本頁面將逐步說明如何選擇最合適的預先定義角色:
找出必要權限
如要找出主體需要的權限,請先列出主體需要執行的工作,以及執行這些工作時會使用的 Google Cloud 服務。舉例來說,主體可能需要使用 Compute Engine 建立虛擬機器執行個體。
找出工作和服務後,您可以運用幾種策略,為每項工作找出必要權限:
請參閱 Google Cloud 服務的說明文件。
在某些服務中,以工作為導向的操作指南會在「事前準備」一節或各項工作的操作說明中,列出每項工作所需的角色或權限。舉例來說,請參閱 Compute Engine 的匯入及匯出 VM 映像檔先決條件。
其他服務則會在存取權控管頁面中,列出必要角色和權限。舉例來說,請參閱 Pub/Sub 呼叫 Pub/Sub 方法時的必要權限。
找出您會用來完成工作的 REST 或 RPC API 方法,並查看 API 參考說明文件,瞭解所需的 IAM 權限。
在某些服務中,REST 和 RPC API 說明文件會列出每個方法所需的權限。舉例來說,請參閱 Compute Engine 說明文件中的
instances.get
方法。查看各項服務的權限清單,並根據判斷找出相關權限。
在大多數情況下,每個權限的名稱也會說明該權限的用途。舉例來說,建立 Compute Engine VM 執行個體的權限名稱為
compute.instances.create
。為協助您瞭解各項權限名稱,請注意權限名稱採用
SERVICE.RESOURCE_TYPE.ACTION
格式。
一般來說,您不需要找出每項工作所需的每項權限。請改為找出各項工作最相關的權限。如果預先定義的角色包含該權限,可能也會包含相關權限。
在這個過程中,您也應嘗試找出哪些必要權限最為強大。一般來說,預先定義的角色越少,權限就越強大。因此,如果著重於這些權限,可供選擇的潛在角色清單就會較短。
舉例來說,下列類型的權限特別強大:
- 建立及刪除資源的權限
- 存取機密資料的權限,例如加密金鑰或個人識別資訊 (PII)
- 設定資源允許政策或拒絕政策的權限
- 更新機構、資料夾和專案的權限,這可能會導致其他資源繼承更新
相較之下,下列權限類型較不強大:
- 列出資源的權限
- 存取非私密資料的權限
- 更新風險有限的設定,例如 Compute Engine 虛擬機器執行個體的最低 CPU 平台
找出含有權限的角色
找出必要權限後,您可以搜尋包含這些權限的預先定義角色,並列出可能適合的角色。如要輕鬆找出這些角色,最簡單的方法是搜尋權限參考資料,其中列出所有 IAM 權限,以及包含各項權限的角色。
如要遵循最小權限原則,您可能需要找出多個要授予的預先定義角色,尤其是當所需權限屬於多個 Google Cloud 服務時。舉例來說,如果主體需要查看 Cloud Storage 物件及管理 Cloud SQL 資料庫,單一預先定義的角色不太可能包含這兩項服務的適當權限。如果這類角色存在,可能也會包含大量與主體無關的權限。為降低風險,請尋找一個包含 Cloud Storage 必要權限的角色,以及另一個包含 Cloud SQL 必要權限的角色。
選擇最合適的角色
現在您已取得可能合適的預先定義角色清單,可以從中選擇最合適的角色。
首先,請排除下列類型的角色:
用於正式環境:基本角色,包括擁有者 (
roles/owner
)、編輯者 (roles/editor
) 和檢視者 (roles/viewer
)。基本角色包含所有 Google Cloud 服務的數千項權限。在正式環境中,除非沒有其他替代方案,否則請勿授予基本角色。請改為授予最受限的預先定義角色或自訂角色,以符合您的需求。
服務代理人角色,通常職稱結尾為「服務代理人」,名稱結尾為
serviceAgent
。這些角色適用於服務代理程式,這是一種特殊服務帳戶, Google Cloud 服務會使用這類帳戶存取您的資源。服務代理角色通常包含多項服務的權限,其中可能包括主體不需要存取的服務。
接著,請使用預先定義的角色參考資料,或 Google Cloud 控制台中的「角色」頁面,列出每個角色包含的權限。檢查每個角色,找出您不希望主體擁有的權限,並移除含有這些權限的角色。
如果這個程序會移除所有預先定義的角色,請考慮建立自訂角色,以符合您的用途。否則,請選擇權限最少的角色,但仍須符合您的需求。
決定要在何處授予角色
授予角色時,您一律會針對特定 Google Cloud 資源授予角色,該資源屬於資源階層。較低層級的資源 (例如 Compute Engine VM 執行個體) 會繼承較高層級資源 (例如專案、資料夾和機構) 授予的角色。
選擇要授予所識別預先定義角色的位置:
- 如果主體需要存取特定低層級資源,請授予這些資源的角色。
如果主體需要存取專案、資料夾或機構中的多項資源,請授予專案、資料夾或機構的角色。選擇符合主體需求的最低層級資源。
此外,也建議使用 IAM 條件,僅在專案、資料夾或機構內的特定資源上授予角色。
如果您識別出多個預先定義的角色,請考慮是否應在資源階層的不同層級授予這些角色。舉例來說,如果主體需要存取單一 Cloud SQL 資料庫,但有許多不同的 Compute Engine VM 執行個體,您可能會想在資料庫上授予 Cloud SQL 的角色,並在專案上授予 Compute Engine 的角色。
將角色授予主體
現在可以將角色授予主體。如要瞭解如何授予角色,請參閱下列資源:
授予角色後,您可以使用政策分析工具和政策疑難排解工具,檢查主體可存取哪些資源,並排解存取權問題。如果主體在正確的資源上擁有預期權限,但無法完成工作,可能是您忽略了主體需要的權限。在先前的嘗試中加入必要權限,然後從中找出包含這些權限的角色,並選擇最合適的角色。
如果您不小心授予權限過多的角色,角色建議可能會建議權限較少的角色,以滿足主體的需求。部分角色繫結不會收到角色建議。後續步驟
- 瞭解如何使用政策模擬器,測試主體角色變更。
- 瞭解如何使用政策分析工具,判斷主體對資源的存取權。
- 進一步瞭解如何排解存取問題。