Menggunakan kontrol akses berbasis peran Azure untuk Otorisasi Kubernetes
Artikel ini membahas cara menggunakan Azure RBAC untuk Otorisasi Kubernetes, yang memungkinkan manajemen terpadu dan kontrol akses di seluruh sumber daya Azure, AKS, dan sumber daya Kubernetes. Untuk informasi selengkapnya, lihat Azure RBAC untuk Otorisasi Kubernetes.
Catatan
Saat menggunakan autentikasi terintegrasi antara MICROSOFT Entra ID dan AKS, Anda dapat menggunakan pengguna, grup, atau perwakilan layanan Microsoft Entra sebagai subjek dalam kontrol akses berbasis peran Kubernetes (Kubernetes RBAC). Dengan fitur ini, Anda tidak perlu mengelola identitas dan kredensial pengguna secara terpisah untuk Kubernetes. Namun, Anda masih perlu menyiapkan dan mengelola Azure RBAC dan Kubernetes RBAC secara terpisah.
Sebelum Anda mulai
- Anda memerlukan Azure CLI versi 2.24.0 atau yang lebih baru yang diinstal dan dikonfigurasi. Jalankan
az --version
untuk menemukan versinya. Jika Anda perlu memasang atau meningkatkan, lihat Memasang Azure CLI. - Anda memerlukan
kubectl
, dengan versi minimum 1.18.3. - Anda memerlukan integrasi Microsoft Entra terkelola yang diaktifkan pada kluster sebelum dapat menambahkan Azure RBAC untuk otorisasi Kubernetes. Jika Anda perlu mengaktifkan integrasi Microsoft Entra terkelola, lihat Menggunakan ID Microsoft Entra di AKS.
- Jika Anda memiliki CRD dan membuat definisi peran kustom, satu-satunya cara untuk mencakup CRD saat ini adalah dengan menggunakan
Microsoft.ContainerService/managedClusters/*/read
. Untuk objek yang tersisa, Anda dapat menggunakan grup API tertentu, sepertiMicrosoft.ContainerService/apps/deployments/read
. - Penetapan peran baru dapat memakan waktu hingga lima menit untuk disebarluaskan dan diperbarui oleh server otorisasi.
- Azure RBAC untuk Otorisasi Kubernetes mengharuskan penyewa Microsoft Entra yang dikonfigurasi untuk autentikasi sama dengan penyewa untuk langganan yang menyimpan kluster AKS Anda.
Membuat kluster AKS baru dengan integrasi Microsoft Entra terkelola dan Azure RBAC untuk Otorisasi Kubernetes
Buat grup sumber daya Azure menggunakan
az group create
perintah .export RESOURCE_GROUP=<resource-group-name> export LOCATION=<azure-region> az group create --name $RESOURCE_GROUP --location $LOCATION
Buat kluster AKS dengan integrasi Microsoft Entra terkelola dan Azure RBAC untuk Otorisasi Kubernetes menggunakan
az aks create
perintah .export CLUSTER_NAME=<cluster-name> az aks create \ --resource-group $RESOURCE_GROUP \ --name $CLUSTER_NAME \ --enable-aad \ --enable-azure-rbac \ --generate-ssh-keys
Output Anda akan terlihat mirip dengan contoh output berikut:
"AADProfile": { "adminGroupObjectIds": null, "clientAppId": null, "enableAzureRbac": true, "managed": true, "serverAppId": null, "serverAppSecret": null, "tenantId": "****-****-****-****-****" }
Mengaktifkan Azure RBAC pada kluster AKS yang sudah ada
Aktifkan Azure RBAC untuk Otorisasi Kubernetes pada kluster AKS yang ada menggunakan
az aks update
perintah dengan--enable-azure-rbac
bendera .az aks update --resource-group $RESOURCE_GROUP --name $CLUSTER_NAME --enable-azure-rbac
Menonaktifkan Azure RBAC untuk Otorisasi Kubernetes dari kluster AKS
Hapus Azure RBAC untuk Otorisasi Kubernetes dari kluster AKS yang ada menggunakan
az aks update
perintah dengan--disable-azure-rbac
bendera .az aks update --resource-group $RESOURCE_GROUP --name $CLUSTER_NAME --disable-azure-rbac
Peran bawaan AKS
AKS menyediakan peran bawaan berikut:
Peran | Deskripsi |
---|---|
Pembaca RBAC Azure Kubernetes Service | Mengizinkan akses baca-saja untuk melihat sebagian besar objek di namespace layanan. Hal ini tidak mengizinkan untuk menampilkan peran atau pengikatan peran. Peran ini tidak mengizinkan melihat Secrets , karena membaca konten Rahasia memungkinkan akses ke kredensial ServiceAccount di namespace layanan, yang akan memungkinkan akses API sebagai ServiceAccount apa pun di namespace layanan (bentuk eskalasi hak istimewa). |
Penulis RBAC Azure Kubernetes Service | Mengizinkan akses read/write ke sebagian besar objek dalam sebuah namespace layanan. Peran ini tidak memungkinkan melihat atau memodifikasi peran atau pengikatan peran. Namun, peran ini memungkinkan akses ke Secrets dan menjalankan Pod sebagai ServiceAccount mana pun di namespace, sehingga dapat digunakan untuk mendapatkan level akses API dari ServiceAccount apa pun di namespace. |
Admin RBAC Azure Kubernetes Service | Mengizinkan akses admin, untuk di dalam namespace layanan. Mengizinkan akses read/write ke sebagian besar sumber daya di namespace layanan (atau cakupan klaster), termasuk kemampuan untuk membuat peran dan pengikatan peran dalam namespace layanan. Peran ini tidak mengizinkan akses write ke kuota sumber daya atau ke namespace itu sendiri. |
Admin Kluster RBAC Azure Kubernetes Service | Mengizinkan akses bagi pengguna-super untuk melakukan tindakan apa pun pada sumber daya apa pun. Memberikan kontrol penuh atas setiap sumber daya dalam klaster dan di semua namespace layanan. |
Membuat penetapan peran untuk akses kluster
Dapatkan ID sumber daya AKS Anda menggunakan
az aks show
perintah .AKS_ID=$(az aks show --resource-group $RESOURCE_GROUP --name $CLUSTER_NAME --query id --output tsv)
Buat penetapan peran menggunakan
az role assignment create
perintah .<AAD-ENTITY-ID>
dapat berupa nama pengguna atau ID klien dari perwakilan layanan. Contoh berikut membuat penetapan peran untuk peran Admin RBAC Azure Kubernetes Service.az role assignment create --role "Azure Kubernetes Service RBAC Admin" --assignee <AAD-ENTITY-ID> --scope $AKS_ID
Catatan
Anda dapat membuat penetapan peran Azure Kubernetes Service RBAC Reader dan RBAC Writer Azure Kubernetes Service yang tercakup ke namespace tertentu dalam kluster menggunakan
az role assignment create
perintah dan mengatur cakupan ke namespace yang diinginkan.az role assignment create --role "Azure Kubernetes Service RBAC Reader" --assignee <AAD-ENTITY-ID> --scope $AKS_ID/namespaces/<namespace-name>
Buat definisi peran kustom
Contoh definisi peran kustom berikut memungkinkan pengguna untuk hanya membaca penyebaran dan tidak ada yang lain. Untuk daftar lengkap kemungkinan tindakan, lihat operasi Microsoft.ContainerService.
Untuk membuat definisi peran kustom Anda sendiri, salin file berikut, ganti
<YOUR SUBSCRIPTION ID>
dengan ID langganan Anda sendiri, lalu simpan sebagaideploy-view.json
.{ "Name": "AKS Deployment Reader", "Description": "Lets you view all deployments in cluster/namespace.", "Actions": [], "NotActions": [], "DataActions": [ "Microsoft.ContainerService/managedClusters/apps/deployments/read" ], "NotDataActions": [], "assignableScopes": [ "/subscriptions/<YOUR SUBSCRIPTION ID>" ] }
Buat definisi peran menggunakan
az role definition create
perintah , atur--role-definition
ke file yangdeploy-view.json
Anda buat di langkah sebelumnya.az role definition create --role-definition @deploy-view.json
Tetapkan definisi peran ke pengguna atau identitas lain menggunakan
az role assignment create
perintah .az role assignment create --role "AKS Deployment Reader" --assignee <AAD-ENTITY-ID> --scope $AKS_ID
Gunakan Azure RBAC untuk Otorisasi Kubernetes dengan kubectl
Pastikan Anda memiliki peran bawaan Pengguna Kluster Azure Kubernetes Service, lalu dapatkan kubeconfig kluster AKS Anda menggunakan
az aks get-credentials
perintah .az aks get-credentials --resource-group $RESOURCE_GROUP --name $CLUSTER_NAME
Anda sekarang dapat menggunakan
kubectl
untuk mengelola kluster Anda. Misalnya, Anda dapat mencantumkan simpul di kluster Anda menggunakankubectl get nodes
.kubectl get nodes
Contoh output:
NAME STATUS ROLES AGE VERSION aks-nodepool1-93451573-vmss000000 Ready agent 3h6m v1.15.11 aks-nodepool1-93451573-vmss000001 Ready agent 3h6m v1.15.11 aks-nodepool1-93451573-vmss000002 Ready agent 3h6m v1.15.11
Gunakan Azure RBAC untuk Otorisasi Kubernetes dengan kubelogin
AKS membuat kubelogin
plugin untuk membantu membuka blokir skenario seperti login non-interaktif, versi yang lebih kubectl
lama, atau memanfaatkan SSO di beberapa kluster tanpa perlu masuk ke kluster baru.
kubelogin
Gunakan plugin dengan menjalankan perintah berikut:export KUBECONFIG=/path/to/kubeconfig kubelogin convert-kubeconfig
Anda sekarang dapat menggunakan
kubectl
untuk mengelola kluster Anda. Misalnya, Anda dapat mencantumkan simpul di kluster Anda menggunakankubectl get nodes
.kubectl get nodes
Contoh output:
NAME STATUS ROLES AGE VERSION aks-nodepool1-93451573-vmss000000 Ready agent 3h6m v1.15.11 aks-nodepool1-93451573-vmss000001 Ready agent 3h6m v1.15.11 aks-nodepool1-93451573-vmss000002 Ready agent 3h6m v1.15.11
Membersihkan sumber daya
Menghapus penetapan peran
Mencantumkan
az role assignment list
penetapan peran menggunakan perintah .az role assignment list --scope $AKS_ID --query [].id --output tsv
Hapus penetapan peran menggunakan
az role assignment delete
perintah .az role assignment delete --ids <LIST OF ASSIGNMENT IDS>
Menghapus definisi peran
Hapus definisi peran kustom menggunakan
az role definition delete
perintah .az role definition delete --name "AKS Deployment Reader"
Menghapus grup sumber daya dan kluster AKS
Hapus grup sumber daya dan kluster AKS menggunakan
az group delete
perintah .az group delete --name $RESOURCE_GROUP --yes --no-wait
Langkah berikutnya
Untuk mempelajari selengkapnya tentang autentikasi AKS, otorisasi, RBAC Kubernetes, dan Azure RBAC, lihat:
Azure Kubernetes Service