Gunakan kontrol akses berbasis peran Azure untuk menentukan akses ke file konfigurasi Kube di Azure Kubernetes Service (AKS)
Anda dapat berinteraksi dengan kluster Kube menggunakan alat kubectl
ini. Azure CLI menyediakan cara mudah untuk mendapatkan kredensial akses dan file konfigurasi kubeconfig untuk terhubung ke kluster AKS Anda menggunakan kubectl
. Anda dapat menggunakan kontrol akses berbasis peran Azure (Azure RBAC) untuk membatasi siapa yang bisa mendapatkan akses ke file kubeconfig dan izin yang mereka miliki.
Artikel ini memperlihatkan kepada Anda cara menetapkan peran Azure yang membatasi siapa yang bisa mendapatkan informasi konfigurasi untuk kluster AKS.
Sebelum Anda mulai
- Artikel ini mengasumsikan bahwa Anda memiliki kluster AKS yang ada. Jika Anda memerlukan kluster AKS, buat kluster menggunakan Azure CLI, Azure PowerShell, atau portal Azure.
- Artikel ini juga mengharuskan Anda menjalankan Azure CLI versi 2.0.65 atau yang lebih baru. Jalankan
az --version
untuk menemukan versinya. Jika Anda perlu memasang atau meningkatkan, lihat Memasang Azure CLI.
Izin yang tersedia untuk peran kluster
Saat Anda berinteraksi dengan kluster AKS menggunakan alat, kubectl
file konfigurasi, yang disebut kubeconfig, menentukan informasi koneksi kluster. File konfigurasi ini biasanya disimpan dalam ~/.kube/config. Beberapa kluster dapat didefinisikan dalam file kubeconfig ini. Anda dapat beralih antar kluster menggunakan kubectl config use-context
perintah .
Perintah ini az aks get-credentials
memungkinkan Anda mendapatkan kredensial akses untuk kluster AKS dan menggabungkan kredensial ini ke dalam file kubeconfig . Anda dapat menggunakan Azure RBAC untuk mengontrol akses ke kredensial ini. Peran Azure ini memungkinkan Anda menentukan siapa yang dapat mengambil file kubeconfig dan izin apa yang mereka miliki dalam kluster.
Ada dua peran Azure yang dapat Anda terapkan ke pengguna atau grup Microsoft Entra:
Peran Admin kluster Azure Kubernetes Service
- Memungkinkan akses ke
Microsoft.ContainerService/managedClusters/listClusterAdminCredential/action
panggilan API. Panggilan API ini mencantumkan info masuk admin kluster. - Mengunduh kubeconfig untuk peran clusterAdmin.
- Memungkinkan akses ke
Peran Pengguna kluster Azure Kubernetes Service
- Memungkinkan akses ke
Microsoft.ContainerService/managedClusters/listClusterUserCredential/action
panggilan API. Panggilan API ini mencantumkan info masuk pengguna kluster. - Mengunduh kubeconfig untuk peran clusterUser.
- Memungkinkan akses ke
Catatan
Pada kluster yang menggunakan ID Microsoft Entra, pengguna dengan peran clusterUser memiliki file kubeconfig kosong yang meminta login. Setelah masuk, pengguna memiliki akses berdasarkan pengaturan pengguna atau grup Microsoft Entra mereka. Pengguna dengan peran clusterAdmin memiliki akses admin.
Pada kluster yang tidak menggunakan MICROSOFT Entra ID, peran clusterUser memiliki efek yang sama dari peran clusterAdmin.
Menetapkan izin peran untuk pengguna atau grup
Untuk menetapkan salah satu peran yang tersedia, Anda perlu mendapatkan ID sumber daya kluster AKS dan ID akun pengguna atau grup Microsoft Entra menggunakan langkah-langkah berikut:
- Dapatkan ID sumber daya kluster menggunakan
az aks show
perintah untuk kluster bernama myAKSCluster di grup sumber daya myResourceGroup . Berikan nama grup kluster dan sumber daya Anda sendiri jika diperlukan. az account show
Gunakan perintah danaz ad user show
untuk mendapatkan ID pengguna Anda.- Tetapkan peran menggunakan
az role assignment create
perintah .
Contoh berikut menetapkan Peran Admin kluster Azure Kubernetes Service ke akun pengguna individual:
# Get the resource ID of your AKS cluster
AKS_CLUSTER=$(az aks show --resource-group myResourceGroup --name myAKSCluster --query id -o tsv)
# Get the account credentials for the logged in user
ACCOUNT_UPN=$(az account show --query user.name -o tsv)
ACCOUNT_ID=$(az ad user show --id $ACCOUNT_UPN --query objectId -o tsv)
# Assign the 'Cluster Admin' role to the user
az role assignment create \
--assignee $ACCOUNT_ID \
--scope $AKS_CLUSTER \
--role "Azure Kubernetes Service Cluster Admin Role"
Jika Anda ingin menetapkan izin ke grup Microsoft Entra, perbarui parameter yang --assignee
ditampilkan dalam contoh sebelumnya dengan ID objek untuk grup daripada pengguna.
Untuk mendapatkan ID objek untuk grup, gunakan az ad group show
perintah . Perintah berikut mendapatkan ID objek untuk grup Microsoft Entra bernama appdev:
az ad group show --group appdev --query objectId -o tsv
Penting
Dalam beberapa kasus, seperti pengguna tamu Microsoft Entra, user.name di akun berbeda dari userPrincipalName.
$ az account show --query user.name -o tsv
user@contoso.com
$ az ad user list --query "[?contains(otherMails,'user@contoso.com')].{UPN:userPrincipalName}" -o tsv
user_contoso.com#EXT#@contoso.onmicrosoft.com
Dalam hal ini, atur nilai ACCOUNT_UPN ke userPrincipalName dari pengguna Microsoft Entra. Misalnya, jika akun Anda user.name adalah user@contoso.com, tindakan ini akan terlihat seperti contoh berikut:
ACCOUNT_UPN=$(az ad user list --query "[?contains(otherMails,'user@contoso.com')].{UPN:userPrincipalName}" -o tsv)
Mendapatkan dan memverifikasi informasi konfigurasi
Setelah peran ditetapkan, gunakan az aks get-credentials
perintah untuk mendapatkan definisi kubeconfig untuk kluster AKS Anda. Contoh berikut mendapatkan kredensial --admin , yang berfungsi dengan benar jika pengguna telah diberikan Peran Admin Kluster:
az aks get-credentials --resource-group myResourceGroup --name myAKSCluster --admin
Anda kemudian dapat menggunakan kubectl config view
perintah untuk memverifikasi bahwa konteks untuk kluster menunjukkan bahwa informasi konfigurasi admin telah diterapkan.
$ kubectl config view
Output Anda akan terlihat mirip dengan contoh output berikut:
apiVersion: v1
clusters:
- cluster:
certificate-authority-data: DATA+OMITTED
server: https://myaksclust-myresourcegroup-19da35-4839be06.hcp.eastus.azmk8s.io:443
name: myAKSCluster
contexts:
- context:
cluster: myAKSCluster
user: clusterAdmin_myResourceGroup_myAKSCluster
name: myAKSCluster-admin
current-context: myAKSCluster-admin
kind: Config
preferences: {}
users:
- name: clusterAdmin_myResourceGroup_myAKSCluster
user:
client-certificate-data: REDACTED
client-key-data: REDACTED
token: e9f2f819a4496538b02cefff94e61d35
Menghapus izin peran
Untuk menghapus penetapan peran, gunakan az role assignment delete
perintah . Tentukan ID akun dan ID sumber daya kluster yang Anda peroleh di langkah-langkah sebelumnya. Jika Anda menetapkan peran ke grup daripada pengguna, tentukan ID objek grup yang sesuai daripada ID objek akun untuk --assignee
parameter .
az role assignment delete --assignee $ACCOUNT_ID --scope $AKS_CLUSTER
Langkah berikutnya
Untuk keamanan yang ditingkatkan pada akses ke kluster AKS, integrasikan autentikasi Microsoft Entra.
Azure Kubernetes Service