Bagikan melalui


Menggunakan kontrol akses berbasis peran Azure (RBAC) untuk otorisasi Kubernetes

Berlaku untuk: AKS di Azure Stack HCI 23H2

Administrator infrastruktur dapat menggunakan kontrol akses berbasis peran Azure (Azure RBAC) untuk mengontrol siapa yang dapat mengakses file kubeconfig dan izin yang mereka miliki. Operator Kubernetes dapat berinteraksi dengan kluster Kubernetes menggunakan alat kubectl berdasarkan izin yang diberikan. Azure CLI menyediakan cara mudah untuk mendapatkan kredensial akses dan file konfigurasi kubeconfig untuk terhubung ke kluster AKS Anda menggunakan kubectl.

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). Fitur ini membuat Anda tidak perlu lagi mengelola identitas dan kredensial pengguna secara terpisah untuk Kubernetes. Namun, Anda masih harus menyiapkan dan mengelola Azure RBAC dan Kubernetes RBAC secara terpisah.

Artikel ini menjelaskan cara menggunakan Azure RBAC untuk otorisasi kluster Kubernetes dengan ID Microsoft Entra dan penetapan peran Azure.

Untuk gambaran umum konseptual, lihat Azure RBAC untuk Otorisasi Kubernetes untuk AKS yang diaktifkan oleh Azure Arc.

Sebelum Anda mulai

Pastikan Anda memiliki prasyarat berikut sebelum memulai:

  • AKS di Azure Stack HCI 23H2 saat ini mendukung pengaktifan Azure RBAC hanya selama pembuatan kluster Kubernetes. Anda tidak dapat mengaktifkan Azure RBAC setelah kluster Kubernetes dibuat.

  • Instal versi terbaru ekstensi Azure CLI aksarc dan connectedk8s . Perhatikan bahwa Anda perlu menjalankan ekstensi aksarc versi 1.1.1 atau yang lebih baru untuk mengaktifkan Azure RBAC. Jalankan az --version untuk menemukan versi saat ini. Jika Anda perlu menginstal atau meningkatkan Azure CLI, lihat Menginstal Azure CLI.

    az extension add --name aksarc
    az extension add --name connectedk8s
    

    Jika Anda sudah menginstal aksarc ekstensi, perbarui ekstensi ke versi terbaru:

    az extension update --name aksarc
    az extension update --name connectedk8s
    
  • Untuk berinteraksi dengan kluster Kubernetes, Anda harus menginstal kubectl dan kubelogin.

  • Anda memerlukan izin berikut untuk mengaktifkan Azure RBAC saat membuat kluster Kubernetes:

    • Untuk membuat kluster Kubernetes, Anda memerlukan peran Kontributor Azure Kubernetes Service Arc.
    • Untuk menggunakan --enable-azure-rbac parameter , Anda memerlukan peran Administrator Kontrol Akses Berbasis Peran untuk akses ke izin Microsoft.Authorization/roleAssignments/write . Untuk informasi selengkapnya, lihat Peran bawaan Azure.
    • Penetapan peran baru dapat memakan waktu hingga lima menit untuk disebarluaskan dan diperbarui oleh server otorisasi.
  • Setelah Azure RBAC diaktifkan, Anda dapat mengakses kluster Kubernetes dengan izin yang diberikan menggunakan mode langsung atau mode proksi.

    • Untuk mengakses kluster Kubernetes secara langsung menggunakan az aksarc get-credentials perintah , Anda memerlukan Microsoft.HybridContainerService/provisionedClusterInstances/listUserKubeconfig/action, yang disertakan dalam izin peran Pengguna Kluster Azure Kubernetes Service Arc.
    • Untuk mengakses kluster Kubernetes dari mana saja dengan mode proksi menggunakanaz connectedk8s proxy perintah, Anda memerlukan izin peran Pengguna Kluster Kubernetes/connectedClusters/listClusterUserCredential/action, yang disertakan dalam izin peran Pengguna Kluster Kubernetes dengan dukungan Azure Arc. Sementara itu, Anda perlu memverifikasi bahwa agen dan mesin yang melakukan proses onboarding memenuhi persyaratan jaringan yang ditentukan dalam persyaratan jaringan Kubernetes dengan dukungan Azure Arc.
  • Untuk menggunakan kubectl, Anda dapat mengaksesnya menggunakan Azure RBAC atau Grup Admin AAD.

    • Untuk menggunakan kubectl dengan Azure RBAC, Anda memerlukan peran Azure Arc Kubernetes Viewer yang tercakup ke sumber daya kluster yang terhubung.
    • Untuk menggunakan kubectl dengan Grup Admin AAD, Anda tidak memerlukan peran tertentu, tetapi Anda harus memastikan Anda berada di salah satu grup dalam daftar add-admin-group sumber daya kluster yang terhubung.

