Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Azure Kubernetes Service için Istio tabanlı hizmet ağı eklentisinde, Istio sertifika yetkilisi (CA) varsayılan olarak otomatik olarak imzalanan bir kök sertifika ve anahtar oluşturur ve bunları iş yükü sertifikalarını imzalamak için kullanır. Kök CA anahtarını korumak için, çevrimdışı güvenli bir makinede çalışan bir kök CA kullanmalısınız. Her kümede çalışan Istio CA'larına ara sertifikalar vermek için kök CA'sını kullanabilirsiniz. Istio CA, yönetici tarafından belirtilen sertifikayı ve anahtarı kullanarak iş yükü sertifikalarını imzalayabilir ve yönetici tarafından belirtilen kök sertifikayı güven kökü olarak iş yüklerine dağıtabilir. Bu makalede, Azure Kubernetes Service için Istio tabanlı hizmet ağı eklentisinde Istio CA için kendi sertifikalarınızı ve anahtarlarınızı getirme işlemi ele alınmaktadır.
Bu makalede, Istio tabanlı hizmet ağı eklentisine Azure Key Vault kullanarak kök sertifika, imza sertifikası ve anahtar şeklinde sağlanan girdilerle Istio sertifika yetkilisini nasıl yapılandırabileceğiniz ele alınmaktadır.
Başlamadan önce
Azure CLI sürümünü doğrulama
Eklenti, Azure CLI 2.57.0 veya sonraki bir sürümün yüklenmesini gerektirir. Sürümü doğrulamak için komutunu çalıştırabilirsiniz az --version . Yüklemek veya yükseltmek için bkz. Azure CLI yükleme.
Azure Key Vault ayarlama
Istio eklentisine sertifika ve anahtar girişleri sağlamak için bir Azure Key Vault kaynağına ihtiyacınız vardır.
Kök sertifika, ara sertifikalar, ara anahtar ve sertifika zincirini çevrimdışı oluşturmanız gerekir. Buradan 1-3 arası adımlarda bu dosyaların nasıl oluşturulacağıyla ilgili bir örnek verilmiştir.
Sertifikaları ve anahtarı kullanarak Azure Key Vault'da gizli diziler oluşturun:
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>Kümeniz için Gizli Depolama CSI Sürücüsü için Azure Key Vault sağlayıcısını etkinleştirin:
az aks enable-addons --addons azure-keyvault-secrets-provider --resource-group $RESOURCE_GROUP --name $CLUSTERNot
Sertifikaları döndürürken, gizli dizilerin kümeye ne kadar hızlı eşitlendiğini denetlemek için Azure Key Vault Gizli Dizi Sağlayıcısı eklentisinin
--rotation-poll-intervalparametresini kullanabilirsiniz. Örneğin:az aks addon update --resource-group $RESOURCE_GROUP --name $CLUSTER --addon azure-keyvault-secrets-provider --enable-secret-rotation --rotation-poll-interval 20sKey Vault, izin modeli olarak Azure RBAC kullanıyorsa, eklentinin kullanıcı tarafından atanan yönetilen kimliği için "Key Vault Sır Kullanıcısı" Azure rolünü atamak adına buradaki yönergeleri izleyin. Alternatif olarak, anahtar kasanız kasa erişim ilkesi izin modelini kullanıyorsa, eklentinin kullanıcı tarafından atanan yönetilen kimliğine Azure Key Vault kaynağına erişim izni vermek için erişim politikasını kullanarak yetkilendirin.
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
CA sertifikalarıyla Istio tabanlı servis ağı eklentisini kurma
Daha önce oluşturulmuş Azure Key Vault gizli dizilerine başvururken mevcut AKS kümeniz için Istio hizmet ağı eklentisini etkinleştirin:
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_NAMENot
Istio CA tarafından oluşturulan otomatik olarak imzalanan kök sertifika kullanan Istio eklentisi olan mevcut kümeler için eklenti CA'sına geçiş desteklenmez. Eklenti CA girişlerinden geçmek için önce bu kümelerdeki ağı devre dışı bırakmanız ve ardından yukarıdaki komutu kullanarak yeniden etkinleştirmeniz gerekir.
Istio denetim düzleminin, özel sertifika otoritesini seçtiğini doğrulayın.
kubectl logs deploy/istiod-asm-1-17 -c discovery -n aks-istio-system | grep -v validationController | grep x509Beklenen çıkış şuna benzer olmalıdır:
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"
Sertifika yetkilisi yenileme
Güvenlik veya ilke nedenleriyle sertifika yetkililerini düzenli aralıklarla döndürmeniz gerekebilir. Bu bölümde ara CA ve kök CA döndürme senaryolarının nasıl işleneceğini öğreneceksiniz.
Ara sertifika yetkilisi yenileme
Kök CA'sını aynı tutarken ara CA'sını döndürebilirsiniz. Azure Key Vault kaynağındaki gizli dizileri yeni sertifika ve anahtar dosyalarıyla güncelleştirin:
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>--rotation-poll-intervalsüresi kadar bekleyin. Sertifikaların, Azure Key Vault kaynağında güncelleştirilen yeni ara CA temelinde kümede yenilenip yenilenmediğini denetleyin:kubectl logs deploy/istiod-asm-1-17 -c discovery -n aks-istio-system | grep -v validationControllerBeklenen çıkış şuna benzer olmalıdır:
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İş yükleri, Istio denetim düzleminden varsayılan olarak 24 saat geçerli olan sertifikalar alır. Podları yeniden başlatmazsanız, tüm iş yükleri 24 saat içinde yeni ara CA'ya göre yeni yaprak sertifikalar alır. Tüm bu iş yüklerinin yeni ara sertifika otoritesinden yeni yaprak sertifikalarını hemen almak zorunda olması gerekiyorsa, iş yüklerini yeniden başlatmanız gerekir.
kubectl rollout restart deployment <deployment name> -n <deployment namespace>
Kök sertifika yetkilisi yenileme
Azure Key Vault gizli dizilerini, eski ve yeni kök sertifikaların birleştirilmiş olduğu kök sertifika dosyasıyla güncelleştirmeniz gerekir:
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>root-cert.pemiçeriği bu biçimi takip eder:-----BEGIN CERTIFICATE----- <contents of old root certificate> -----END CERTIFICATE----- -----BEGIN CERTIFICATE----- <contents of new root certificate> -----END CERTIFICATE-----Sertifikalar kümeyle eşitlendikten sonra günlükleri denetleyin
istiod.kubectl logs deploy/istiod-asm-1-17 -c discovery -n aks-istio-systemBeklenen çıktı:
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 reloaded24 saat beklemeniz (yaprak sertifika geçerliliği için varsayılan süre) veya tüm iş yüklerinin yeniden başlatılmasını zorlamanız gerekir. Bu şekilde, tüm iş yükleri mTLS doğrulaması için hem eski hem de yeni sertifika yetkililerini tanır.
kubectl rollout restart deployment <deployment name> -n <deployment namespace>Artık Azure Key Vault gizli dizilerini yalnızca yeni CA ile güncelleştirebilirsiniz (eski CA olmadan):
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>Sertifikalar kümeyle eşitlendikten sonra günlükleri denetleyin
istiod.kubectl logs deploy/istiod-asm-1-17 -c discovery -n aks-istio-system | grep -v validationControllerBeklenen çıktı:
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"Bu makalede gösterilen örnek çıkışlardan, Kök A'dan (eklentiyi etkinleştirirken kullanılır) Kök B'ye taşındığımızı görebilirsiniz.