Rotasi sertifikat di Azure Kubernetes Service (AKS)
Azure Kubernetes Service (AKS) menggunakan sertifikat untuk autentikasi dengan banyak komponennya. Kluster dengan kontrol akses berbasis peran Azure (Azure RBAC) yang dibuat setelah Maret 2022 diaktifkan dengan rotasi otomatis sertifikat. Anda mungkin perlu memutar sertifikat tersebut secara berkala karena alasan keamanan atau kebijakan. Misalnya, Anda mungkin memiliki kebijakan untuk memutar semua sertifikat Anda setiap 90 hari.
Catatan
Rotasi otomatis sertifikat diaktifkan secara default hanya untuk kluster AKS yang mendukung RBAC.
Artikel ini menunjukkan cara kerja rotasi sertifikat di kluster AKS kepada Anda.
Artikel ini memerlukan Azure CLI versi 2.0.77 atau yang lebih baru. Jalankan az --version
untuk menemukan versinya. Jika Anda perlu memasang atau meningkatkan, lihat Memasang Azure CLI.
AKS menghasilkan dan menggunakan sertifikat, Otoritas Sertifikat (CA), dan Akun Layanan (SA) berikut:
- Server API AKS membuat CA yang disebut CA Kluster.
- Server API memiliki CA Kluster, yang menandatangani sertifikat untuk komunikasi satu arah dari server API ke kubelets.
- Setiap kubelet membuat Permintaan Penandatanganan Sertifikat (CSR), yang ditandatangani CA Kluster, untuk komunikasi dari kubelet ke server API.
- Agregator API menggunakan CA Kluster untuk menerbitkan sertifikat untuk komunikasi dengan API lain. Agregator API juga dapat memiliki CA sendiri untuk menerbitkan sertifikat tersebut, tetapi saat ini Agregator API menggunakan CA Kluster.
- Setiap simpul menggunakan token SA, yang ditandatangani CA Kluster.
- Klien
kubectl
memiliki sertifikat untuk berkomunikasi dengan kluster AKS.
Microsoft mempertahankan semua sertifikat yang disebutkan di bagian ini, kecuali untuk sertifikat kluster.
Catatan
- Kluster AKS yang dibuat sebelum Mei 2019 memiliki sertifikat yang kedaluwarsa setelah dua tahun.
- Kluster AKS yang dibuat setelah Mei 2019 memiliki sertifikat CA Kluster yang kedaluwarsa setelah 30 tahun.
Anda dapat memverifikasi kapan kluster Anda dibuat menggunakan kubectl get nodes
perintah , yang menunjukkan Usia kumpulan simpul Anda.
Periksa tanggal kedaluwarsa sertifikat kluster menggunakan
kubectl config view
perintah .kubectl config view --raw -o jsonpath="{.clusters[?(@.name == '')].cluster.certificate-authority-data}" | base64 -d | openssl x509 -text | grep -A2 Validity
Periksa tanggal kedaluwarsa sertifikat server API menggunakan perintah berikut
curl
.curl https://{apiserver-fqdn} -k -v 2>&1 | grep expire
Periksa tanggal kedaluwarsa sertifikat simpul agen VMAS menggunakan
az vm run-command invoke
perintah .az vm run-command invoke --resource-group MC_rg_myAKSCluster_region --name vm-name --command-id RunShellScript --query 'value[0].message' -otsv --scripts "openssl x509 -in /etc/kubernetes/certs/apiserver.crt -noout -enddate"
Periksa tanggal kedaluwarsa sertifikat simpul agen set skala komputer virtual menggunakan
az vmss run-command invoke
perintah .az vmss run-command invoke --resource-group "MC_rg_myAKSCluster_region" --name "vmss-name" --command-id RunShellScript --instance-id 1 --scripts "openssl x509 -in /var/lib/kubelet/pki/kubelet-client-current.pem -noout -enddate" --query "value[0].message"
Agar AKS memutar sertifikat non-CA secara otomatis, kluster harus memiliki Bootstrapping TLS, yang diaktifkan secara default di semua wilayah Azure.
Catatan
- Jika Anda memiliki kluster yang sudah ada, Anda harus meningkatkan kluster tersebut untuk mengaktifkan Rotasi Otomatis Sertifikat.
- Jangan nonaktifkan Bootstrap agar rotasi otomatis tetap diaktifkan.
- Jika kluster dalam status berhenti selama rotasi sertifikat otomatis, hanya sertifikat sarana kontrol yang diputar. Dalam hal ini, Anda harus membuat ulang kumpulan simpul setelah rotasi sertifikat untuk memulai rotasi sertifikat kumpulan simpul.
Untuk setiap kluster AKS yang dibuat atau ditingkatkan setelah Maret 2022, Azure Kubernetes Service secara otomatis memutar sertifikat non-CA pada simpul sarana kontrol dan agen dalam 80% dari waktu yang valid sertifikat klien sebelum kedaluwarsa tanpa waktu henti untuk kluster.
Verifikasi apakah kluster Anda mengaktifkan Bootstrapping TLS dengan menelusuri ke salah satu ke jalur berikut:
- Pada node Linux: /var/lib/kubelet/bootstrap-kubeconfig atau /host/var/lib/kubelet/bootstrap-kubeconfig
- Pada simpul Windows: C:\k\bootstrap-config
Untuk informasi selengkapnya, lihat Menyambungkan ke node kluster Azure Kubernetes Service untuk pemeliharaan atau pemecahan masalah.
Catatan
Jalur file dapat berubah seiring berkembangnya versi Kubernetes.
Setelah wilayah dikonfigurasi, buat kluster baru atau tingkatkan kluster yang ada untuk mengatur rotasi otomatis untuk sertifikat kluster. Anda perlu meningkatkan sarana kontrol dan kumpulan simpul untuk mengaktifkan fitur ini.
Peringatan
Memutar sertifikat Anda menggunakan az aks rotate-certs
membuat ulang semua simpul, set skala komputer virtual, dan disk Anda dan dapat menyebabkan waktu henti hingga 30 menit untuk kluster AKS Anda.
Sambungkan ke kluster Anda menggunakan
az aks get-credentials
perintah .az aks get-credentials --resource-group $RESOURCE_GROUP_NAME --name $CLUSTER_NAME
Putar semua sertifikat, CA, dan SAs pada kluster Anda menggunakan
az aks rotate-certs
perintah .az aks rotate-certs --resource-group $RESOURCE_GROUP_NAME --name $CLUSTER_NAME
Penting
Penggabungan
az aks rotate-certs
membutuhkan waktu maksimal 30 menit. Jika perintah gagal sebelum menyelesaikan, gunakanaz aks show
untuk memverifikasi status kluster menjadi Sertifikat Berputar. Jika kluster dalam status gagal, jalankan ulangaz aks rotate-certs
untuk memutar kembali sertifikat Anda.Verifikasi bahwa sertifikat lama tidak lagi valid menggunakan perintah apa pun
kubectl
, sepertikubectl get nodes
.kubectl get nodes
Jika Anda belum memperbarui sertifikat yang digunakan oleh
kubectl
, Anda akan melihat kesalahan yang mirip dengan contoh output berikut:Unable to connect to the server: x509: certificate signed by unknown authority (possibly because of "crypto/rsa: verification error" while trying to verify candidate authority certificate "ca")
Perbarui sertifikat yang digunakan dengan
kubectl
menggunakanaz aks get-credentials
perintah dengan--overwrite-existing
bendera .az aks get-credentials --resource-group $RESOURCE_GROUP_NAME --name $CLUSTER_NAME --overwrite-existing
Verifikasi bahwa sertifikat telah diperbarui menggunakan
kubectl get
perintah .kubectl get nodes
Catatan
Jika Anda memiliki layanan apa pun yang berjalan di atas AKS, Anda mungkin juga perlu memperbarui sertifikat layanan tersebut.
Artikel ini menunjukkan kepada Anda cara memutar sertifikat, CA, dan CA kluster Anda secara manual dan otomatis. Untuk informasi selengkapnya, lihat Praktik terbaik untuk keamanan dan peningkatan kluster di Azure Kubernetes Service (AKS).
Umpan balik Azure Kubernetes Service
Azure Kubernetes Service adalah proyek sumber terbuka. Pilih tautan untuk memberikan umpan balik: