管理標準叢集的存取權

本文說明如何使用 gdcloud CLI,管理 Google Distributed Cloud (GDC) Air-gapped 中標準叢集的權限。標準叢集屬於專案範圍,是可設定的 Kubernetes 環境,預設服務最少,可為自訂工作負載提供更大的彈性和控制權。

如要進一步瞭解標準叢集和其他叢集類型,請參閱「Kubernetes 叢集設定」。

本頁面適用於應用程式運算子群組中的對象,例如開發人員運算或資料科學家,他們需要管理及保護 GDC 專案中的資源。詳情請參閱 GDC 氣隙環境適用的目標對象說明文件

事前準備

  • 請組織 IAM 管理員授予您專案 IAM 管理員 (project-iam-admin) 角色。如要進一步瞭解角色,請參閱「角色定義」一文。
  • 如果尚未安裝,請安裝 gdcloud CLI

授予標準叢集存取權的權限

具有專案 IAM 管理員 (project-iam-admin) 角色的使用者會執行下列步驟,將管理標準叢集存取權所需的角色授予其他使用者:

  1. 使用 gcloud CLI 登入已設定的識別資訊提供者

  2. 授予使用者專案的叢集管理員 (cluster-admin) 角色。這個指令會將使用者繫結至角色,讓他們管理標準叢集內的存取權。

    如要進一步瞭解角色,請參閱「預先定義的角色說明」和「專案的角色定義」。

    gdcloud projects add-iam-policy-binding PROJECT \
      --role=ROLE \
      --member=user:USER_ACCOUNT
    

    請替換下列變數:

    • PROJECT:標準叢集所在的專案名稱。
    • ROLE:要授予的角色名稱 (例如 cluster-admincluster-developer)。
    • USER_ACCOUNT:要授予角色的使用者帳戶,包括與貴機構相關聯的識別資訊提供者前置字元 (例如 idpprefix-user@example.com)。具體使用的前置字元取決於貴機構的 IdP 設定。詳情請參閱「連線至識別資訊提供者」。

    以下範例會將叢集管理員角色授予 user@example.com,假設專案 foo 的身分識別提供者前置字元為 fop-

    gdcloud projects add-iam-policy-binding foo \
      --role=cluster-admin \
      --member=user:fop-user@example.com
    

管理標準叢集內的存取權

獲派 cluster-admin 角色的使用者會執行下列步驟:

  1. 使用 gdcloud CLI 透過已設定的識別資訊提供者登入

  2. 使用 --standard 旗標,為標準叢集產生 kubeconfig 檔案。如要指定標準叢集,就必須設定這個旗標。

    export KUBECONFIG=KUBECONFIG_FILE
    gdcloud get-credentials STANDARD_CLUSTER_NAME --standard --project=PROJECT
    

    請替換下列變數:

    • KUBECONFIG_FILE:kubeconfig 檔案的路徑,例如 standard-cluster-kubeconfig.yaml
    • STANDARD_CLUSTER_NAME:標準叢集的名稱。
    • PROJECT:標準叢集所在的專案名稱。
  3. 使用 kubectl 在標準叢集中定義權限。

    擁有 cluster-admin 權限的使用者可以建立自訂 RoleClusterRole 物件。如要授予這些權限,管理員可以建立對應的 RolebindingClusterRoleBinding 物件,將角色繫結至特定主體,例如使用者或服務帳戶。

    下列範例使用 kubectl,在 test 命名空間中建立名為 test-role 的自訂 Role 範例:

    kubectl apply -f - <<EOF
    apiVersion: rbac.authorization.k8s.io/v1
    kind: Role
    metadata:
      name: test-role
      namespace: test
    rules:
    - apiGroups:
      - ""
      resources:
      - configmaps
      verbs:
      - get
    EOF
    

    下列範例會在 test 命名空間中,為名為 test-roleRole 建立 RoleBinding。這會將權限授予身分提供者前置字串為 fop- 的使用者 alice@example.com,以及 default 命名空間中名為 my-service-accountServiceAccount

    kubectl apply -f - <<EOF
    apiVersion: rbac.authorization.k8s.io/v1
    kind: RoleBinding
    metadata:
      name: test-role-binding
      namespace: test
    subjects:
    - kind: User
      name: fop-alice@example.com
      apiGroup: rbac.authorization.k8s.io
    - kind: ServiceAccount
      name: my-service-account
      namespace: default
    roleRef:
      kind: Role
      name: test-role
      apiGroup: rbac.authorization.k8s.io
    EOF