Langkah 1: Membuat kluster Kubernetes dengan dukungan Azure RBAC

Anda dapat membuat kluster Kubernetes dengan dukungan Azure RBAC untuk otorisasi dan ID Microsoft Entra untuk autentikasi.

az aksarc create -n $aks_cluster_name -g $resource_group_name --custom-location $customlocation_ID --vnet-ids $logicnet_Id --generate-ssh-keys --control-plane-ip $controlplaneIP --enable-azure-rbac

Setelah beberapa menit, perintah selesai dan kembalikan informasi berformat JSON tentang kluster.

Langkah 2: Membuat penetapan peran bagi pengguna untuk mengakses kluster

AKS yang diaktifkan oleh Azure Arc menyediakan peran bawaan berikut:

Peran Deskripsi
Penampil Kubernetes Azure Arc Mengizinkan akses baca-saja untuk melihat sebagian besar objek di namespace layanan.
Tidak mengizinkan menampilkan peran atau pengikatan peran.
Tidak mengizinkan melihat secrets, karena read izin pada rahasia memungkinkan akses ke ServiceAccount kredensial di namespace layanan, yang memungkinkan akses API seperti apa pun ServiceAccount di namespace layanan (bentuk eskalasi hak istimewa).
Penulis Azure Arc Kubernetes Mengizinkan akses read/write ke sebagian besar objek dalam sebuah namespace layanan.
Tidak mengizinkan menampilkan atau memodifikasi peran atau pengikatan peran.
Memungkinkan mengakses secrets dan menjalankan pod seperti apa pun ServiceAccount di namespace layanan, sehingga dapat digunakan untuk mendapatkan tingkat akses API apa pun ServiceAccount di namespace layanan.
Azure Arc Kubernetes Admin 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.
Tidak mengizinkan akses tulis ke kuota sumber daya atau ke namespace layanan itu sendiri.
Admin Klaster Azure Arc Kubernetes Memungkinkan akses "pengguna super" untuk melakukan tindakan apa pun pada sumber daya apa pun.
Memberikan kontrol penuh atas setiap sumber daya dalam kluster dan di semua namespace layanan.

Anda dapat menggunakan az role assignment create perintah untuk membuat penetapan peran.

Pertama, dapatkan $ARM-ID untuk kluster target yang ingin Anda tetapkan perannya.

$ARM_ID = (az connectedk8s show -g "$resource_group_name" -n $aks_cluster_name --query id -o tsv)

Kemudian, gunakan az role assignment create perintah untuk menetapkan peran ke kluster Kubernetes Anda. Anda harus menyediakan $ARM_ID dari langkah pertama dan assignee-object-id untuk langkah ini. assignee-object-id dapat berupa ID Microsoft Entra atau ID klien perwakilan layanan.

Contoh berikut menetapkan peran Azure Arc Kubernetes Viewer ke kluster Kubernetes:

az role assignment create --role "Azure Arc Kubernetes Viewer" --assignee <assignee-object-id> --scope $ARM_ID

Dalam contoh ini, cakupannya adalah ID Azure Resource Manager dari kluster. Ini juga bisa menjadi grup sumber daya yang berisi kluster Kubernetes.

Membuat definisi peran kustom

Anda dapat memilih untuk membuat definisi peran Anda sendiri untuk digunakan dalam penetapan peran.

