Rotasi sertifikat di Azure Kubernetes Service (AKS)

Azure Kubernetes Service (AKS) menggunakan sertifikat untuk autentikasi dengan banyak komponennya. Kluster berkemampuan 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 hanya diaktifkan secara default untuk kluster AKS yang diaktifkan RBAC.

Artikel ini menunjukkan cara kerja rotasi sertifikat di kluster AKS kepada Anda.

Sebelum Anda mulai

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 Pasang CLI Azure.

Sertifikat AKS, Otoritas Sertifikat, dan Akun Layanan

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 api server.
  • 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.

Memeriksa tanggal kedaluwarsa sertifikat

Periksa tanggal kedaluwarsa sertifikat kluster

  • 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

  • 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

  • Periksa tanggal kedaluwarsa sertifikat simpul agen VMAS menggunakan az vm run-command invoke perintah .

    az vm run-command invoke -g MC_rg_myAKSCluster_region -n 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

  • Periksa tanggal kedaluwarsa sertifikat simpul agen Set Skala Komputer Virtual menggunakan az vm 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 /etc/kubernetes/certs/apiserver.crt -noout -enddate" --query "value[0].message"
    

Rotasi Otomatis Sertifikat

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 sarana kontrol dan simpul agen dalam 80% dari waktu valid sertifikat klien sebelum kedaluwarsa tanpa waktu henti untuk kluster.

Bagaimana cara memeriksa apakah kumpulan node agen saat ini mendukung TLS Bootstrapping?

  1. Verifikasi apakah kluster Anda mengaktifkan Bootstrapping TLS dengan menelusurinya 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.

  2. 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.

Rotasikan sertifikat kluster Anda secara manual

Peringatan

Memutar sertifikat Anda menggunakan az aks rotate-certs membuat ulang semua simpul, Virtual Machine Scale Sets dan Disk Anda dan dapat menyebabkan waktu henti hingga 30 menit untuk kluster AKS Anda.

  1. Sambungkan ke kluster Anda menggunakan az aks get-credentials perintah .

    az aks get-credentials -g $RESOURCE_GROUP_NAME -n $CLUSTER_NAME
    
  2. Putar semua sertifikat, CA, dan CA pada kluster Anda menggunakan az aks rotate-certs perintah .

    az aks rotate-certs -g $RESOURCE_GROUP_NAME -n $CLUSTER_NAME
    

    Penting

    Penggabungan az aks rotate-certs membutuhkan waktu maksimal 30 menit. Jika perintah gagal sebelum menyelesaikan, gunakan az aks show untuk memverifikasi status kluster menjadi Sertifikat Berputar. Jika kluster dalam status gagal, jalankan ulang az aks rotate-certs untuk memutar kembali sertifikat Anda.

  3. Pastikan sertifikat lama tidak lagi valid menggunakan perintah apa pun kubectl , seperti kubectl 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")
    
  4. Perbarui sertifikat yang digunakan dengan kubectl menggunakan az aks get-credentials perintah dengan --overwrite-existing bendera .

    az aks get-credentials -g $RESOURCE_GROUP_NAME -n $CLUSTER_NAME --overwrite-existing
    
  5. Verifikasi 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.

Langkah berikutnya

Artikel ini menunjukkan kepada Anda cara memutar sertifikat, CA, dan CA kluster Anda secara otomatis. Untuk informasi selengkapnya, lihat Praktik terbaik untuk keamanan dan peningkatan kluster di Azure Kubernetes Service (AKS).