管理標準叢集的存取權

本文說明如何在 Google Distributed Cloud (GDC) 實體隔離環境的標準叢集中授予存取權及管理權限。標準叢集屬於專案範圍,是可設定的 Kubernetes 環境,內含最少的預設服務,可為自訂工作負載提供更大的彈性和控制權。

如要瞭解如何管理 Standard 叢集生命週期 (例如建立或刪除叢集),請參閱「建立 Standard 叢集」和「刪除 Standard 叢集」。

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

這份文件適用於應用程式運算子群組中的對象,例如開發人員作業或資料科學家,他們需要在 GDC 專案中管理及保護資源。詳情請參閱「GDC air-gapped 說明文件適用對象」。

事前準備

管理標準叢集的存取權前,您必須具備必要的權限,並準備好環境。

要求 IAM 角色

如要取得管理標準叢集存取權所需的權限,請根據您需要執行的工作要求下列角色:

  • 如要授予及管理標準叢集的專案層級 IAM 政策繫結,請聯絡 IAM 組織管理員,要求「IAM 專案管理員」(project-iam-admin) 角色。
  • 如要在標準叢集中管理叢內 Kubernetes 角色型存取權控管 (RBAC) 並部署工作負載,請要求 IAM 專案管理員授予您「叢集管理員」 (cluster-admin) 角色。

準備環境

  • 如果尚未下載並安裝 gdcloud CLI,請先完成此步驟。

  • 安裝 kubectl CLI。

授予標準叢集存取權

具備 IAM 專案管理員 (project-iam-admin) 角色的使用者,可以授予其他使用者管理標準叢集存取權的必要角色:

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

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

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

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

    請替換下列變數:

    • PROJECT:標準叢集所在的專案名稱。
    • ROLE:要授予的角色名稱 (例如 cluster-admin)。
    • 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 clusters get-credentials STANDARD_CLUSTER_NAME --standard --project=PROJECT
    

    請替換下列變數:

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

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

    以下範例使用 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-role 的 Role 建立 RoleBinding。這會將權限授予身分識別提供者前置字串為 fop- 的使用者 alice@example.com,以及 default 命名空間中名為 my-service-account 的 ServiceAccount:

    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