Contoh berikut menunjukkan definisi peran yang memungkinkan pengguna hanya membaca penyebaran. Untuk informasi selengkapnya, lihat daftar lengkap tindakan data yang dapat Anda gunakan untuk membuat definisi peran. Untuk informasi selengkapnya tentang membuat peran kustom, lihat Langkah-langkah untuk membuat peran kustom

Untuk membuat definisi peran kustom Anda sendiri, salin objek JSON berikut ke dalam file yang disebut custom-role.json. Ganti tempat penampung <subscription-id> dengan ID langganan aktual. Peran kustom menggunakan salah satu tindakan data dan memungkinkan Anda melihat semua penyebaran dalam cakupan (kluster atau namespace layanan) tempat penetapan peran dibuat.

{
    "Name": "AKS Arc Deployment Reader",
    "Description": "Lets you view all deployments in cluster/namespace.",
    "Actions": [],
    "NotActions": [],
    "DataActions": [
        "Microsoft.Kubernetes/connectedClusters/apps/deployments/read"
    ],
    "NotDataActions": [],
    "assignableScopes": [
        "/subscriptions/<YOUR SUBSCRIPTION ID>"
    ]
}

Untuk informasi tentang peran kustom dan cara menulisnya, lihat Peran kustom Azure.

Buat definisi peran menggunakan az role definition create perintah , atur --role-definition parameter ke file deploy-view.json yang 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 Arc Deployment Reader" --assignee <assignee-object-id> --scope $ARM_ID

Langkah 3: Akses kluster Kubernetes

Anda sekarang dapat mengakses kluster Kubernetes dengan izin yang diberikan, menggunakan mode langsung atau mode proksi.

Akses kluster Anda dengan kubectl (mode langsung)

Untuk mengakses kluster Kubernetes dengan izin yang diberikan, operator Kubernetes memerlukan kubeconfig Microsoft Entra, yang dapat Anda dapatkan menggunakan az aksarc get-credentials perintah . Perintah ini menyediakan akses ke kubeconfig berbasis admin, serta kubeconfig berbasis pengguna. File kubeconfig berbasis admin berisi rahasia dan harus disimpan dan diputar secara aman secara berkala. Di sisi lain, kubeconfig ID Microsoft Entra berbasis pengguna tidak berisi rahasia dan dapat didistribusikan kepada pengguna yang terhubung dari komputer klien mereka.

Untuk menjalankan perintah Azure CLI ini, Anda memerlukan Microsoft.HybridContainerService/provisionedClusterInstances/listUserKubeconfig/action, yang disertakan dalam izin peran Pengguna Kluster Azure Kubernetes Service Arc:

az aksarc get-credentials -g "$resource_group_name" -n $aks_cluster_name --file <file-name>

Sekarang Anda dapat menggunakan kubectl mengelola 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

Mengakses kluster Anda dari perangkat klien (mode proksi)

Untuk mengakses kluster Kubernetes dari mana saja dengan mode proksi menggunakan az connectedk8s proxy perintah, Anda memerlukan izin peran Pengguna Kluster Kubernetes/connectedClusters/listClusterUserCredential/action, yang disertakan dalam izin peran Pengguna Kluster Kubernetes dengan dukungan Azure Arc.

Jalankan langkah-langkah berikut pada perangkat klien lain:

  1. Masuk menggunakan autentikasi Microsoft Entra

  2. Dapatkan kubeconfig koneksi kluster yang diperlukan untuk berkomunikasi dengan kluster dari mana saja (bahkan dari luar firewall di sekitar kluster):

    az connectedk8s proxy -n $CLUSTER_NAME -g $RESOURCE_GROUP
    

    Catatan

    Perintah ini membuka proksi dan memblokir shell saat ini.

  3. Dalam sesi shell yang berbeda, gunakan kubectl untuk mengirim permintaan ke kluster:

    kubectl get pods -A
    

Sekarang, Anda akan melihat respons dari kluster yang berisi daftar semua pod di bawah namespace layanan default.

Untuk informasi selengkapnya, lihat Mengakses kluster Anda dari perangkat klien.

Membersihkan sumber daya

Menghapus penetapan peran

# List role assignments
az role assignment list --scope $ARM_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 Arc Deployment Reader"

Langkah berikutnya