在 Identity and Access Management (IAM) 中,您可以控管「主體」的存取權。主體代表已向 Google Cloud驗證的一或多個身分。
在政策中使用主體
如要在政策中使用主體,請按照下列步驟操作:
設定 Google Cloud 可辨識的身分。設定身分是建立 Google Cloud 可辨識身分的程序。您可以為使用者和工作負載設定身分。
如要瞭解如何設定身分,請參閱下列文章:
判斷要使用的主要 ID。主體 ID 是您在政策中參照主體的方式。這個 ID 可以指單一身分或一組身分。
您使用的主體 ID 格式取決於下列事項:
- 主體類型
- 要將主體納入的政策類型
如要查看各類型政策中各類型主體的主體 ID 格式,請參閱「主體 ID」。
瞭解 ID 格式後,您就能根據主體的屬性 (例如主體的電子郵件地址),判斷主體的專屬 ID。
在政策中加入主體的 ID。按照政策格式,將主體新增至政策。
如要瞭解 IAM 中不同類型的政策,請參閱「政策類型」。
支援主體類型
每種 IAM 政策類型都支援 IAM 支援的部分主體類型。如要查看各項政策類型支援的主體類型,請參閱「主體 ID」。
主體類型
下表簡要說明 IAM 支援的不同主體類型。如要查看在政策中使用主體類型時的詳細說明和範例,請按一下表格中的主體類型名稱。
| 主體類型 | 說明 | 單一主體或主體組合 | Google 管理或同盟 | 支援的政策類型 |
|---|---|---|---|---|
| Google 帳戶 | 代表與 Google API 和服務互動的使用者帳戶。 | 單一主體 | Google 代管 |
下列政策類型支援 Google 帳戶:
下列政策類型不支援 Google 帳戶:
|
| 服務帳戶 | 這類帳戶是由機器工作負載使用,而非真人。 | 單一主體 | Google 代管 |
下列政策類型支援服務帳戶:
下列政策類型不支援服務帳戶:
|
| 一組服務帳戶 | 專案、資料夾或機構中的所有服務帳戶。 | 包含服務帳戶的主體集。 | Google 代管 |
下列政策類型支援一組服務帳戶:
下列政策類型不支援一組服務帳戶:
|
| 一組服務代理程式 | 與專案、資料夾或機構相關聯的所有 Google 代管服務帳戶 (服務代理)。 | 包含服務代理的主體集。 | Google 代管 |
下列政策類型支援一組服務代理人:
下列政策類型不支援一組服務專員:
|
| Google 群組 | 這是具名的 Google 帳戶集合,包含人類或機器使用者。 |
可包含下列項目的主體集:
|
Google 代管 |
下列政策類型支援 Google 群組:
下列政策類型不支援 Google 群組:
|
| 網域 | 代表虛擬群組的 Google Workspace 帳戶或 Cloud Identity 網域。群組可以包含使用者和服務帳戶。 |
主體集,可包含下列主體類型:
|
Google 代管 |
下列政策類型支援網域:
|
allAuthenticatedUsers |
這種特殊身分識別代表任何透過 Google 帳戶進行驗證的服務帳戶和使用者。 |
主體集,可包含下列主體類型:
|
Google 代管 |
下列政策類型支援部分資源的
下列政策類型不支援
|
allUsers |
這種特殊的身分識別代表網際網路上的所有使用者,包括已驗證和未驗證的使用者。 |
主體集,可包含下列主體類型:
|
兩者並用 |
下列政策類型支援
下列政策類型不支援
|
| 員工身分集區中的單一身分 | 身分由外部 IdP 管理,並透過員工身分聯盟連結的人類使用者。 | 單一主體 | 聯合 |
下列政策類型支援工作團隊身分集區中的單一身分:
|
| 工作團隊身分集區中的一組主體 | 一組人類使用者,其身分由外部 IdP 管理,並透過員工身分聯盟進行聯合。 | 包含工作團隊身分的主體組合。 | 聯合 |
下列政策類型支援工作團隊身分集區中的一組主體:
|
| workload identity pool 中的單一主體 | 身分由外部 IdP 管理,並透過 Workload Identity 聯盟連結的工作負載 (或機器使用者)。 | 單一主體 | 聯合 |
下列政策類型支援 workload identity pool 中的單一主體:
|
| workload identity pool 中的一組主體 | 一組工作負載 (或機器使用者),其身分由外部 IdP 管理,並透過 Workload Identity Federation 進行聯盟。 | 包含 Workload Identity 的主體組合 | 聯合 |
下列政策類型支援 workload identity pool 中的一組主體:
|
| 一組 Google Kubernetes Engine Pod | 在 GKE 上執行並透過 GKE 聯合的工作負載 (或機器使用者)。 | 主體集,可包含一或多個聯合工作負載身分 | 聯合 |
下列政策類型支援 GKE Pod:
下列政策類型不支援 GKE Pod:
|
| 代理商身分 | 經過嚴格驗證的代理式工作負載身分會繫結至代理程式的生命週期。 | 單一主體 | Google 代管 |
下列政策類型支援代理程式身分:
|
| 一組代理程式身分 | 代理程式身分集區中的所有代理程式身分。 | 包含代理程式身分的主體集。 | Google 代管 |
下列政策類型支援一組代理程式身分:
|
| Resource Manager 主體集 | 與 Google Cloud 資源 (例如專案、資料夾和機構) 相關聯的一組人員或機器使用者。 |
主體集,可包含下列主體類型:
|
兩者並用 |
下列政策類型支援 Resource Manager 主體集:
下列政策類型不支援 Resource Manager 主體集:
|
下列各節將詳細說明這些主要類型。
Google 帳戶
Google 帳戶代表開發人員、管理員,或任何其他與 Google Cloud 互動的人員。 Google Cloud 與 Google 帳戶相關聯的任何電子郵件地址 (也稱為受管理的使用者帳戶) 都可以做為主體。包括電子郵件地址和其他網域的電子郵件地址。gmail.com
以下範例說明如何在不同類型的政策中找出 Google 帳戶:
- 允許政策:
user:alex@example.com - 拒絕政策:
principal://goog/subject/alex@example.com
如要進一步瞭解主體 ID 格式,請參閱「主體 ID」。
在允許和拒絕政策中,與 Google 帳戶或受管理使用者帳戶相關聯的電子郵件別名,會自動替換為主要電子郵件地址。也就是說,當您授予電子郵件別名存取權時,政策會顯示使用者的主要電子郵件地址。
如要進一步瞭解如何設定 Google 帳戶,請參閱「Cloud Identity 或 Google Workspace 帳戶」。
服務帳戶
服務帳戶是應用程式或運算工作負載的帳戶,而非個別使用者的帳戶。服務帳戶可分為使用者代管服務帳戶和 Google 代管服務帳戶,後者稱為服務代理:
執行 Google Cloud上託管的程式碼時,您可以指定要使用的服務帳戶做為應用程式的身分。您可以視需要建立多個使用者管理的服務帳戶,代表應用程式的不同邏輯元件。
部分 Google Cloud 服務需要存取您的資源,才能代表您執行動作。為滿足這項需求,Google 會建立及管理服務代理。
您可以透過下列方式參照服務帳戶和服務代理:
- 單一服務帳戶
- 專案中的所有服務帳戶
- 與專案相關聯的所有服務代理程式
- 資料夾中所有專案的所有服務帳戶
- 與資料夾及其子項相關聯的所有服務代理程式
- 機構中所有專案的所有服務帳戶
- 與機構及其子系相關聯的所有服務代理程式
以下範例說明如何在不同類型的政策中找出個別服務帳戶:
- 允許政策中的服務帳戶:
serviceAccount:my-service-account@my-project.iam.gserviceaccount.com - 拒絕政策中的服務帳戶:
principal://iam.googleapis.com/projects/-/serviceAccounts/my-service-account@my-project.iam.gserviceaccount.com
下列範例說明如何在不同類型的政策中,找出專案、資料夾或機構的所有服務帳戶:
- 允許政策中專案的所有服務帳戶:
principalSet://cloudresourcemanager.googleapis.com/projects/123456789012/type/ServiceAccount - 拒絕政策中與資料夾相關聯的所有服務代理:
principalSet://cloudresourcemanager.googleapis.com/folders/123456789012/type/ServiceAgent
如要進一步瞭解主體 ID 格式,請參閱「主體 ID」。
如要進一步瞭解服務帳戶,請參閱下列頁面:
Google 網路論壇
Google 群組是 Google 帳戶的統稱。每個 Google 群組都有與該群組相關聯的專屬電子郵件地址。如要查看與 Google 網路論壇關聯的電子郵件地址,請在每個 Google 網路論壇的首頁上按一下「關於」。如要進一步瞭解 Google 網路論壇,請參閱 Google 網路論壇首頁。
Google 群組可讓您輕鬆為一組主體套用存取控管。您可以一次對整個群組執行存取權授予和變更作業,省去逐一為個別主體執行存取權授予和變更作業的麻煩。您也可以在 Google 群組中新增或移除主體,不必更新允許政策。
Google 群組沒有登入憑證,因此您無法使用 Google 群組建立身分,要求存取資源。
以下範例說明如何在不同類型的政策中找出 Google 群組:
- 允許政策:
group:my-group@example.com - 拒絕政策:
principalSet://goog/group/my-group@example.com
如要進一步瞭解主體 ID 格式,請參閱「主體 ID」。
如要進一步瞭解如何使用群組控管存取權,請參閱使用 Google 群組的最佳做法。
網域
網域可以是 Google Workspace 帳戶或 Cloud Identity 網域。兩者本質上相同,因為都代表所含所有 Google 帳戶的虛擬群組。唯一差別在於 Cloud Identity 網域使用者無法存取 Google Workspace 應用程式和功能。
與 Google 群組一樣,網域無法用於建立身分,但可方便管理權限。
為新使用者 (例如 username@example.com) 建立 Google 帳戶時,該帳戶會新增至 Google Workspace 帳戶或 Cloud Identity 網域的虛擬群組。修改 Google Workspace 帳戶或 Cloud Identity 網域的存取權時,您會修改該虛擬群組中所有 Google 帳戶的存取權。
以下範例說明如何在不同類型的政策中找出網域:
- 允許政策:
domain:example.com - 拒絕政策:
principalSet://goog/cloudIdentityCustomerId/C01Abc35 - 主體存取邊界政策:
//iam.googleapis.com/locations/global/workspace/C01Abc35
如要進一步瞭解主體 ID 格式,請參閱「主體 ID」。
如要進一步瞭解 Cloud Identity,請參閱「關於 Cloud Identity」。
次要網域
建立 Google Workspace 帳戶或 Cloud Identity 網域時,系統會指派專屬的客戶 ID。然後提供網域名稱,做為您的主網域名稱,例如 example.com。
建立主網域後,您也可以新增次要網域,並使用自己的網域名稱。不過,這些網域與主網域的客戶 ID 相同。
IAM 會使用客戶 ID 識別網域中的成員,而非網域名稱。因此無法分別管理主網域和次要網域的存取權。即使是允許政策,您也必須使用網域名稱來識別網域。評估允許政策時,身分與存取權管理會找出與該網域相關聯的客戶 ID,然後使用該客戶 ID (而非網域名稱) 識別該網域的成員。
允許政策中的網域名稱預設為主網域名稱。如果您使用次要網域名稱授予網域存取權,系統會自動將其替換為對應的主網域名稱。
allAuthenticatedUsers
allAuthenticatedUsers 值是一種特殊身分識別,代表任何透過 Google 帳戶進行驗證的服務帳戶和使用者。這個識別包含未連結至 Google Workspace 帳戶或 Cloud Identity 網域的帳戶,例如個人 Gmail 帳戶。未通過驗證的使用者,如匿名訪客,不會具有這個識別碼。
這類主體不包括由外部身分識別提供者 (IdP) 管理的聯盟身分。如果您使用員工身分聯盟或 Workload Identity 聯盟,請勿使用 allAuthenticatedUsers。請改用下列其中一種做法:
- 如要納入所有 IdP 的使用者,請使用
allUsers。 - 如要納入特定外部 IdP 的使用者,請使用工作團隊身分集區中的所有身分或工作負載身分集區中的所有身分的 ID。
部分資源類型不支援這個主體類型。
allUsers
allUsers 值是一個特殊識別碼,代表網際網路上的任何使用者,包括已驗證和未驗證的使用者。
部分資源類型不支援這個主體類型。
以下範例說明不同類型的政策中,allUsers ID 可能的樣貌:
- 支援資源類型的允許政策:
allUsers - 拒絕政策:
principalSet://goog/public:all
如要進一步瞭解主體 ID 格式,請參閱「主體 ID」。
工作團隊身分集區中的聯合身分
員工身分集區是一組使用者身分,由外部 IdP 管理,並透過員工身分聯盟連結。您可以透過下列方式參照這些集區中的主體:
- 工作團隊身分集區中的單一身分
- 指定群組中的所有員工身分
- 具有特定屬性值的所有員工身分
- 員工身分集區中的所有身分
以下範例說明如何在不同類型的政策中,識別同盟工作人員身分集區:
- 允許政策中的單一身分:
principal://iam.googleapis.com/locations/global/workforcePools/altostrat-contractors/subject/raha@altostrat.com - 拒絕政策中的身分群組:
principalSet://iam.googleapis.com/locations/global/workforcePools/altostrat-contractors/group/administrators-group@altostrat.com - 主體存取邊界政策中的員工身分集區:
//iam.googleapis.com/locations/global/workforcePools/example-workforce-pool
如要進一步瞭解主體 ID 格式,請參閱「主體 ID」。
workload identity pool 中的聯合身分
工作負載身分集區是一組工作負載身分,由外部 IdP 管理,並使用 Workload Identity 聯盟進行連結。您可以透過下列方式參照這些集區中的主體:
- workload identity pool 中的單一身分
- 指定群組中的所有工作負載身分
- 具有特定屬性值的所有工作負載身分
- 特定 workload identity pool 中的所有身分
下列範例說明如何在不同類型的政策中,識別聯盟工作負載身分集區:
- 允許政策中的單一身分:
principal://iam.googleapis.com/projects/123456789012/locations/global/workloadIdentityPools/altostrat-contractors/subject/raha@altostrat.com - 拒絕政策中的身分群組:
principalSet://iam.googleapis.com/projects/123456789012/locations/global/workloadIdentityPools/altostrat-contractors/group/administrators-group@altostrat.com - 主體存取邊界政策中的 Workload Identity Pool:
//iam.googleapis.com/projects/123456789012/locations/global/workloadIdentityPools/example-workload-pool
如要進一步瞭解主體 ID 格式,請參閱「主體 ID」。
GKE Pod
在 GKE 上執行的工作負載會使用 Workload Identity Federation for GKE 存取 Google Cloud 服務。如要進一步瞭解 GKE Pod 的主體 ID,請參閱「在 IAM 政策中參照 Kubernetes 資源」。
以下範例說明如何在允許政策中,識別特定叢集中的所有 GKE Pod:
principalSet://iam.googleapis.com/projects/123456789012/locations/global/workloadIdentityPools/123456789012.svc.id.goog/kubernetes.cluster/https://container.googleapis.com/v1/projects/123456789012/locations/global/clusters/example-gke-cluster
如要進一步瞭解主體 ID 格式,請參閱「主體 ID」。
服務專員身分
代理程式身分是 Google 管理的代理程式工作負載身分。系統會驗證代理程式身分,並將其繫結至代理程式的生命週期,因此相較於使用服務帳戶,這種方式更安全,可管理代理程式對 Google Cloud 資源的存取權。
系統會自動為每個代理程式佈建代理程式身分。您可以使用 IAM 政策授予或拒絕資源的存取權。 Google Cloud
以下範例說明如何在允許或拒絕政策中識別代理程式身分:
principal://agents.global.org-123456789012.system.id.goog/resources/aiplatform/projects/9876543210/locations/us-central1/reasoningEngines/my-test-agent
如要進一步瞭解主體 ID 格式,請參閱「主體 ID」。
Resource Manager 主體組合
每個 Resource Manager 資源 (例如專案、資料夾或機構) 都會與一組主體建立關聯。建立主體存取權範圍政策繫結時,您可以使用 Resource Manager 資源的主體集,參照與該資源相關聯的所有主體。
Resource Manager 資源的主體集包含下列主體:
- 專案主體集:指定專案中的所有服務帳戶和工作負載身分集區。
- 資料夾主體集:指定資料夾中任何專案的所有服務帳戶和工作負載身分集區。
機構主體組合:包含下列身分:
- 與 Google Workspace 客戶 ID 相關聯的所有網域中的所有身分
- 貴機構中的所有員工身分集區
- 機構中任何專案的所有服務帳戶和工作負載身分集區
以下範例說明如何在主體存取邊界政策中,識別專案的主體集:
//cloudresourcemanager.googleapis.com/projects/example-project
如要進一步瞭解主體 ID 格式,請參閱「主體 ID」。