Bagikan melalui


Menambahkan enkripsi Layanan Manajemen Kunci dll ke kluster Azure Kubernetes Service

Artikel ini menunjukkan cara mengaktifkan enkripsi saat tidak aktif untuk rahasia Azure Kubernetes Service (AKS) di penyimpanan nilai kunci etcd dengan menggunakan Azure Key Vault dan plugin Key Management Service (KMS). Anda dapat menggunakan plugin KMS untuk:

  • Gunakan kunci dalam brankas kunci untuk enkripsi etcd.
  • Gunakan kunci Anda sendiri.
  • Berikan enkripsi saat tidak aktif untuk rahasia yang disimpan di etcd.
  • Putar kunci dalam brankas kunci.

Untuk informasi selengkapnya tentang menggunakan KMS, lihat Menggunakan penyedia KMS untuk enkripsi data.

Prasyarat

  • Akun Azure dengan langganan aktif. Buat akun secara gratis.
  • Azure CLI versi 2.39.0 atau yang lebih baru. Jalankan az --version untuk menemukan versi Anda. Jika Anda perlu memasang atau meningkatkan, Pasang Azure CLI.

Peringatan

Mulai 15 September 2024, Konnectivity tidak lagi didukung untuk brankas kunci privat untuk langganan atau langganan baru yang sebelumnya tidak menggunakan konfigurasi ini. Untuk langganan yang saat ini menggunakan konfigurasi ini atau telah menggunakannya dalam 60 hari terakhir, dukungan akan berlanjut hingga AKS versi 1.30 mencapai akhir masa pakai untuk dukungan komunitas.

KMS mendukung Konnectivity atau API Server VNet Integration (pratinjau) untuk brankas kunci publik.

KMS mendukung Integrasi VNet API Server (pratinjau) untuk brankas kunci privat dan publik.

Anda dapat menggunakan kubectl get po -n kube-system untuk memverifikasi hasil dan menunjukkan bahwa pod agen konnectivitas sedang berjalan. Jika pod berjalan, kluster AKS menggunakan Konnectivity. Saat menggunakan Integrasi VNet API Server, Anda dapat menjalankan az aks show -g -n perintah untuk memverifikasi bahwa enableVnetIntegration pengaturan diatur ke true.

Batasan

Batasan berikut berlaku saat Anda mengintegrasikan enkripsi etcd KMS dengan AKS:

  • Menghapus kunci, brankas kunci, atau identitas terkait tidak didukung.
  • Enkripsi etcd KMS tidak berfungsi dengan identitas terkelola yang ditetapkan sistem. Kebijakan akses brankas kunci harus diatur sebelum fitur diaktifkan. Identitas terkelola yang ditetapkan sistem tidak tersedia sampai setelah kluster dibuat. Pertimbangkan dependensi siklus.
  • Azure Key Vault dengan pengaturan firewall "izinkan akses publik dari jaringan virtual dan alamat IP tertentu" atau "nonaktifkan akses publik" tidak didukung karena memblokir lalu lintas dari plugin KMS ke brankas kunci.
  • Jumlah maksimum rahasia yang didukung oleh kluster yang mengaktifkan KMS adalah 2.000. Namun, penting untuk dicatat bahwa KMS v2 tidak dibatasi oleh pembatasan ini dan dapat menangani jumlah rahasia yang lebih tinggi.
  • Membawa brankas kunci Azure (BYO) Anda sendiri dari penyewa lain tidak didukung.
  • Dengan KMS diaktifkan, Anda tidak dapat mengubah mode brankas kunci terkait (publik versus privat). Untuk memperbarui mode brankas kunci, Anda harus terlebih dahulu menonaktifkan KMS, lalu mengaktifkannya lagi.
  • Jika kluster mengaktifkan KMS dan memiliki brankas kunci privat, kluster harus menggunakan terowongan Integrasi VNet (pratinjau) API Server. Konnectivity tidak didukung.
  • Menggunakan API Virtual Machine Scale Sets untuk menskalakan simpul dalam kluster ke nol membatalkan alokasi simpul. Kluster kemudian turun dan menjadi tidak dapat dipulihkan.
  • Setelah mematikan KMS, Anda tidak dapat menghancurkan kunci. Menghancurkan kunci menyebabkan server API berhenti berfungsi.

KMS mendukung brankas kunci publik atau brankas kunci privat.

Mengaktifkan KMS untuk brankas kunci publik

Bagian berikut menjelaskan cara mengaktifkan KMS untuk brankas kunci publik.

Membuat brankas kunci dan kunci publik

Peringatan

Menghapus kunci atau brankas kunci tidak didukung dan menyebabkan rahasia dalam kluster tidak dapat dipulihkan.

Jika Anda perlu memulihkan brankas kunci atau kunci Anda, lihat Manajemen pemulihan Azure Key Vault dengan penghapusan sementara dan perlindungan penghapusan menyeluruh.

Membuat brankas kunci dan kunci untuk brankas kunci publik non-RBAC

Gunakan az keyvault create untuk membuat brankas kunci tanpa menggunakan kontrol akses berbasis peran Azure (Azure RBAC):

az keyvault create --name MyKeyVault --resource-group MyResourceGroup

Gunakan az keyvault key create untuk membuat kunci:

az keyvault key create --name MyKeyName --vault-name MyKeyVault

Gunakan az keyvault key show untuk mengekspor ID kunci:

export KEY_ID=$(az keyvault key show --name MyKeyName --vault-name MyKeyVault --query 'key.kid' -o tsv)
echo $KEY_ID

Contoh ini menyimpan ID kunci di KEY_ID.

Membuat brankas kunci dan kunci untuk brankas kunci publik RBAC

Gunakan az keyvault create untuk membuat brankas kunci dengan menggunakan Azure RBAC:

export KEYVAULT_RESOURCE_ID=$(az keyvault create --name MyKeyVault --resource-group MyResourceGroup  --enable-rbac-authorization true --query id -o tsv)

Tetapkan izin diri Anda untuk membuat kunci:

az role assignment create --role "Key Vault Crypto Officer" --assignee-object-id $(az ad signed-in-user show --query id -o tsv) --assignee-principal-type "User" --scope $KEYVAULT_RESOURCE_ID

Gunakan az keyvault key create untuk membuat kunci:

az keyvault key create --name MyKeyName --vault-name MyKeyVault

Gunakan az keyvault key show untuk mengekspor ID kunci:

export KEY_ID=$(az keyvault key show --name MyKeyName --vault-name MyKeyVault --query 'key.kid' -o tsv)
echo $KEY_ID

Contoh ini menyimpan ID kunci di KEY_ID.

Membuat identitas terkelola yang ditetapkan pengguna untuk brankas kunci publik

Gunakan az identity create untuk membuat identitas terkelola yang ditetapkan pengguna:

az identity create --name MyIdentity --resource-group MyResourceGroup

Gunakan az identity show untuk mendapatkan ID objek identitas:

IDENTITY_OBJECT_ID=$(az identity show --name MyIdentity --resource-group MyResourceGroup --query 'principalId' -o tsv)
echo $IDENTITY_OBJECT_ID

Contoh sebelumnya menyimpan nilai ID objek identitas di IDENTITY_OBJECT_ID.

Gunakan az identity show untuk mendapatkan ID sumber daya identitas:

IDENTITY_RESOURCE_ID=$(az identity show --name MyIdentity --resource-group MyResourceGroup --query 'id' -o tsv)
echo $IDENTITY_RESOURCE_ID

Contoh ini menyimpan nilai ID sumber daya identitas di IDENTITY_RESOURCE_ID.

Menetapkan izin untuk mendekripsi dan mengenkripsi brankas kunci publik

Bagian berikut menjelaskan cara menetapkan izin dekripsi dan enkripsi untuk brankas kunci privat.

Menetapkan izin untuk brankas kunci publik non-RBAC

Jika brankas kunci Anda tidak diatur dengan --enable-rbac-authorization, Anda dapat menggunakan az keyvault set-policy untuk membuat kebijakan brankas kunci Azure.

az keyvault set-policy --name MyKeyVault --key-permissions decrypt encrypt --object-id $IDENTITY_OBJECT_ID

Menetapkan izin untuk brankas kunci publik RBAC

Jika brankas kunci Anda diatur dengan --enable-rbac-authorization, tetapkan peran Pengguna Kripto Key Vault untuk memberikan izin dekripsi dan enkripsi.

az role assignment create --role "Key Vault Crypto User" --assignee-object-id $IDENTITY_OBJECT_ID --assignee-principal-type "ServicePrincipal" --scope $KEYVAULT_RESOURCE_ID

Buat kluster AKS yang memiliki brankas kunci publik dan aktifkan enkripsi KMS etcd

Untuk mengaktifkan enkripsi KMS etcd, buat kluster AKS dengan menggunakan perintah az aks create . Anda dapat menggunakan --enable-azure-keyvault-kmsparameter , --azure-keyvault-kms-key-vault-network-access, dan --azure-keyvault-kms-key-id dengan az aks create.

az aks create \
    --name myAKSCluster \
    --resource-group MyResourceGroup \
    --assign-identity $IDENTITY_RESOURCE_ID \
    --enable-azure-keyvault-kms \
    --azure-keyvault-kms-key-vault-network-access "Public" \
    --azure-keyvault-kms-key-id $KEY_ID \
    --generate-ssh-keys

Memperbarui kluster AKS yang ada untuk mengaktifkan enkripsi KMS etcd untuk brankas kunci publik

Untuk mengaktifkan enkripsi KMS etcd untuk kluster yang ada, gunakan perintah az aks update . Anda dapat menggunakan --enable-azure-keyvault-kmsparameter , --azure-keyvault-kms-key-vault-network-access, dan --azure-keyvault-kms-key-id dengan az-aks-update.

az aks update --name myAKSCluster --resource-group MyResourceGroup --enable-azure-keyvault-kms --azure-keyvault-kms-key-vault-network-access "Public" --azure-keyvault-kms-key-id $KEY_ID

Gunakan perintah berikut untuk memperbarui semua rahasia. Jika Anda tidak menjalankan perintah ini, rahasia yang dibuat sebelumnya tidak lagi dienkripsi. Untuk kluster yang lebih besar, Anda mungkin ingin membahayakan rahasia menurut namespace layanan atau membuat skrip pembaruan.

kubectl get secrets --all-namespaces -o json | kubectl replace -f -

Memutar kunci yang ada di brankas kunci publik

Setelah mengubah ID kunci (termasuk mengubah nama kunci atau versi kunci), Anda dapat menggunakan perintah az aks update . Anda dapat menggunakan --enable-azure-keyvault-kmsparameter , --azure-keyvault-kms-key-vault-network-access, dan --azure-keyvault-kms-key-id dengan az-aks-update untuk memutar kunci yang ada di KMS.

Peringatan

Ingatlah untuk memperbarui semua rahasia setelah rotasi kunci. Jika Anda tidak memperbarui semua rahasia, rahasia tidak dapat diakses jika kunci yang dibuat sebelumnya tidak ada atau tidak lagi berfungsi.

KMS menggunakan 2 kunci secara bersamaan. Setelah rotasi kunci pertama, Anda perlu memastikan kunci lama dan baru valid (tidak kedaluwarsa) hingga rotasi kunci berikutnya. Setelah rotasi kunci kedua, kunci terlama dapat dihapus/kedaluwarsa dengan aman

Setelah memutar versi kunci KMS dengan yang baru keyId, silakan periksa securityProfile.azureKeyVaultKms.keyId json sumber daya AKS. Pastikan versi kunci baru sedang digunakan.

az aks update --name myAKSCluster --resource-group MyResourceGroup  --enable-azure-keyvault-kms --azure-keyvault-kms-key-vault-network-access "Public" --azure-keyvault-kms-key-id $NEW_KEY_ID 

Gunakan perintah berikut untuk memperbarui semua rahasia. Jika Anda tidak menjalankan perintah ini, rahasia yang dibuat sebelumnya masih dienkripsi dengan kunci sebelumnya. Untuk kluster yang lebih besar, Anda mungkin ingin membahayakan rahasia menurut namespace layanan atau membuat skrip pembaruan.

kubectl get secrets --all-namespaces -o json | kubectl replace -f -

Mengaktifkan KMS untuk brankas kunci privat

Jika Anda mengaktifkan KMS untuk brankas kunci privat, AKS secara otomatis membuat titik akhir privat dan tautan privat di grup sumber daya simpul. Brankas kunci ditambahkan koneksi titik akhir privat dengan kluster AKS.

Peringatan

KMS hanya mendukung Integrasi VNet API Server (pratinjau) untuk brankas kunci privat.

Membuat kunci dan key vault privat

Peringatan

Menghapus kunci atau brankas kunci tidak didukung dan menyebabkan rahasia dalam kluster tidak dapat dipulihkan.

Jika Anda perlu memulihkan brankas kunci atau kunci Anda, lihat Manajemen pemulihan Azure Key Vault dengan penghapusan sementara dan perlindungan penghapusan menyeluruh.

Gunakan az keyvault create untuk membuat brankas kunci privat:

az keyvault create --name MyKeyVault --resource-group MyResourceGroup --public-network-access Disabled

Gunakan az keyvault key create untuk membuat kunci:

az keyvault key create --name MyKeyName --vault-name MyKeyVault

Membuat atau memperbarui kunci di brankas kunci privat yang tidak memiliki titik akhir privat tidak didukung. Untuk mempelajari cara mengelola brankas kunci privat, lihat Mengintegrasikan brankas kunci dengan menggunakan Azure Private Link.

Membuat identitas terkelola yang ditetapkan pengguna untuk brankas kunci privat

Gunakan az identity create untuk membuat identitas terkelola yang ditetapkan pengguna:

az identity create --name MyIdentity --resource-group MyResourceGroup

Gunakan az identity show untuk mendapatkan ID objek identitas:

IDENTITY_OBJECT_ID=$(az identity show --name MyIdentity --resource-group MyResourceGroup --query 'principalId' -o tsv)
echo $IDENTITY_OBJECT_ID

Contoh sebelumnya menyimpan nilai ID objek identitas di IDENTITY_OBJECT_ID.

Gunakan az identity show untuk mendapatkan ID sumber daya identitas:

IDENTITY_RESOURCE_ID=$(az identity show --name MyIdentity --resource-group MyResourceGroup --query 'id' -o tsv)
echo $IDENTITY_RESOURCE_ID

Contoh ini menyimpan nilai ID sumber daya identitas di IDENTITY_RESOURCE_ID.

Menetapkan izin untuk mendekripsi dan mengenkripsi brankas kunci privat

Bagian berikut menjelaskan cara menetapkan izin dekripsi dan enkripsi untuk brankas kunci privat.

Menetapkan izin untuk brankas kunci privat non-RBAC

Catatan

Saat menggunakan brankas kunci privat, AKS tidak dapat memvalidasi izin identitas. Verifikasi bahwa identitas telah diberikan izin untuk mengakses brankas kunci sebelum mengaktifkan KMS.

Jika brankas kunci Anda tidak diatur dengan --enable-rbac-authorization, Anda dapat menggunakan az keyvault set-policy untuk membuat kebijakan brankas kunci di Azure:

az keyvault set-policy --name MyKeyVault --key-permissions decrypt encrypt --object-id $IDENTITY_OBJECT_ID

Menetapkan izin untuk brankas kunci privat RBAC

Jika brankas kunci Anda diatur dengan --enable-rbac-authorization, tetapkan peran Azure RBAC yang menyertakan izin dekripsi dan enkripsi:

az role assignment create --role "Key Vault Crypto User" --assignee-object-id $IDENTITY_OBJECT_ID --assignee-principal-type "ServicePrincipal" --scope $KEYVAULT_RESOURCE_ID

Untuk brankas kunci privat, peran Kontributor Key Vault diperlukan untuk membuat tautan privat antara brankas kunci privat dan kluster.

az role assignment create --role "Key Vault Contributor" --assignee-object-id $IDENTITY_OBJECT_ID --assignee-principal-type "ServicePrincipal" --scope $KEYVAULT_RESOURCE_ID

Buat kluster AKS yang memiliki brankas kunci privat dan aktifkan enkripsi KMS etcd

Untuk mengaktifkan enkripsi KMS etcd untuk brankas kunci privat, buat kluster AKS dengan menggunakan perintah az aks create . Anda dapat menggunakan --enable-azure-keyvault-kmsparameter , --azure-keyvault-kms-key-id, --azure-keyvault-kms-key-vault-network-access, dan --azure-keyvault-kms-key-vault-resource-id dengan az-aks-create.

az aks create \
    --name myAKSCluster \
    --resource-group MyResourceGroup \
    --assign-identity $IDENTITY_RESOURCE_ID \
    --enable-azure-keyvault-kms \
    --azure-keyvault-kms-key-id $KEY_ID \
    --azure-keyvault-kms-key-vault-network-access "Private" \
    --azure-keyvault-kms-key-vault-resource-id $KEYVAULT_RESOURCE_ID \
    --generate-ssh-keys

Memperbarui kluster AKS yang ada untuk mengaktifkan enkripsi KMS etcd untuk brankas kunci privat

Untuk mengaktifkan enkripsi KMS etcd pada kluster yang ada yang memiliki brankas kunci privat, gunakan perintah az aks update . Anda dapat menggunakan --enable-azure-keyvault-kmsparameter , --azure-keyvault-kms-key-id, --azure-keyvault-kms-key-vault-network-access, dan --azure-keyvault-kms-key-vault-resource-id dengan az-aks-update.

az aks update --name myAKSCluster --resource-group MyResourceGroup --enable-azure-keyvault-kms --azure-keyvault-kms-key-id $KEY_ID --azure-keyvault-kms-key-vault-network-access "Private" --azure-keyvault-kms-key-vault-resource-id $KEYVAULT_RESOURCE_ID

Gunakan perintah berikut untuk memperbarui semua rahasia. Jika Anda tidak menjalankan perintah ini, rahasia yang dibuat sebelumnya tidak dienkripsi. Untuk kluster yang lebih besar, Anda mungkin ingin membahayakan rahasia menurut namespace layanan atau membuat skrip pembaruan.

kubectl get secrets --all-namespaces -o json | kubectl replace -f -

Memutar kunci yang ada dalam brankas kunci privat

Setelah mengubah ID kunci (termasuk nama kunci dan versi kunci), Anda dapat menggunakan perintah az aks update . Anda dapat menggunakan --enable-azure-keyvault-kmsparameter , --azure-keyvault-kms-key-id, --azure-keyvault-kms-key-vault-network-access, dan --azure-keyvault-kms-key-vault-resource-id dengan az-aks-update untuk memutar kunci KMS yang ada.

Peringatan

Ingatlah untuk memperbarui semua rahasia setelah rotasi kunci. Jika Anda tidak memperbarui semua rahasia, rahasia tidak dapat diakses jika kunci yang dibuat sebelumnya tidak ada atau tidak lagi berfungsi.

Setelah Anda memutar kunci, kunci sebelumnya (key1) masih di-cache dan tidak boleh dihapus. Jika Anda ingin segera menghapus kunci sebelumnya (key1), Anda perlu memutar kunci dua kali. Kemudian key2 dan key3 di-cache, dan key1 dapat dihapus tanpa memengaruhi kluster yang ada.

Setelah memutar versi kunci KMS dengan yang baru keyId, silakan periksa securityProfile.azureKeyVaultKms.keyId json sumber daya AKS. Pastikan versi kunci baru sedang digunakan.

az aks update --name myAKSCluster --resource-group MyResourceGroup  --enable-azure-keyvault-kms --azure-keyvault-kms-key-id $NewKEY_ID --azure-keyvault-kms-key-vault-network-access "Private" --azure-keyvault-kms-key-vault-resource-id $KEYVAULT_RESOURCE_ID

Gunakan perintah berikut untuk memperbarui semua rahasia. Jika Anda tidak memperbarui semua rahasia, rahasia yang dibuat sebelumnya dienkripsi dengan kunci sebelumnya. Untuk kluster yang lebih besar, Anda mungkin ingin membahayakan rahasia menurut namespace layanan atau membuat skrip pembaruan.

kubectl get secrets --all-namespaces -o json | kubectl replace -f -

Memperbarui mode brankas kunci

Catatan

Untuk mengubah brankas kunci yang berbeda dengan mode yang berbeda (baik publik atau privat), Anda dapat berjalan az aks update secara langsung. Untuk mengubah mode brankas kunci yang terpasang, Anda harus terlebih dahulu menonaktifkan KMS, lalu menyalakannya lagi dengan menggunakan ID brankas kunci baru.

Bagian berikut menjelaskan cara memigrasikan brankas kunci publik yang terpasang ke mode privat. Langkah-langkah ini juga dapat digunakan untuk bermigrasi dari privat ke publik.

Menonaktifkan KMS pada kluster

Nonaktifkan KMS pada kluster yang ada dan lepaskan brankas kunci:

az aks update --name myAKSCluster --resource-group MyResourceGroup --disable-azure-keyvault-kms

Gunakan perintah berikut untuk memperbarui semua rahasia. Jika Anda tidak menjalankan perintah ini, rahasia yang dibuat sebelumnya masih dienkripsi dengan kunci sebelumnya. Untuk kluster yang lebih besar, Anda mungkin ingin membahayakan rahasia menurut namespace layanan atau membuat skrip pembaruan.

kubectl get secrets --all-namespaces -o json | kubectl replace -f -

Mengubah mode brankas kunci

Perbarui brankas kunci dari publik ke privat:

az keyvault update --name MyKeyVault --resource-group MyResourceGroup --public-network-access Disabled

Untuk bermigrasi dari privat ke publik diatur --public-network-access ke Enabled dalam perintah di atas.

Aktifkan KMS untuk kluster dengan menggunakan brankas kunci yang diperbarui

Aktifkan KMS dengan menggunakan brankas kunci privat yang diperbarui:

az aks update --name myAKSCluster --resource-group MyResourceGroup  --enable-azure-keyvault-kms --azure-keyvault-kms-key-id $NewKEY_ID --azure-keyvault-kms-key-vault-network-access "Private" --azure-keyvault-kms-key-vault-resource-id $KEYVAULT_RESOURCE_ID

Setelah menyiapkan KMS, Anda dapat mengaktifkan pengaturan diagnostik untuk brankas kunci untuk memeriksa log enkripsi.

Nonaktifkan KMS

Sebelum menonaktifkan KMS, Anda dapat menggunakan perintah Azure CLI berikut untuk memeriksa apakah KMS diaktifkan:

az aks list --query "[].{Name:name, KmsEnabled:securityProfile.azureKeyVaultKms.enabled, KeyId:securityProfile.azureKeyVaultKms.keyId}" -o table

Jika hasil mengonfirmasi KMS yang aktif, jalankan perintah berikut untuk menonaktifkan KMS pada kluster:

az aks update --name myAKSCluster --resource-group MyResourceGroup --disable-azure-keyvault-kms

Gunakan perintah berikut untuk memperbarui semua rahasia. Jika Anda tidak menjalankan perintah ini, rahasia yang dibuat sebelumnya masih dienkripsi dengan kunci sebelumnya, dan izin enkripsi dan dekripsi pada brankas kunci masih diperlukan. Untuk kluster yang lebih besar, Anda mungkin ingin membahayakan rahasia menurut namespace layanan atau membuat skrip pembaruan.

kubectl get secrets --all-namespaces -o json | kubectl replace -f -

Dukungan KMS v2

Dimulai di AKS versi 1.27, mengaktifkan fitur KMS mengonfigurasi KMS v2. Dengan KMS v2, Anda tidak terbatas pada 2.000 rahasia yang didukung versi sebelumnya. Untuk informasi selengkapnya, lihat Peningkatan KMS V2.

Migrasi ke KMS v2

Jika versi kluster Anda lebih lama dari 1.27 dan Anda sudah mengaktifkan KMS, peningkatan ke kluster versi 1.27 atau yang lebih baru akan diblokir. Gunakan langkah-langkah berikut untuk bermigrasi ke KMS v2:

  1. Matikan KMS pada kluster.
  2. Lakukan migrasi penyimpanan.
  3. Tingkatkan kluster ke versi 1.27 atau yang lebih baru.
  4. Aktifkan KMS pada kluster.
  5. Lakukan migrasi penyimpanan.

Menonaktifkan KMS untuk memigrasikan penyimpanan

Untuk menonaktifkan KMS pada kluster yang ada, gunakan az aks update perintah dengan --disable-azure-keyvault-kms argumen :

az aks update --name myAKSCluster --resource-group MyResourceGroup --disable-azure-keyvault-kms

Memigrasikan penyimpanan

Untuk memperbarui semua rahasia, gunakan kubectl get secrets perintah dengan --all-namespaces argumen :

kubectl get secrets --all-namespaces -o json | kubectl replace -f -

Memutakhirkan kluster AKS

Untuk meningkatkan kluster AKS, gunakan az aks upgrade perintah . Atur versi ke 1.27.x atau yang lebih baru dengan menggunakan --kubernetes-version argumen .

az aks upgrade --resource-group myResourceGroup --name myAKSCluster --kubernetes-version <AKS version>

Berikut contohnya:

az aks upgrade --resource-group myResourceGroup --name myAKSCluster --kubernetes-version 1.27.1

Mengaktifkan KMS setelah migrasi penyimpanan

Anda dapat mengaktifkan fitur KMS pada kluster lagi untuk mengenkripsi rahasia. Setelah itu, kluster AKS menggunakan KMS v2. Jika Anda tidak ingin bermigrasi ke KMS v2, Anda dapat membuat kluster baru yang versi 1.27 atau yang lebih baru dengan KMS diaktifkan.

Memigrasikan penyimpanan untuk KMS v2

Untuk mengenkripsi ulang semua rahasia di KMS v2, gunakan kubectl get secrets perintah dengan --all-namespaces argumen :

kubectl get secrets --all-namespaces -o json | kubectl replace -f -

Pengamatan KMS

Json sumber daya AKS

Anda dapat memeriksa konfigurasi KMS di json sumber daya AKS dengan:

  1. az aks show Menggunakan perintah
  2. Melalui Portal Microsoft Azure

Bagian ini securityProfile.azureKeyVaultKms menunjukkan konfigurasi KMS, termasuk Brankas kunci, kunci, versi kunci saat ini, dan sebelumnya.

Mendiagnosis dan memecahkan masalah

Karena plugin KMS adalah mobil samping dari Pod kube-apiserver, Anda tidak dapat mengaksesnya secara langsung. Untuk meningkatkan pengamatan KMS, Anda dapat memeriksa status KMS dengan:

  1. Buka halaman Portal Microsoft Azure kluster AKS Anda
  2. Diagnose and solve problems Buka dan cariKMS
  3. Dalam KMS detektor, Anda dapat melihat status KMS dan jika berada dalam beberapa skenario yang diketahui gagal

Ambil KeyExpired: Operation encrypt is not allowed on an expired key sebagai contoh:

Karena plugin AKS KMS saat ini hanya mengizinkan brankas kunci dan kunci BYO, Anda bertanggung jawab untuk mengelola siklus hidup kunci. Jika kunci kedaluwarsa, plugin KMS akan gagal mendekripsi rahasia yang ada. Anda perlu

  1. Memperpanjang tanggal kedaluwarsa kunci untuk membuat KMS berfungsi
  2. Memutar versi kunci