Menggunakan kontrol akses berbasis peran Azure untuk Otorisasi Kubernetes
Saat memanfaatkan 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). Fitur ini membuat Anda tidak perlu lagi mengelola identitas dan kredensial pengguna secara terpisah untuk Kubernetes. Namun, Anda masih harus menyiapkan dan mengelola RBAC Azure dan Kubernetes RBAC secara terpisah.
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.
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 .
az group create --name myResourceGroup --location westus2
Buat kluster AKS dengan integrasi Microsoft Entra terkelola dan Azure RBAC untuk Otorisasi Kubernetes menggunakan az aks create
perintah .
az aks create -g myResourceGroup -n myManagedCluster --enable-aad --enable-azure-rbac
Output 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
Tambahkan Azure RBAC untuk Otorisasi Kubernetes ke kluster AKS yang ada menggunakan az aks update
perintah dengan enable-azure-rbac
bendera .
az aks update -g myResourceGroup -n myAKSCluster --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 -g myResourceGroup -n myAKSCluster --disable-azure-rbac
Membuat penetapan peran bagi pengguna untuk mengakses kluster
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. |
Penetapan peran yang dilingkup ke seluruh kluster AKS dapat dilakukan baik pada bilah Kontrol Akses (IAM) sumber daya kluster pada portal Azure atau dengan menggunakan perintah Azure CLI berikut:
Dapatkan ID sumber daya AKS Anda menggunakan az aks show
perintah .
AKS_ID=$(az aks show -g myResourceGroup -n myManagedCluster --query id -o tsv)
Buat penetapan peran menggunakan az role assignment create
perintah . <AAD-ENTITY-ID>
dapat berupa nama pengguna atau ID klien dari perwakilan layanan.
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>
Catatan
Di portal Azure, setelah membuat penetapan peran yang dilingkup ke namespace yang diinginkan, Anda tidak akan dapat melihat "penetapan peran" untuk namespace pada cakupan. Anda dapat menemukannya dengan menggunakan az role assignment list
perintah, atau mencantumkan penetapan peran untuk pengguna atau grup, tempat Anda menetapkan peran.
az role assignment list --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 sebagai deploy-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 yang deploy-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 -g myResourceGroup -n myManagedCluster
Sekarang, Anda dapat menggunakan kubectl
kelola kluster Anda. Misalnya, Anda dapat mencantumkan simpul di kluster Anda menggunakan kubectl get nodes
. Saat pertama kali menjalankannya, Anda harus masuk, seperti yang ditunjukkan dalam contoh berikut:
kubectl get nodes
To sign in, use a web browser to open the page https://microsoft.com/devicelogin and enter the code AAAAAAAAA to authenticate.
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 tambahan, seperti login non-interaktif, versi yang lebih kubectl
lama, atau memanfaatkan SSO di beberapa kluster tanpa perlu masuk ke kluster baru.
Anda dapat menggunakan kubelogin
plugin dengan menjalankan perintah berikut:
export KUBECONFIG=/path/to/kubeconfig
kubelogin convert-kubeconfig
Mirip kubectl
dengan , Anda perlu masuk saat pertama kali menjalankannya, seperti yang ditunjukkan dalam contoh berikut:
kubectl get nodes
To sign in, use a web browser to open the page https://microsoft.com/devicelogin and enter the code AAAAAAAAA to authenticate.
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
# List role assignments
az role assignment list --scope $AKS_ID --query [].id -o tsv
# Delete role assignments
az role assignment delete --ids <LIST OF ASSIGNMENT IDS>
Menghapus definisi peran
az role definition delete -n "AKS Deployment Reader"
Menghapus grup sumber daya dan kluster AKS
az group delete -n myResourceGroup
Langkah berikutnya
Untuk mempelajari selengkapnya tentang autentikasi AKS, otorisasi, RBAC Kubernetes, dan Azure RBAC, lihat: