本頁面說明 Google Cloud的 Identity and Access Management (IAM) 系統運作方式,以及如何使用該系統管理 Google Cloud的存取權。
IAM 是一項工具,可管理Google Cloud的精細授權。換句話說,您可以控管「哪些人」可以對「哪些資源」執行「哪些操作」。
存取 Google Cloud
在 Google Cloud 中,每個動作都需要特定權限。當使用者嘗試在 Google Cloud中執行動作 (例如建立 VM 執行個體或查看資料集) 時,IAM 會先檢查使用者是否具備必要權限。如果沒有,IAM 會禁止他們執行該動作。
在 IAM 中授予權限時,需要用到下列三個元件:
- 主體:您要授予權限的人員或系統身分
- 角色:您要授予主體的權限集合
- 資源:您要允許主體存取的資源 Google Cloud
如要授予主體資源存取權,請為該主體指派資源的角色。您可以使用允許政策授予這些角色。
下列各節會進一步說明這些概念。
主體
在 Google Cloud 中,您可以控管「主體」的存取權。主體代表已向 Google Cloud驗證的一或多個身分。
主體原稱為「成員」。某些 API 仍採行這種用法。
IAM 中有各種主體類型,但大致可分為兩大類:
人類使用者:部分 IAM 主體類型代表人類使用者。您可以使用這些主體類型,管理員工對Google Cloud 資源的存取權。
代表人類使用者的主體類型包括 Google 帳戶、Google 群組,以及員工身分集區中的聯合身分。
工作負載:部分 IAM 主體類型代表工作負載。 管理工作負載的資源存取權時,您會使用這些主體類型。Google Cloud
代表工作負載的主體類型包括服務帳戶,以及 Workload Identity 集區中的聯合身分。
如要進一步瞭解主體,請參閱「IAM 主體」。
權限與角色
權限可決定哪些作業能對資源執行。在 IAM 中,權限通常以 service.resource.verb
的形式表示。權限通常與 REST API 方法一一對應,例如 resourcemanager.projects.list
權限可讓您列出 Resource Manager 專案。
您無法直接授予主體權限。而是透過授予「角色」,將權限授予主體。
角色是一組權限。授予角色之後 主體就會取得該角色具備的所有權限
角色分為三種:
預先定義的角色:由 Google Cloud 服務管理的角色。 這些角色包含執行各項服務一般工作所需的權限。舉例來說,Pub/Sub 發布者角色 (
roles/pubsub.publisher
) 提供將訊息發布至 Pub/Sub 主題的權限。自訂角色:您建立的角色,只包含您指定的權限。您可以完全掌控這些角色的權限。 不過,自訂角色的維護負擔比預先定義的角色更高,而且專案和機構中的自訂角色數量有限。
基本角色:權限極高的角色,可廣泛存取服務。Google Cloud 這些角色可用於測試,但不應在實際執行環境中使用。
如要進一步瞭解角色和權限,請參閱「角色和權限」。
資源
大多數 Google Cloud 服務都有自己的資源。舉例來說,Compute Engine 具有執行個體、磁碟和子網路等資源。
在 IAM 中,您可以對資源授予角色。將資源的角色授予主體,代表主體可以使用該角色中的權限存取資源。
您可以針對部分 Google Cloud 資源授予角色。如需可授予角色的資源完整清單,請參閱「接受允許政策的資源類型」。
Google Cloud 也有多個容器資源,包括專案、資料夾和機構。在容器資源上授予主體角色,主體就能存取容器資源和該容器中的資源。這項功能可讓您透過單一角色授權,授予主體多項資源的存取權,包括您無法直接授權角色的資源。詳情請參閱本頁的「政策繼承」一節。
允許政策
您可以使用允許政策將角色授予主體。這些政策先前稱為 IAM 政策。
允許政策是附加至 Google Cloud資源的 YAML 或 JSON 物件。
下圖顯示允許政策的結構:
每項允許政策都包含角色繫結清單,可將 IAM 角色與獲授這些角色的主體建立關聯。
當經過驗證的主體嘗試存取資源時,IAM 會檢查資源的允許政策,判斷主體是否具備必要權限。如果主體位於角色繫結中,且該繫結包含具備必要權限的角色,主體就能存取資源。
如要查看允許政策的範例並瞭解其結構,請參閱「瞭解允許政策」。
政策繼承
Google Cloud 提供容器資源 (例如專案、資料夾和機構),讓您以父項/子項階層結構整理資源。這個階層稱為「資源階層」。
Google Cloud 資源階層的結構如下:
- 機構是階層結構中的根節點。
- 資料夾是機構或其他資料夾的子項。
- 專案是機構或資料夾的子項。
- 各項服務的資源是專案的子系。
下圖為 Google Cloud 資源階層的範例:
如果您在容器資源上設定允許政策,該政策也會套用至容器中的所有資源。這個概念稱為「政策沿用」,因為子項資源會沿用父項資源的允許政策。
政策繼承有下列注意事項:
您可以使用單一角色繫結,授予多項資源的存取權。 如要授予主體容器中所有資源的存取權,請為該主體指派容器的角色,而非容器中資源的角色。
舉例來說,如果您想讓安全管理員管理機構中所有資源的允許政策,可以授予他們機構的安全管理員角色 (
roles/iam.securityAdmin
)。您可以授予沒有專屬允許政策的資源存取權。並非所有資源都接受允許政策,但所有資源都會繼承祖先的允許政策。如要授予主體無法擁有專屬允許政策的資源存取權,請在其中一個資源上層授予角色。
舉例來說,假設您想授權某人將記錄寫入記錄值區,記錄值區沒有自己的允許政策,因此如要授予使用者這項權限,請改為在含有記錄值區的專案中,授予使用者「記錄值區寫入者」角色 (
roles/logging.bucketWriter
)。如要瞭解誰可以存取資源,您也需要查看所有影響資源的允許政策。如要取得有權存取資源的主體完整清單,您需要查看資源的允許政策和資源上層的允許政策。所有這些政策的聯集稱為「有效允許政策」。
如要進一步瞭解允許政策的政策繼承,請參閱使用資源階層控管存取權。
進階存取權控管
除了允許政策,IAM 還提供下列存取權控管機制,協助您精確控管哪些使用者可以存取哪些資源:
其他政策類型:除了允許政策外,IAM 還提供下列政策類型:
拒絕政策:拒絕政策可防止主體使用特定權限,即使主體獲派具有該權限的角色也一樣。
主體存取邊界 (PAB) 政策:主體存取邊界政策會定義及強制執行主體可存取的資源。即使主體已獲派資源角色,如果沒有存取資源的資格,也無法存取資源。
如要進一步瞭解這些政策,請參閱「政策類型」。
IAM 條件:IAM 條件可讓您定義及強制執行條件式、以屬性為基礎的存取權控管。您可以在各種政策類型中使用條件。舉例來說,您可以在允許政策中為角色繫結新增條件,確保只有在符合條件時,系統才會授予角色。
您可以根據要求中的資源和要求時間等屬性編寫條件。
如要進一步瞭解 IAM 條件,請參閱 IAM 條件總覽。
Privileged Access Manager (PAM):透過 Privileged Access Manager,您可以讓主體要求並獲得資源的臨時存取權,且存取權可供稽核。舉例來說,您可以要求主體每次想查看敏感資源時都必須提出存取要求,而不是永久授予 IAM 角色。
您也可以設定主體是否需要在要求存取權時提供理由或取得核准。
如要進一步瞭解 Privileged Access Manager,請參閱「Privileged Access Manager 總覽」。
IAM API 的一致性模型
IAM API 最終會保持一致。換句話說,如果您使用 IAM API 寫入資料,然後立即讀取該資料,讀取作業可能會傳回舊版資料。此外,您所做的變更可能需要一段時間才會影響存取檢查。
這種一致性模型會影響 IAM API 的運作方式。舉例來說,如果您建立服務帳戶,然後立即在另一個要求中參照該服務帳戶,IAM API 可能會表示找不到該服務帳戶。這種行為的發生,是因為作業最終會保持一致性;新的服務帳戶可能需要一段時間,才會顯示在讀取要求中。
後續步驟
- 如要瞭解如何為 Google Cloud設定身分,請參閱 Google Cloud的身分管理。
- 如要瞭解如何授予、變更及撤銷主體的 IAM 角色,請參閱「管理專案、資料夾和機構的存取權」。
- 如需可用 IAM 角色的清單,請參閱預先定義的角色。
- 如需選擇最合適預先定義角色的相關說明,請參閱「尋找合適的預先定義角色」。
- 如要進一步瞭解 IAM 提供的政策類型,請參閱「政策類型」。