Mengelola pengguna yang terhubung ke Distributed Cloud

Halaman ini menjelaskan cara mengelola pengguna di Distributed Cloud yang terhubung.

Saat Anda membuat cluster yang terhubung ke Distributed Cloud, hanya akun pengguna yang Anda gunakan untuk membuat cluster yang diberi akses ke cluster tersebut. Untuk memberikan akses ke cluster kepada lebih banyak pengguna, Anda dapat melakukan salah satu hal berikut:

Memberikan izin yang diperlukan menggunakan RBAC Kubernetes

Bagian ini menjelaskan cara memberikan izin yang diperlukan oleh kebutuhan bisnis pengguna ke akun pengguna menggunakan Role-Based Access Control (RBAC) Kubernetes. Izin ini dienkapsulasi oleh beberapa peran. Setelah memberikan peran yang sesuai ke akun pengguna, Anda dapat menambahkan akun tersebut ke target cluster yang terhubung Distributed Cloud.

Distributed Cloud terhubung tidak mendukung grup Identity and Access Management atau penyedia identitas pihak ketiga untuk digunakan dengan RBAC Kubernetes di cluster Distributed Cloud terhubung.

Anda harus menggunakan resource Kubernetes berikut untuk memberikan peran kepada pengguna:

  • ClusterRole: memungkinkan Anda menerapkan serangkaian izin ke namespace mana pun dalam cluster; juga memberikan akses ke resource di seluruh cluster.
  • ClusterRoleBinding: mengikat resource ClusterRole ke akun pengguna.
  • Role: memungkinkan Anda menerapkan serangkaian izin ke namespace tertentu.
  • RoleBinding: mengikat resource Role atau ClusterRole ke akun pengguna di namespace tertentu.

Memberikan izin untuk administrator cluster

Saat Anda membuat cluster yang terhubung ke Distributed Cloud, akun pengguna yang Anda gunakan untuk melakukannya akan otomatis menjadi administrator cluster. Untuk memberikan izin administrator cluster kepada pengguna tambahan, ikat akun pengguna target ke peran cluster-admin dengan membuat resource ClusterRoleBinding dan terapkan ke cluster:

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    

Ganti kode berikut:

  • BINDING_NAME: nama yang mengidentifikasi binding peran ini secara unik.
  • ACCOUNT_NAME: nama akun pengguna target.

Anda juga dapat menggunakan perintah kubectl berikut:

kubectl create clusterrolebinding "BINDING_NAME" \
  --clusterrole cluster-admin --user "ACCOUNT_NAME"

Ganti kode berikut:

  • BINDING_NAME: nama yang mengidentifikasi binding peran ini secara unik.
  • ACCOUNT_NAME: nama akun pengguna target.

Memberikan izin untuk developer aplikasi

Untuk memberikan izin yang diperlukan kepada developer aplikasi untuk men-deploy workload di cluster target, lakukan hal berikut:

  1. Buat resource Role yang memberikan izin untuk membuat dan mengelola Pod, Service, dan deployment di namespace target, lalu terapkan ke cluster:

    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"]
    

    Ganti kode berikut:

    • NAMESPACE: nama namespace target.
    • ROLE_NAME: nama yang secara unik mengidentifikasi peran ini.
  2. Buat resource RoleBinding yang mengikat akun pengguna target ke peran yang Anda buat di langkah sebelumnya dan terapkan ke cluster:

    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  
    

    Ganti kode berikut:

    • BINDING_NAME: nama yang mengidentifikasi binding peran ini secara unik.
    • NAMESPACE: nama namespace target.
    • ACCOUNT_NAME: nama akun pengguna target.
    • ROLE_NAME: nama peran target.

Memberikan izin untuk Agen Layanan Cloud Build

Untuk memberikan izin yang diperlukan kepada Agen Layanan Cloud Build untuk men-deploy beban kerja pada cluster target, lakukan hal berikut:

  1. Buat resource Role yang memberikan izin untuk membuat dan mengelola Pod, Service, dan deployment di namespace target, lalu terapkan ke cluster:

    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"]
    

    Ganti kode berikut:

    • NAMESPACE: nama namespace target.
    • ROLE_NAME: nama yang secara unik mengidentifikasi peran ini.
  2. Buat resource RoleBinding yang mengikat akun Agen Layanan Cloud Build target ke peran yang Anda buat pada langkah sebelumnya dan terapkan ke cluster:

    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  
    

    Ganti kode berikut:

    • BINDING_NAME: nama yang mengidentifikasi binding peran ini secara unik.
    • NAMESPACE: nama namespace target.
    • PROJECT_ID: ID project Google Cloud target.
    • ROLE_NAME: nama peran target.

