Azure Kubernetes Service'de (AKS) sertifika döndürme

Azure Kubernetes Service (AKS), bileşenlerinin birçoğuyla kimlik doğrulaması için sertifikalar kullanır. Mart 2022'de oluşturulan RBAC özellikli kümeler, sertifika otomatik döndürme özelliğiyle etkinleştirilir. Güvenlik veya ilke nedenleriyle bu sertifikaları düzenli aralıklarla döndürmeniz gerekebilir. Örneğin, tüm sertifikalarınızı 90 günde bir döndürmek için bir ilkeniz olabilir.

Not

Sertifika otomatik döndürme yalnızca RBAC özellikli AKS kümeleri için varsayılan olarak etkindir.

Bu makalede, AKS kümenizde sertifika döndürmenin nasıl çalıştığı gösterilir.

Başlamadan önce

Bu makale, Azure CLI 2.0.77 veya sonraki bir sürümünü gerektirir. Sürümü bulmak için az --version komutunu çalıştırın. Yüklemeniz veya yükseltmeniz gerekirse, bkz. Azure CLI yükleme.

AKS sertifikaları, Sertifika Yetkilileri ve Hizmet Hesapları

AKS aşağıdaki sertifikaları, Sertifika Yetkililerini (CA) ve Hizmet Hesaplarını (SA) oluşturur ve kullanır:

  • AKS API sunucusu, Küme CA'sı adlı bir CA oluşturur.
  • API sunucusunda, API sunucusundan kubelet'lere tek yönlü iletişim için sertifikaları imzalayan bir Küme CA'sı vardır.
  • Her kubelet, kubelet'ten API sunucusuna iletişim için Küme CA'sının imzaladığı bir Sertifika İmzalama İsteği (CSR) oluşturur.
  • API toplayıcısı, diğer API'lerle iletişim için sertifikalar vermek üzere Küme CA'sını kullanır. API toplayıcısı bu sertifikaların verilmesi için kendi CA'sına da sahip olabilir, ancak şu anda Küme CA'sını kullanır.
  • Her düğüm, Küme CA'sının imzaladığı bir SA belirteci kullanır.
  • İstemcinin kubectl AKS kümesiyle iletişim kurmak için bir sertifikası vardır.

Microsoft, küme sertifikası dışında bu bölümde bahsedilen tüm sertifikaları korur.

Not

  • Mayıs 2019'da oluşturulan AKS kümelerinde iki yıl sonra süresi dolan sertifikalar vardır.
  • Mayıs 2019'da oluşturulan AKS kümelerinde 30 yıl sonra süresi dolan Küme CA sertifikaları vardır.

Düğüm havuzlarınızın Yaşını gösteren komutunu kullanarak kubectl get nodes kümenizin ne zaman oluşturulduğunu doğrulayabilirsiniz.

Sertifika süre sonu tarihlerini denetleme

Küme sertifikası süre sonu tarihini denetleme

  • komutunu kullanarak kubectl config view küme sertifikasının sona erme tarihini denetleyin.

    kubectl config view --raw -o jsonpath="{.clusters[?(@.name == '')].cluster.certificate-authority-data}" | base64 -d | openssl x509 -text | grep -A2 Validity
    

API sunucusu sertifikasının sona erme tarihini denetleme

  • Aşağıdaki curl komutu kullanarak API sunucusu sertifikasının sona erme tarihini denetleyin.

    curl https://{apiserver-fqdn} -k -v 2>&1 | grep expire
    

VMAS aracısı düğüm sertifikası son kullanma tarihini denetleme

  • komutunu kullanarak az vm run-command invoke VMAS aracı düğümü sertifikasının sona erme tarihini denetleyin.

    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"
    

Sanal Makine Ölçek Kümesi aracı düğümü sertifikasının sona erme tarihini denetleme

  • komutunu kullanarak Sanal Makine Ölçek Kümesi aracı düğümü sertifikasının az vm run-command invoke sona erme tarihini denetleyin.

    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"
    

Sertifika Otomatik Döndürme

AKS'nin CA dışı sertifikaları otomatik olarak döndürmesi için kümenin tüm Azure bölgelerinde varsayılan olarak etkinleştirilen TLS Bootstrapping'e sahip olması gerekir.

Not

  • Mevcut bir kümeniz varsa, Sertifika Otomatik Döndürme'yi etkinleştirmek için bu kümeyi yükseltmeniz gerekir.
  • Otomatik döndürmeyi etkin tutmak için Bootstrap'ı devre dışı bırakma.
  • Küme otomatik sertifika döndürme sırasında durdurulmuş durumdaysa, yalnızca denetim düzlemi sertifikaları döndürülür. Bu durumda, düğüm havuzu sertifika döndürmesini başlatmak için sertifika döndürmeden sonra düğüm havuzunu yeniden oluşturmanız gerekir.

Mart 2022'den sonra oluşturulan veya yükseltilen tüm AKS kümeleri için Azure Kubernetes Service, ca dışı sertifikaları hem denetim düzleminde hem de aracı düğümlerinde istemci sertifikasının %80'i içinde küme için kapalı kalma süresi olmadan süresi dolmadan geçerli süre içinde otomatik olarak döndürür.

Geçerli aracı düğümü havuzunun TLS Bootstrapping'in etkin olup olmadığı nasıl denetlenecek?

  1. Aşağıdaki yollara göz atarak kümenizde TLS Önyüklemesi'nin etkinleştirilip etkinleştirilmediğini doğrulayın:

    • Linux düğümünde: /var/lib/kubelet/bootstrap-kubeconfig veya /host/var/lib/kubelet/bootstrap-kubeconfig
    • Windows düğümünde: C:\k\bootstrap-config

    Daha fazla bilgi için bkz. Bakım veya sorun giderme için Azure Kubernetes Service küme düğümlerine bağlanma.

    Not

    Kubernetes sürümleri geliştikçe dosya yolu değişebilir.

  2. Bir bölge yapılandırıldıktan sonra yeni bir küme oluşturun veya küme sertifikası için otomatik döndürmeyi ayarlamak için mevcut kümeyi yükseltin. Bu özelliği etkinleştirmek için denetim düzlemini ve düğüm havuzunu yükseltmeniz gerekir.

Küme sertifikalarınızı el ile döndürme

Uyarı

Sertifikalarınızı kullanarak az aks rotate-certs döndürmek tüm düğümlerinizi, Sanal Makine Ölçek Kümeleri ve Disklerinizi yeniden oluşturur ve AKS kümenizde 30 dakikaya kadar kapalı kalma süresine neden olabilir.

  1. komutunu kullanarak kümenize bağlanın az aks get-credentials .

    az aks get-credentials -g $RESOURCE_GROUP_NAME -n $CLUSTER_NAME
    
  2. komutunu kullanarak kümenizdeki tüm sertifikaları, CA'ları ve SA'ları döndürün az aks rotate-certs .

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

    Önemli

    Tamamlanması 30 dakika az aks rotate-certs kadar sürebilir. Tamamlamadan önce komut başarısız olursa, kümenin durumunun Sertifika Döndürme olduğunu doğrulamak için komutunu kullanınaz aks show. Küme başarısız durumdaysa, sertifikalarınızı yeniden döndürmek için yeniden çalıştırın az aks rotate-certs .

  3. Gibi kubectl get nodesherhangi bir kubectl komut kullanarak eski sertifikaların artık geçerli olmadığını doğrulayın.

    kubectl get nodes
    

    tarafından kubectlkullanılan sertifikaları güncelleştirmediyseniz, aşağıdaki örnek çıktıya benzer bir hata görürsünüz:

    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. bayrağıyla komutunu kullanarak az aks get-credentials kullanılan kubectl sertifikayı güncelleştirin--overwrite-existing.

    az aks get-credentials -g $RESOURCE_GROUP_NAME -n $CLUSTER_NAME --overwrite-existing
    
  5. Komutunu kullanarak sertifikaların kubectl get güncelleştirildiğini doğrulayın.

    kubectl get nodes
    

    Not

    AKS üzerinde çalışan herhangi bir hizmetiniz varsa, sertifikalarını güncelleştirmeniz gerekebilir.

Sonraki adımlar

Bu makalede, küme sertifikalarınızı, CA'larınızı ve SA'larınızı otomatik olarak nasıl döndürdüğünüz gösterilir. Daha fazla bilgi için bkz. Azure Kubernetes Service 'de (AKS) küme güvenliği ve yükseltmeleri için en iyi yöntemler.