Menyiapkan kontrol akses berbasis peran (RBAC)

Autentikasi sering dikombinasikan dengan kontrol akses berbasis peran (RBAC) Kubernetes untuk memberikan kontrol akses yang lebih terperinci ke cluster bagi pengguna dan akun layanan terautentikasi. Sebaiknya buat kebijakan RBAC yang menggunakan nama grup, bukan ID pengguna. Dengan menautkan kebijakan RBAC secara eksplisit ke grup, Anda dapat mengelola hak istimewa akses pengguna sepenuhnya dengan penyedia identitas Anda, sehingga cluster tidak perlu diupdate setiap kali hak istimewa pengguna berubah. Perhatikan bahwa untuk mengonfigurasi kontrol akses berdasarkan keanggotaan grup keamanan dengan OIDC, Anda harus memastikan bahwa Layanan Identitas GKE disiapkan untuk mendukung pengambilan informasi keanggotaan grup dari penyedia identitas Anda.

Contoh

Jika Anda ingin pengguna terautentikasi tertentu memiliki akses ke Pod cluster, buat ClusterRole yang memberikan akses ke resource ini, seperti dalam contoh berikut:

apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
  name: pod-reader
rules:
- apiGroups: [""]
  # The resource type for which access is granted
  resources: ["pods"]
  # The permissions granted by the ClusterRole
  verbs: ["get", "watch", "list"]

Kemudian, Anda membuat ClusterRoleBinding yang sesuai untuk memberikan izin di ClusterRole kepada pengguna yang relevan—dalam hal ini, anggota grup keamanan us-east1-cluster-admins dan pengguna dengan ID u98523-4509823:

apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
  name: read-pods-admins
subjects:
  # Grants anyone in the "us-east1-cluster-admins" group
  # read access to Pods in any namespace within this cluster.
- kind: Group
  name: gid-us-east1-cluster-admins # Name is case-sensitive
  apiGroup: rbac.authorization.k8s.io
  # Grants this specific user read access to Pods in any
  # namespace within this cluster
- kind: User
  name: uid-u98523-4509823
  apiGroup: rbac.authorization.k8s.io
roleRef:
  kind: ClusterRole
  name: pod-reader
  apiGroup: rbac.authorization.k8s.io

Dalam contoh berikut, ClusterRoleBinding ini memberikan izin di ClusterRole kepada grup yang relevan dengan ID 12345678-BBBb-cCCCC-0000-123456789012. Perhatikan bahwa setelan ini hanya relevan untuk penyedia Azure AD dan tersedia untuk cluster Google Distributed Cloud.

apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
  name: pod-reader-binding
subjects:
  # Retrieves group information for the group ID mentioned
- kind: Group
  name: 12345678-BBBb-cCCCC-0000-123456789012
  apiGroup: rbac.authorization.k8s.io

Untuk mengetahui informasi selengkapnya tentang penggunaan RBAC, lihat Mengonfigurasi kontrol akses berbasis peran dan Menggunakan Otorisasi RBAC.

Membuat peran RBAC untuk Google Cloud akses konsol

Pengguna yang diautentikasi menggunakan penyedia OIDC dapat login ke cluster dari konsol serta command line. Google Cloud

Pengguna yang diautentikasi yang ingin mengakses resource cluster di Google Cloud konsol harus memiliki izin Kubernetes yang relevan untuk melakukannya. Jika Anda tidak ingin memberikan izin yang lebih luas kepada pengguna tersebut, seperti izin admin cluster, Anda dapat membuat peran RBAC kustom yang mencakup izin minimum untuk melihat node, volume persisten, pod, dan class penyimpanan cluster. Anda dapat menentukan kumpulan izin ini dengan membuat resource ClusterRole RBAC, cloud-console-reader, di cluster.

cloud-console-reader memberikan izin get, list, dan watch kepada penggunanya di node cluster, volume persisten, pod, dan kelas penyimpanan, yang memungkinkan mereka melihat detail tentang resource ini.

kubectl

Untuk membuat cloud-console-reader ClusterRole dan menerapkannya ke cluster, jalankan perintah berikut:

cat <<EOF > cloud-console-reader.yaml
kind: ClusterRole
apiVersion: rbac.authorization.k8s.io/v1
metadata:
  name: cloud-console-reader
rules:
- apiGroups: [""]
  resources: ["nodes", "persistentvolumes", "pods"]
  verbs: ["get", "list", "watch"]
- apiGroups: ["storage.k8s.io"]
  resources: ["storageclasses"]
  verbs: ["get", "list", "watch"]
EOF
kubectl apply -f cloud-console-reader.yaml

Kemudian, Anda dapat memberikan ClusterRole ini kepada pengguna saat menyiapkan kebijakan izin, seperti yang dijelaskan di bagian sebelumnya. Perhatikan bahwa pengguna juga memerlukan izin IAM untuk melihat cluster di konsol Google Cloud .