Jika Anda perlu memberikan izin Agen Layanan Cloud Build untuk men-deploy dan mengelola workload di semua namespace pada cluster target, buat resource ClusterRole dan ClusterRoleBinding, bukan resource Role dan RoleBinding.

Memberikan izin untuk melihat informasi cluster

Untuk memberikan izin yang diperlukan guna melihat informasi mendetail tentang cluster di konsol Google Cloud , lakukan hal berikut:

  1. Buat resource ClusterRole yang memungkinkan Agen Koneksi meniru identitas pengguna yang perlu melihat informasi cluster di konsol Google Cloud :

    apiVersion: rbac.authorization.k8s.io/v1
    kind: ClusterRole
    metadata:
     name: ROLE_NAME
    rules:
     apiGroups: [""]
     resources: ["users"]
     verbs: ["impersonate"]
     resourceNames: ["ACCOUNT_NAME"]
    

    Ganti kode berikut:

    • ROLE_NAME: nama peran target.
    • ACCOUNT_NAME: nama akun pengguna target.
  2. Buat resource ClusterRoleBinding yang mengikat akun Agen Layanan Agen Koneksi ke peran yang Anda buat pada langkah sebelumnya dan terapkan ke cluster:

    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
    

    Ganti kode berikut:

    • BINDING_NAME: nama yang mengidentifikasi binding peran ini secara unik.
    • ACCOUNT_NAME: nama akun pengguna layanan target.
    • ROLE_NAME: nama peran target.

Anda harus membuat pasangan resource ClusterRole dan ClusterRoleBinding terpisah untuk setiap pengguna yang terpengaruh.

Anda juga dapat menggunakan alat command line kubectl untuk memberikan izin yang diperlukan untuk melihat informasi cluster sebagai berikut:

  1. Buat resource ClusterRole yang memungkinkan Agen Koneksi meniru identitas pengguna yang perlu melihat informasi cluster di konsol Google Cloud :

    kubectl create clusterrole "ROLE_NAME" --verb impersonate \
     --resource users --resource-name "ACCOUNT_NAME"
    

    Ganti kode berikut:

    • ROLE_NAME: nama peran target.
    • ACCOUNT_NAME: nama akun pengguna layanan target.
  2. Buat resource ClusterRoleBinding yang mengikat akun Agen Layanan Agen Koneksi ke peran yang Anda buat pada langkah sebelumnya dan terapkan ke cluster:

    kubectl create clusterrolebinding "BINDING_NAME" --clusterrole \
     "ROLE_NAME" --serviceaccount "ACCOUNT_NAME"
    

    Ganti kode berikut:

    • BINDING_NAME: nama yang mengidentifikasi binding peran ini secara unik.
    • ACCOUNT_NAME: nama akun pengguna layanan target.
    • ROLE_NAME: nama peran target.

Menggunakan gateway koneksi untuk mengakses cluster Distributed Cloud terhubung

Anda memiliki opsi untuk menggunakan gateway koneksi guna mengakses cluster yang terhubung ke Distributed Cloud. Pengguna gateway koneksi memerlukan satu atau beberapa peran berikut, bergantung pada persyaratan bisnisnya:

  • Connect Gateway Admin (roles/gkehub.gatewayAdmin): memberikan akses ke connect gateway API. Hal ini memungkinkan penggunaan alat command line kubectl untuk mengelola cluster.
  • Editor Gateway Gateway (roles/gkehub.gatewayEditor): memberikan akses baca dan tulis ke cluster.
  • Connect Gateway Reader (roles/gkehub.gatewayReader): memberikan akses hanya baca ke cluster.
  • GKE Hub Viewer (roles/gkehub.viewer): memberikan kemampuan untuk mengambil file kubeconfig dari cluster.

Untuk mengetahui informasi selengkapnya tentang cara menggunakan gateway koneksi, lihat artikel berikut: