Menyiapkan role-based access control (RBAC)
Autentikasi sering kali dikombinasikan dengan Role-based access control (RBAC) Kubernetes untuk memberikan kontrol akses yang lebih mendetail ke cluster bagi pengguna dan akun layanan yang 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 diperbarui setiap kali hak istimewa pengguna berubah. Perlu diperhatikan bahwa untuk mengonfigurasi kontrol akses berdasarkan keanggotaan grup keamanan dengan OIDC, Anda harus memastikan bahwa GKE Identity Service telah disiapkan untuk mendukung perolehan informasi keanggotaan grup dari penyedia identitas Anda.
Contoh
Jika Anda ingin pengguna tertentu yang telah diautentikasi memiliki akses ke Pod cluster, buat ClusterRole
yang memberikan akses ke resource ini, seperti pada 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"]
Selanjutnya, 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
Pada contoh berikut, ClusterRoleBinding
ini memberikan izin di ClusterRole
kepada grup yang relevan dengan ID 12345678-BBBb-cCCCC-0000-123456789012
. Perlu diperhatikan 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 informasi selengkapnya tentang penggunaan RBAC, lihat Mengonfigurasi kontrol akses berbasis peran dan Menggunakan Otorisasi RBAC.
Membuat peran RBAC untuk akses konsol Google Cloud
Pengguna yang diautentikasi menggunakan penyedia OIDC dapat login ke cluster dari Konsol Google Cloud serta command line.
Pengguna yang telah diautentikasi yang ingin mengakses resource cluster di Konsol Google Cloud
harus memiliki izin Kubernetes yang relevan untuk melakukannya. Jika tidak ingin memberikan izin yang lebih luas kepada pengguna tersebut, seperti admin cluster, Anda dapat membuat peran RBAC kustom yang menyertakan izin minimum untuk melihat node, volume persisten, pod, dan kelas penyimpanan cluster. Anda dapat mendefinisikan rangkaian
izin dengan membuat resource ClusterRole
RBAC,
cloud-console-reader
, di cluster.
cloud-console-reader
memberikan get
, list
, dan watch
kepada penggunanya
izin pada node cluster, volume persisten, pod, dan kelas penyimpanan,
yang memungkinkan mereka melihat
detail tentang sumber daya ini.
kubectl
Untuk membuat cloud-console-reader
ClusterRole
dan menerapkannya ke cluster, jalankan metode
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
Selanjutnya, Anda dapat memberikan ClusterRole
ini kepada pengguna saat menyiapkan kebijakan izin, seperti yang dijelaskan di bagian sebelumnya. Perlu diperhatikan bahwa pengguna juga memerlukan izin IAM untuk melihat cluster di Konsol Google Cloud.