使用 IAM 對資料夾進行存取權控管

Google Cloud 提供身分與存取權管理 (IAM) 功能,可讓您以更精細的方式授予特定 Google Cloud 資源的存取權,避免其他資源遭到未經授權者擅自存取。IAM 能讓您採用最低權限安全性原則,僅授予必要的資源存取權限給使用者。

設定允許政策之後,即可控管哪些使用者具備何種存取權限 (角色),可以存取哪些資源。允許政策可授予使用者特定角色,讓對方擁有特定權限。

本頁說明適用於資料夾層級的 IAM 角色,以及如何使用 Cloud Resource Manager API 建立及管理資料夾的允許政策。詳情請參閱「管理專案、資料夾和機構的存取權」。

資料夾的 IAM 角色總覽

為了幫助您設定 IAM 角色,下表列出:

  • 您要啟用的動作類型
  • 執行動作須具備的角色
  • 您套用角色需要的資源層級
動作類型 需要角色 資源層級
管理整個機構資源的資料夾 資料夾管理員 組織資源
管理資料夾和其中所有的專案及資料夾 資料夾管理員 特定資料夾
可存取及管理資料夾的允許政策 資料夾 IAM 管理員 特定資料夾
建立新資料夾 資料夾建立者 新資料夾位置的父項資源
移動資料夾和專案 資料夾移動者 新資料夾與原始資料夾位置的父項資源
將專案移動到新資料夾 專案編輯者專案擁有者 新專案與原始專案位置的父項資源
刪除資料夾 資料夾編輯者或資料夾管理員 特定資料夾

在資料夾中使用 IAM 角色與權限的最佳做法

指派要用於資料夾的 IAM 角色和權限時,請注意以下幾點:

  • 盡可能使用群組來管理主體。
  • 盡可能減少基本角色的使用,例如擁有者、編輯者和檢視者。相反地,盡量按照最低權限原則來使用預先定義的角色。
  • 對於資料夾內的管理,請以資料夾層級指派權限,並讓專案自動繼承權限。例如,您可以為部門管理員群組指派資料夾的資料夾管理員角色。需要擁有部門權限的網路管理員,則可以擁有資料夾的網路管理員角色。
  • 在將資源移出資料夾之前,請仔細考慮可能更改的權限。否則,您可能會破壞需要該資源權限的現有應用程式或工作流程。
  • 在將實際工作環境專案移到資料夾之前,請仔細規劃並測試資源階層。執行此操作的方式之一是在您的機構資源中建立一個測試資料夾,並預先建立您所需的階層原型。
  • 在資料夾層級授予使用者角色,也會授予使用者該資料夾下所有資源的角色。舉例來說,如果您授予使用者資料夾的 Compute 管理員角色 (roles/compute.admin),使用者就能完全掌控該資料夾中每個專案的所有 Compute Engine 資源。

瞭解資料夾的角色與權限

預設角色

建立資料夾時,您會被授予資料夾管理員資料夾編輯者的角色,讓身為建立者的您完全控制資料夾。這些角色提供的權限如下所示。這些預設角色可以在允許政策中按一般方式變更。

使用預先定義的角色

角色 權限

(roles/resourcemanager.folderAdmin)

提供處理資料夾的所有可用權限。

可授予此角色的最低層級資源:

  • 資料夾

essentialcontacts.*

  • essentialcontacts.contacts.create
  • essentialcontacts.contacts.delete
  • essentialcontacts.contacts.get
  • essentialcontacts.contacts.list
  • essentialcontacts.contacts.send
  • essentialcontacts.contacts.update

iam.policybindings.*

  • iam.policybindings.get
  • iam.policybindings.list

orgpolicy.constraints.list

orgpolicy.policies.list

orgpolicy.policy.get

resourcemanager.capabilities.*

  • resourcemanager.capabilities.get
  • resourcemanager.capabilities.update

resourcemanager.folders.*

  • resourcemanager.folders.create
  • resourcemanager.folders.createPolicyBinding
  • resourcemanager.folders.delete
  • resourcemanager.folders.deletePolicyBinding
  • resourcemanager.folders.get
  • resourcemanager.folders.getIamPolicy
  • resourcemanager.folders.list
  • resourcemanager.folders.move
  • resourcemanager.folders.searchPolicyBindings
  • resourcemanager.folders.setIamPolicy
  • resourcemanager.folders.undelete
  • resourcemanager.folders.update
  • resourcemanager.folders.updatePolicyBinding

resourcemanager.hierarchyNodes.*

  • resourcemanager.hierarchyNodes.createTagBinding
  • resourcemanager.hierarchyNodes.deleteTagBinding
  • resourcemanager.hierarchyNodes.listEffectiveTags
  • resourcemanager.hierarchyNodes.listTagBindings

resourcemanager.projects.createPolicyBinding

resourcemanager.projects.deletePolicyBinding

resourcemanager.projects.get

resourcemanager.projects.getIamPolicy

resourcemanager.projects.list

resourcemanager.projects.move

resourcemanager.projects.searchPolicyBindings

resourcemanager.projects.setIamPolicy

resourcemanager.projects.updatePolicyBinding

(roles/resourcemanager.folderIamAdmin)

提供管理資料夾允許政策的權限。

可授予此角色的最低層級資源:

  • 資料夾

iam.policybindings.*

  • iam.policybindings.get
  • iam.policybindings.list

resourcemanager.folders.createPolicyBinding

resourcemanager.folders.deletePolicyBinding

resourcemanager.folders.get

resourcemanager.folders.getIamPolicy

resourcemanager.folders.searchPolicyBindings

resourcemanager.folders.setIamPolicy

resourcemanager.folders.updatePolicyBinding

(roles/resourcemanager.folderCreator)

提供瀏覽階層及建立資料夾所需的權限。

可授予此角色的最低層級資源:

  • 資料夾

essentialcontacts.contacts.get

essentialcontacts.contacts.list

orgpolicy.constraints.list

orgpolicy.policies.list

orgpolicy.policy.get

resourcemanager.capabilities.get

resourcemanager.folders.create

resourcemanager.folders.get

resourcemanager.folders.list

resourcemanager.projects.get

resourcemanager.projects.list

(roles/resourcemanager.folderEditor)

提供修改資料夾及查看資料夾允許政策的權限。

可授予此角色的最低層級資源:

  • 資料夾

essentialcontacts.contacts.get

essentialcontacts.contacts.list

orgpolicy.constraints.list

orgpolicy.policies.list

orgpolicy.policy.get

resourcemanager.capabilities.*

  • resourcemanager.capabilities.get
  • resourcemanager.capabilities.update

resourcemanager.folders.delete

resourcemanager.folders.get

resourcemanager.folders.getIamPolicy

resourcemanager.folders.list

resourcemanager.folders.searchPolicyBindings

resourcemanager.folders.undelete

resourcemanager.folders.update

resourcemanager.projects.get

resourcemanager.projects.list

(roles/resourcemanager.folderMover)

提供將專案和資料夾移入或移出上層機構或資料夾的權限。

可授予此角色的最低層級資源:

  • 資料夾

resourcemanager.folders.move

resourcemanager.projects.move

(roles/resourcemanager.folderViewer)

提供取得資料夾及列出資源下資料夾和專案的權限。

可授予此角色的最低層級資源:

  • 資料夾

essentialcontacts.contacts.get

essentialcontacts.contacts.list

orgpolicy.constraints.list

orgpolicy.policies.list

orgpolicy.policy.get

resourcemanager.capabilities.get

resourcemanager.folders.get

resourcemanager.folders.list

resourcemanager.projects.get

resourcemanager.projects.list

建立自訂角色

除了本主題中描述的預先定義角色之外,您也可以建立自訂角色,角色的權限集合按照您的需求而訂。建立自訂角色與 Resource Manager 一起使用時,請注意以下幾點:
  • 「列出」及「取得」這兩項權限,例如 resourcemanager.projects.get/list,需一律同時授予。
  • 當您的自訂角色包含 folders.listfolders.get 權限時,同時也應包含 projects.listprojects.get
  • 請注意,機構、資料夾和專案資源的 setIamPolicy 權限允許使用者授予所有其他權限,因此應謹慎指派。

授予角色以啟用資料夾瀏覽

列表權限可提供資料夾瀏覽。通常需要授予的兩類列表權限其中之一為 resourcemanager.folders.list,這讓使用者能在資源下列出資料夾。另一項權限為 resourcemanager.projects.list,允許使用者瀏覽機構資源或資料夾下的專案。機構管理員初始設定為擁有這兩項權限。對於尚未指派機構管理員角色的使用者:

  • resourcemanager.folders.list 能夠透過資料夾檢視者資料夾編輯者角色進行授予。
  • resourcemanager.projects.list 能夠透過檢視者瀏覽者角色進行授予。

如要讓機構資源主體瀏覽整個機構資源階層,應在機構資源層級授予列表權限。

授予角色以啟用資料夾建立

需要建立資料夾的使用者,要在所需階層建立資料夾,必須先在該階層的上一層資源,先取得資料夾建立者角色授權。 而使用者獲授予資料夾建立權限時,若也同時取得瀏覽權限,便能有效查看資料夾建立的所在階層,這樣對他們可能有助益。參閱上述說明,進一步瞭解瀏覽權限。

資料夾建立者角色並未授予使用者刪除資料夾的權限;不過,在人員建立資料夾時,該人員將自動獲授予資料夾編輯者角色,而資料夾編輯者角色即有權刪除資料夾。

授予角色以啟用資料夾移動

如要將資料夾自父項資源移入另一個父項資源,您在來源及目的地的父項資源或是共同的祖系資源必須具備資料夾移動者角色。

授予角色以啟用專案移動

如要遷移專案至資料夾,使用者必須具有專案的專案編輯者專案擁有者角色,以及來源與目的地父項資源的專案移動者角色。

這與將非機構擁有的專案移動到機構資源中的需求略有不同:使用者必須具有專案的專案編輯者專案擁有者角色,並且在機構資源中具有專案建立者角色。

授予特定資料夾角色以啟用專案建立

如要建立專案,使用者必須具有專案建立者角色。 不過並非授予機構等級的專案建立權限,而是限制使用者僅在特定資料夾中檢視及建立專案。

授予特定資料夾的權限:

  1. 在機構節點層級授予使用者機構檢視者角色 (例如 <網域>.com)。
  2. 建立新資料夾。
  3. 在資料夾層級新增使用者至 IAM 並授予其資料夾檢視者專案建立者角色。

如此一來,使用者即可在未獲得機構資源內所有專案的檢視權限下,在他們的資料夾內建立專案。