本頁說明如何管理 Distributed Cloud 連線中的使用者。
建立 Distributed Cloud 連線叢集時,只有您用來建立叢集的使用者帳戶,才能存取該叢集。如要授予更多使用者叢集存取權,請採取下列任一做法:
使用 Kubernetes RBAC 授予必要權限
本節說明如何使用 Kubernetes 角色式存取權控管 (RBAC),將使用者業務需求所需的權限授予使用者帳戶。這些權限會封裝在多個角色中。將適當角色授予使用者帳戶後,即可將該帳戶新增至目標 Distributed Cloud 連線叢集。
Distributed Cloud Connected 不支援 Identity and Access Management 群組或第三方身分識別提供者,無法在 Distributed Cloud Connected 叢集上搭配 Kubernetes RBAC 使用。
您需要使用下列 Kubernetes 資源,將角色授予使用者:
ClusterRole:可讓您將一組權限套用至叢集中的任何命名空間,並授予叢集範圍資源的存取權。ClusterRoleBinding:將ClusterRole資源繫結至使用者帳戶。Role:可讓您將一組權限套用至特定命名空間。RoleBinding:將Role或ClusterRole資源繫結至特定命名空間中的使用者帳戶。
授予叢集管理員權限
建立 Distributed Cloud 連線叢集時,您使用的使用者帳戶會自動成為叢集管理員。如要將叢集管理員權限授予其他使用者,請建立 ClusterRoleBinding 資源,將目標使用者帳戶繫結至 cluster-admin 角色,然後將該資源套用至叢集:
apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRoleBinding metadata: name: BINDING_NAME subjects: kind: User name: ACCOUNT_NAME roleRef: kind: ClusterRole name: cluster-admin apiGroup: rbac.authorization.k8s.io
更改下列內容:
BINDING_NAME:可專屬識別這個角色繫結的名稱。ACCOUNT_NAME:目標使用者帳戶的名稱。
您也可以使用下列 kubectl 指令:
kubectl create clusterrolebinding "BINDING_NAME" \ --clusterrole cluster-admin --user "ACCOUNT_NAME"
更改下列內容:
BINDING_NAME:可專屬識別這個角色繫結的名稱。ACCOUNT_NAME:目標使用者帳戶的名稱。
授予應用程式開發人員權限
如要授予應用程式開發人員在目標叢集上部署工作負載所需的權限,請按照下列步驟操作:
建立
Role資源,授予在目標命名空間中建立及管理 Pod、Service 和部署項目的權限,並將其套用至叢集:apiVersion: rbac.authorization.k8s.io/v1 kind: Role metadata: namespace: NAMESPACE name: ROLE_NAME rules: apiGroups: ["apps", ""] resources: ["pods", "deployments", "services"] verbs: ["get", "list", "watch", "create", "update", "patch", "delete"]
更改下列內容:
NAMESPACE:目標命名空間的名稱。ROLE_NAME:可專屬識別這個角色的名稱。
建立
RoleBinding資源,將目標使用者帳戶繫結至上一個步驟中建立的角色,並套用至叢集:apiVersion: rbac.authorization.k8s.io/v1 kind: RoleBinding metadata: namespace: NAMESPACE name: BINDING_NAME subjects: kind: User name: ACCOUNT_NAME kind: User name: ACCOUNT_NAME roleRef: kind: Role name: ROLE_NAME apiGroup: rbac.authorization.k8s.io
更改下列內容:
BINDING_NAME:可專屬識別這個角色繫結的名稱。NAMESPACE:目標命名空間的名稱。ACCOUNT_NAME:目標使用者帳戶的名稱。ROLE_NAME:目標角色的名稱。
授予 Cloud Build 服務代理程式的權限
如要授予 Cloud Build 服務代理在目標叢集上部署工作負載的必要權限,請按照下列步驟操作:
建立
Role資源,授予在目標命名空間中建立及管理 Pod、Service 和部署項目的權限,並將其套用至叢集:apiVersion: rbac.authorization.k8s.io/v1 kind: Role metadata: namespace: NAMESPACE name: ROLE_NAME rules: apiGroups: ["apps", ""] resources: ["pods", "deployments", "services"] verbs: ["get", "list", "watch", "create", "update", "patch", "delete"]
更改下列內容:
NAMESPACE:目標命名空間的名稱。ROLE_NAME:可專屬識別這個角色的名稱。
建立
RoleBinding資源,將目標 Cloud Build 服務代理人帳戶繫結至上一個步驟中建立的角色,並套用至叢集:apiVersion: rbac.authorization.k8s.io/v1 kind: RoleBinding metadata: namespace: NAMESPACE name: BINDING_NAME subjects: kind: User name: PROJECT_ID@cloudbuild.gserviceaccount.com roleRef: kind: Role name: ROLE_NAME apiGroup: rbac.authorization.k8s.io
更改下列內容:
BINDING_NAME:可專屬識別這個角色繫結的名稱。NAMESPACE:目標命名空間的名稱。PROJECT_ID:目標 Google Cloud 專案的 ID。ROLE_NAME:目標角色的名稱。
如要授予 Cloud Build 服務代理程式權限,在目標叢集的所有命名空間中部署及管理工作負載,請建立 ClusterRole 和 ClusterRoleBinding 資源,而非 Role 和 RoleBinding 資源。
授予檢視叢集資訊的權限
如要授予必要權限,以便在 Google Cloud 控制台中查看叢集的詳細資訊,請按照下列步驟操作:
建立
ClusterRole資源,讓 Connect 代理程式模擬需要在 Google Cloud 控制台中查看叢集資訊的使用者:apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRole metadata: name: ROLE_NAME rules: apiGroups: [""] resources: ["users"] verbs: ["impersonate"] resourceNames: ["ACCOUNT_NAME"]
更改下列內容:
ROLE_NAME:目標角色的名稱。ACCOUNT_NAME:目標使用者帳戶的名稱。
建立
ClusterRoleBinding資源,將 Connect 代理程式服務代理程式帳戶繫結至您在上一個步驟中建立的角色,並套用至叢集:apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRoleBinding metadata: name: BINDING_NAME subjects: kind: ServiceAccount name: ACCOUNT_NAME roleRef: kind: ClusterRole name: ROLE_NAME apiGroup: rbac.authorization.k8s.io
更改下列內容:
BINDING_NAME:可專屬識別這個角色繫結的名稱。ACCOUNT_NAME:目標服務使用者帳戶的名稱。ROLE_NAME:目標角色的名稱。
您必須為每位受影響的使用者建立個別的 ClusterRole 和 ClusterRoleBinding 資源配對。
您也可以使用 kubectl 指令列工具,授予查看叢集資訊所需的權限,方法如下:
建立
ClusterRole資源,讓 Connect 代理程式模擬需要在 Google Cloud 控制台中查看叢集資訊的使用者:kubectl create clusterrole "ROLE_NAME" --verb impersonate \ --resource users --resource-name "ACCOUNT_NAME"
更改下列內容:
ROLE_NAME:目標角色的名稱。ACCOUNT_NAME:目標服務使用者帳戶的名稱。
建立
ClusterRoleBinding資源,將 Connect 代理程式服務代理程式帳戶繫結至您在上一個步驟中建立的角色,並套用至叢集:kubectl create clusterrolebinding "BINDING_NAME" --clusterrole \ "ROLE_NAME" --serviceaccount "ACCOUNT_NAME"
更改下列內容:
BINDING_NAME:可專屬識別這個角色繫結的名稱。ACCOUNT_NAME:目標服務使用者帳戶的名稱。ROLE_NAME:目標角色的名稱。
使用連線閘道存取 Distributed Cloud connected 叢集
您可以選擇使用連線閘道存取 Distributed Cloud 連線叢集。視業務需求而定,連線閘道使用者需要下列一或多個角色:
- Connect Gateway 管理員 (
roles/gkehub.gatewayAdmin):授予 Connect Gateway API 的存取權。這樣就能使用kubectl指令列工具管理叢集。 - 閘道閘道編輯者 (
roles/gkehub.gatewayEditor):授予叢集的讀寫存取權。 - Connect Gateway 讀取者 (
roles/gkehub.gatewayReader):授予叢集的唯讀存取權。 - GKE Hub 檢視者 (
roles/gkehub.viewer):授予從叢集擷取kubeconfig檔案的權限。
如要進一步瞭解如何使用連線閘道,請參閱下列文章: