Colokkan sertifikat CA untuk add-on mesh layanan berbasis Istio di Azure Kubernetes Service
Dalam addon jala layanan berbasis Istio untuk Azure Kubernetes Service, secara default otoritas sertifikat Istio (CA) menghasilkan sertifikat akar dan kunci yang ditandatangani sendiri dan menggunakannya untuk menandatangani sertifikat beban kerja. Untuk melindungi kunci CA akar, Anda harus menggunakan CA akar, yang berjalan pada komputer aman offline. Anda dapat menggunakan CA akar untuk menerbitkan sertifikat perantara ke CA Istio yang berjalan di setiap kluster. CA Istio dapat menandatangani sertifikat beban kerja menggunakan sertifikat dan kunci yang ditentukan administrator, dan mendistribusikan sertifikat akar yang ditentukan administrator ke beban kerja sebagai akar kepercayaan. Artikel ini membahas cara membawa sertifikat dan kunci Anda sendiri untuk Istio CA di add-on jala layanan berbasis Istio untuk Azure Kubernetes Service.
Artikel ini membahas bagaimana Anda dapat mengonfigurasi otoritas sertifikat Istio dengan sertifikat akar, sertifikat penandatanganan, dan kunci yang disediakan sebagai input menggunakan Azure Key Vault ke add-on mesh layanan berbasis Istio.
Sebelum Anda mulai
Memverifikasi versi Azure CLI
Add-on memerlukan Azure CLI versi 2.57.0 atau yang lebih baru terinstal. Anda dapat menjalankan az --version
untuk memverifikasi versi. Untuk menginstal atau meningkatkan, lihat [Instal Azure CLI][azure-cli-install].
Menyiapkan Azure Key Vault
Anda memerlukan sumber daya Azure Key Vault untuk menyediakan sertifikat dan input kunci ke add-on Istio.
Anda perlu menghasilkan sertifikat akar, sertifikat perantara, kunci perantara, dan rantai sertifikat offline. Langkah 1-3 dari sini memiliki contoh cara membuat file-file ini.
Buat rahasia di Azure Key Vault menggunakan sertifikat dan kunci:
az keyvault secret set --vault-name $AKV_NAME --name root-cert --file <path-to-folder/root-cert.pem> az keyvault secret set --vault-name $AKV_NAME --name ca-cert --file <path-to-folder/ca-cert.pem> az keyvault secret set --vault-name $AKV_NAME --name ca-key --file <path-to-folder/ca-key.pem> az keyvault secret set --vault-name $AKV_NAME --name cert-chain --file <path-to-folder/cert-chain.pem>
Aktifkan penyedia Azure Key Vault untuk Secret Store CSI Driver untuk kluster Anda:
az aks enable-addons --addons azure-keyvault-secrets-provider --resource-group $RESOURCE_GROUP --name $CLUSTER
Catatan
Saat memutar sertifikat, untuk mengontrol seberapa cepat rahasia disinkronkan ke kluster, Anda dapat menggunakan
--rotation-poll-interval
parameter add-on Penyedia Rahasia Azure Key Vault. Misalnya:az aks addon update --resource-group $RESOURCE_GROUP --name $CLUSTER --addon azure-keyvault-secrets-provider --enable-secret-rotation --rotation-poll-interval 20s
Otorisasi identitas terkelola add-on yang ditetapkan pengguna untuk memiliki akses ke sumber daya Azure Key Vault:
OBJECT_ID=$(az aks show --resource-group $RESOURCE_GROUP --name $CLUSTER --query 'addonProfiles.azureKeyvaultSecretsProvider.identity.objectId' -o tsv) az keyvault set-policy --name $AKV_NAME --object-id $OBJECT_ID --secret-permissions get
Catatan
Jika Anda membuat Key Vault dengan Otorisasi Azure RBAC untuk model izin Anda alih-alih Kebijakan Akses Vault, ikuti instruksi di sini untuk membuat izin untuk identitas terkelola. Tambahkan penetapan peran Azure untuk
Key Vault Secrets User
identitas terkelola add-on yang ditetapkan pengguna.
Menyiapkan addon mesh layanan berbasis Istio dengan sertifikat CA plug-in
Aktifkan addon jala layanan Istio untuk kluster AKS yang ada sambil merujuk rahasia Azure Key Vault yang dibuat sebelumnya:
az aks mesh enable --resource-group $RESOURCE_GROUP --name $CLUSTER \ --root-cert-object-name root-cert \ --ca-cert-object-name ca-cert \ --ca-key-object-name ca-key \ --cert-chain-object-name cert-chain \ --key-vault-id /subscriptions/$SUBSCRIPTION/resourceGroups/$RESOURCE_GROUP/providers/Microsoft.KeyVault/vaults/$AKV_NAME
Catatan
Untuk kluster yang ada dengan addon Istio menggunakan sertifikat akar yang ditandatangani sendiri yang dihasilkan oleh Istio CA, beralih ke PLUGIN CA tidak didukung. Anda perlu menonaktifkan jala pada kluster ini terlebih dahulu dan kemudian mengaktifkannya lagi menggunakan perintah di atas untuk melewati input OS plugin.
Verifikasi bahwa akan
cacerts
dibuat pada kluster:kubectl get secret -n aks-istio-system
Output yang diharapkan:
NAME TYPE DATA AGE cacerts opaque 4 13h sh.helm.release.v1.azure-service-mesh-istio-discovery.v380 helm.sh/release.v1 1 2m15s sh.helm.release.v1.azure-service-mesh-istio-discovery.v381 helm.sh/release.v1 1 8s
Verifikasi bahwa sarana kontrol Istio mengambil otoritas sertifikat kustom:
kubectl logs deploy/istiod-asm-1-17 -c discovery -n aks-istio-system | grep -v validationController | grep x509
Output yang diharapkan harus mirip dengan:
2023-11-06T15:49:15.493732Z info x509 cert - Issuer: "CN=Intermediate CA - A1,O=Istio,L=cluster-A1", Subject: "", SN: e191d220af347c7e164ec418d75ed19e, NotBefore: "2023-11-06T15:47:15Z", NotAfter: "2033-11-03T15:49:15Z" 2023-11-06T15:49:15.493764Z info x509 cert - Issuer: "CN=Root A,O=Istio", Subject: "CN=Intermediate CA - A1,O=Istio,L=cluster-A1", SN: 885034cba2894f61036f2956fd9d0ed337dc636, NotBefore: "2023-11-04T01:40:02Z", NotAfter: "2033-11-01T01:40:02Z" 2023-11-06T15:49:15.493795Z info x509 cert - Issuer: "CN=Root A,O=Istio", Subject: "CN=Root A,O=Istio", SN: 18e2ee4089c5a7363ec306627d21d9bb212bed3e, NotBefore: "2023-11-04T01:38:27Z", NotAfter: "2033-11-01T01:38:27Z"
Rotasi otoritas sertifikat
Anda mungkin perlu memutar otoritas sertifikat secara berkala karena alasan keamanan atau kebijakan. Bagian ini memancang Anda melalui cara menangani skenario rotasi CA perantara dan CA akar.
Rotasi otoritas sertifikat menengah
Anda dapat memutar CA perantara sambil menjaga CA akar tetap sama. Perbarui rahasia di sumber daya Azure Key Vault dengan sertifikat dan file kunci baru:
az keyvault secret set --vault-name $AKV_NAME --name root-cert --file <path-to-folder/root-cert.pem> az keyvault secret set --vault-name $AKV_NAME --name ca-cert --file <path-to-folder/ca-cert.pem> az keyvault secret set --vault-name $AKV_NAME --name ca-key --file <path-to-folder/ca-key.pem> az keyvault secret set --vault-name $AKV_NAME --name cert-chain --file <path/cert-chain.pem>
Tunggu durasi
--rotation-poll-interval
waktu . Periksa apakahcacerts
rahasia disegarkan pada kluster berdasarkan CA perantara baru yang diperbarui pada sumber daya Azure Key Vault:kubectl logs deploy/istiod-asm-1-17 -c discovery -n aks-istio-system | grep -v validationController
Output yang diharapkan harus mirip dengan:
2023-11-07T06:16:21.091844Z info Update Istiod cacerts 2023-11-07T06:16:21.091901Z info Using istiod file format for signing ca files 2023-11-07T06:16:21.354423Z info Istiod has detected the newly added intermediate CA and updated its key and certs accordingly 2023-11-07T06:16:21.354910Z info x509 cert - Issuer: "CN=Intermediate CA - A2,O=Istio,L=cluster-A2", Subject: "", SN: b2753c6a23b54d8364e780bf664672ce, NotBefore: "2023-11-07T06:14:21Z", NotAfter: "2033-11-04T06:16:21Z" 2023-11-07T06:16:21.354967Z info x509 cert - Issuer: "CN=Root A,O=Istio", Subject: "CN=Intermediate CA - A2,O=Istio,L=cluster-A2", SN: 17f36ace6496ac2df88e15878610a0725bcf8ae9, NotBefore: "2023-11-04T01:40:22Z", NotAfter: "2033-11-01T01:40:22Z" 2023-11-07T06:16:21.355007Z info x509 cert - Issuer: "CN=Root A,O=Istio", Subject: "CN=Root A,O=Istio", SN: 18e2ee4089c5a7363ec306627d21d9bb212bed3e, NotBefore: "2023-11-04T01:38:27Z", NotAfter: "2033-11-01T01:38:27Z" 2023-11-07T06:16:21.355012Z info Istiod certificates are reloaded
Beban kerja menerima sertifikat dari sarana kontrol Istio yang berlaku selama 24 jam secara default. Jika Anda tidak menghidupkan ulang pod, semua beban kerja mendapatkan sertifikat daun baru berdasarkan CA perantara baru dalam 24 jam. Jika Anda ingin memaksa semua beban kerja ini untuk mendapatkan sertifikat daun baru segera dari CA perantara baru, maka Anda perlu memulai ulang beban kerja.
kubectl rollout restart deployment <deployment name> -n <deployment namespace>
Rotasi otoritas sertifikat akar
Anda perlu memperbarui rahasia Azure Key Vault dengan file sertifikat akar yang memiliki perangkaian sertifikat akar lama dan baru:
az keyvault secret set --vault-name $AKV_NAME --name root-cert --file <path-to-folder/root-cert.pem> az keyvault secret set --vault-name $AKV_NAME --name ca-cert --file <path-to-folder/ca-cert.pem> az keyvault secret set --vault-name $AKV_NAME --name ca-key --file <path-to-folder/ca-key.pem> az keyvault secret set --vault-name $AKV_NAME --name cert-chain --file <path/cert-chain.pem>
Isi dari
root-cert.pem
mengikuti format ini:-----BEGIN CERTIFICATE----- <contents of old root certificate> -----END CERTIFICATE----- -----BEGIN CERTIFICATE----- <contents of new root certificate> -----END CERTIFICATE-----
Periksa
istiod
log, setelah sertifikat disinkronkan ke kluster.kubectl logs deploy/istiod-asm-1-17 -c discovery -n aks-istio-system
Output yang diharapkan:
2023-11-07T06:42:00.287916Z info Updating new ROOT-CA 2023-11-07T06:42:00.287928Z info update root cert and generate new dns certs 2023-11-07T06:42:00.288254Z info Update trust anchor with new root cert 2023-11-07T06:42:00.288279Z info trustBundle updating Source IstioCA with certs 2023-11-07T06:42:00.288298Z info Istiod has detected the newly added intermediate CA and updated its key and certs accordingly 2023-11-07T06:42:00.288303Z info Istiod certificates are reloaded
Anda perlu menunggu selama 24 jam (waktu default untuk validitas sertifikat daun) atau memaksa menghidupkan ulang semua beban kerja. Dengan cara ini, semua beban kerja mengenali otoritas sertifikat lama dan baru untuk verifikasi mTLS.
kubectl rollout restart deployment <deployment name> -n <deployment namespace>
Anda sekarang dapat memperbarui rahasia Azure Key Vault hanya dengan CA baru (tanpa CA lama):
az keyvault secret set --vault-name $AKV_NAME --name root-cert --file <path-to-folder/root-cert.pem> az keyvault secret set --vault-name $AKV_NAME --name ca-cert --file <path-to-folder/ca-cert.pem> az keyvault secret set --vault-name $AKV_NAME --name ca-key --file <path-to-folder/ca-key.pem> az keyvault secret set --vault-name $AKV_NAME --name cert-chain --file <path/cert-chain.pem>
Periksa
istiod
log, setelah sertifikat disinkronkan ke kluster.kubectl logs deploy/istiod-asm-1-17 -c discovery -n aks-istio-system | grep -v validationController
Output yang diharapkan:
2023-11-07T08:01:17.780299Z info x509 cert - Issuer: "CN=Intermediate CA - B1,O=Istio,L=cluster-B1", Subject: "", SN: 1159747c72cc7ac7a54880cd49b8df0a, NotBefore: "2023-11-07T07:59:17Z", NotAfter: "2033-11-04T08:01:17Z" 2023-11-07T08:01:17.780330Z info x509 cert - Issuer: "CN=Root B,O=Istio", Subject: "CN=Intermediate CA - B1,O=Istio,L=cluster-B1", SN: 2aba0c438652a1f9beae4249457023013948c7e2, NotBefore: "2023-11-04T01:42:12Z", NotAfter: "2033-11-01T01:42:12Z" 2023-11-07T08:01:17.780345Z info x509 cert - Issuer: "CN=Root B,O=Istio", Subject: "CN=Root B,O=Istio", SN: 3f9da6ddc4cb03749c3f43243a4b701ce5eb4e96, NotBefore: "2023-11-04T01:41:54Z", NotAfter: "2033-11-01T01:41:54Z"
Dari contoh output yang ditunjukkan dalam artikel ini, Anda dapat mengamati bahwa kami pindah dari Root A (digunakan saat mengaktifkan addon) ke Root B.
Anda dapat menunggu lagi selama 24 jam atau memaksa menghidupkan ulang semua beban kerja. Memaksa hidupkan ulang membuat beban kerja mendapatkan sertifikat daun baru dari CA akar baru segera.
kubectl rollout restart deployment <deployment name> -n <deployment namespace>
Azure Kubernetes Service