使用 IAM 控管存取權
本文說明如何使用 Identity and Access Management,控管 Config Connector 建立及管理 Google Cloud 資源的方式。
如要安裝 Config Connector,請先建立 IAM 服務帳戶進行驗證,然後使用 GKE 適用的 Workload Identity Federation,將 IAM 服務帳戶繫結至 Kubernetes 服務帳戶。Config Connector 可透過 IAM 對特定資源執行操作。限制指派給服務帳戶的權限,可進一步控管 Config Connector 可建立的資源類型。
您可以選擇使用單一或多個服務帳戶管理資源。
單一服務帳戶
使用 GKE 外掛程式或手動安裝 Config Connector 時,您可以在 ConfigConnector
CustomResource 中設定叢集模式。在叢集模式下,您可以使用單一 IAM 服務帳戶建立及管理資源,即使使用 Config Connector 管理多個專案也沒問題。
下圖顯示這個模式的運作方式,其中同一個服務帳戶管理兩個專案:
多個服務帳戶
您可以在 ConfigConnector
CustomResource 中設定命名空間模式,使用多個服務帳戶。命名空間模式可讓您根據不同 IAM 服務帳戶的相關問題劃分權限,並在不同 Kubernetes 命名空間之間隔離權限,因為您可以為每個命名空間關聯不同的服務帳戶。
如果您符合以下情況,請選擇命名空間模式:
- 想在 Kubernetes 命名空間層級隔離 IAM 權限。
- 預期在單一叢集上管理多個專案的大量 Google Cloud 資源 Google Cloud 。
舉例來說,您可以為每個專案建立一個 IAM 服務帳戶,在同一個 Kubernetes 命名空間中整理每個專案的資源,然後將對應的 IAM 服務帳戶繫結至 Kubernetes 命名空間。這樣一來,您就能為每個專案分別設定 IAM 權限,讓每個專案都有一組不相關的權限。
下圖概述命名空間模式的運作方式,其中每個專案都由不同的服務帳戶管理:
在命名空間模式中,每個 IAM 服務帳戶預設都會繫結至命名空間。在該命名空間中建立資源時,Config Connector 會使用這個服務帳戶建立資源。 Google Cloud每個命名空間都有專屬的 Config Connector cnrm-controller-manager
Pod,會模擬與命名空間相關聯的 IAM 服務帳戶。
如要瞭解如何設定命名空間模式,請參閱「使用命名空間模式安裝 Config Connector」。
安裝後調整權限
安裝 Config Connector 時,您可能選取了暫時的基本角色,並將該角色指派給您設定 Config Connector 的服務帳戶。如果您已在命名空間模式中設定 Config Connector,可能會有不只一個 IAM 服務帳戶。
安裝完成後,您可能需要移除或更新廣泛權限,以符合安全性考量和最佳做法。
Config Connector 的主要優勢之一是統一工具。也就是說,您可以使用 Config Connector 本身微調 IAM 角色和權限。您可以在 Config Connector 中使用 IAMPolicyMember 或 IAMPartialPolicy 資源,設定 IAM 權限。這需要具備專案、資料夾或機構管理員權限的 IAM 服務帳戶。這個服務帳戶必須設定為透過叢集模式或命名空間模式,繫結至 Config Connector 安裝作業。
以下各節列出不同的政策範例,這些範例使用 Config Connector 管理 IAM 權限。
機構擁有者權限
如要擴充 Config Connector 的權限,讓它可以管理特定機構的所有專案和資料夾,請完成下列步驟:
建立下列 YAML 資訊清單:
apiVersion: iam.cnrm.cloud.google.com/v1beta1 kind: IAMPolicyMember metadata: name: iampolicymember-orglevel-permission namespace: NAMESPACE spec: member: serviceAccount:SERVICE_ACCOUNT_NAME@HOST_PROJECT_ID.iam.gserviceaccount.com role: roles/owner resourceRef: kind: Organization external: ORGANIZATION_ID
更改下列內容:
NAMESPACE
改為您的命名空間名稱SERVICE_ACCOUNT_NAME
改為您的服務帳戶名稱- 將
HOST_PROJECT_ID
替換為服務帳戶的主專案 ID roles/owner
具有適當角色ORGANIZATION_ID
,並提供機構 ID
使用
kubectl
或您選擇的任何設定管理工具,將 YAML 資訊清單套用到叢集。
資料夾擁有者權限
如要擴充 Config Connector 的權限,以便管理特定資料夾中的所有專案和資料夾,請完成下列步驟:
建立下列 YAML 資訊清單:
apiVersion: iam.cnrm.cloud.google.com/v1beta1 kind: IAMPolicyMember metadata: name: iampolicymember-orglevel-permission namespace: NAMESPACE spec: member: serviceAccount:SERVICE_ACCOUNT_NAME@HOST_PROJECT_ID.iam.gserviceaccount.com role: roles/owner resourceRef: kind: Folder external: folders/FOLDER_ID
更改下列內容:
NAMESPACE
改為您的命名空間名稱SERVICE_ACCOUNT_NAME
改為您的服務帳戶名稱- 將
HOST_PROJECT_ID
替換為服務帳戶的主專案 ID roles/owner
具有適當角色FOLDER_ID
替換成資料夾 ID
使用
kubectl
或您選擇的任何設定管理工具,將 YAML 資訊清單套用到叢集。
專案擁有者權限
如要允許 Config Connector 管理特定專案的資源,請完成下列步驟:
建立下列 YAML 資訊清單:
apiVersion: iam.cnrm.cloud.google.com/v1beta1 kind: IAMPolicyMember metadata: name: iampolicymember-orglevel-permission namespace: NAMESPACE spec: member: serviceAccount:SERVICE_ACCOUNT_NAME@HOST_PROJECT_ID.iam.gserviceaccount.com role: roles/owner resourceRef: kind: Project external: projects/PROJECT_ID
更改下列內容:
NAMESPACE
改為您的命名空間名稱SERVICE_ACCOUNT_NAME
改為您的服務帳戶名稱- 將
HOST_PROJECT_ID
替換為服務帳戶的主專案 ID roles/owner
具有適當角色- 將
PROJECT_ID
改為目標專案 ID
使用
kubectl
或您選擇的任何設定管理工具,將 YAML 資訊清單套用到叢集。
預先定義的角色
如要授予 Config Connector 較有限的權限,可以建立幾個 IAMPolicyMember 資源或合併的 IAMPartialPolicy 資源,將一或多個 IAM 角色指派給 Config Connector 安裝項目。通常會指派給 Config Connector 服務帳戶的角色如下:
編輯者:授予編輯者角色後,使用者就能存取大部分的 Config Connector 功能,但無法進行專案或機構層級的設定,例如修改 IAM。
IAM 服務帳戶管理員角色:授予
roles/iam.serviceAccountAdmin
權限後,Config Connector 就能設定 IAM 服務帳戶。Resource Manager:授予 Resource Manager 角色 (例如
roles/resourcemanager.folderCreator
),可讓 Config Connector 管理資料夾和機構。
自訂角色
如果預先定義的角色不符合您的需求,您可以建立自訂角色並加入您定義的權限。
如要瞭解如何建立及指派自訂角色,請參閱建立及管理自訂角色。
後續步驟
- 瞭解如何依資料夾、專案或機構整理資源。