Rotieren von Zertifikaten in Azure Kubernetes Service (AKS)

Azure Kubernetes Service (AKS) verwendet Zertifikate für die Authentifizierung bei vielen seiner Komponenten. RBAC-fähige Cluster, die nach März 2022 erstellt wurden, werden mit automatischer Zertifikatrotation aktiviert. Es ist ratsam, diese Zertifikate aus Sicherheits- bzw. Richtliniengründen in regelmäßigen Abständen zu rotieren. Beispielsweise kann es eine Richtlinie bei Ihnen geben, dass Sie alle Ihre Zertifikate alle 90 Tage rotieren müssen.

Hinweis

Die automatische Rotation der Zertifikate wird standardmäßig nur für RBAC-aktivierte AKS-Cluster aktiviert.

In diesem Artikel wird gezeigt, wie die Rotation der Zertifikate in Ihrem AKS-Cluster funktioniert.

Voraussetzungen

Für diesen Artikel ist die Azure CLI-Version 2.0.77 oder höher erforderlich. Führen Sie az --version aus, um die Version zu ermitteln. Informationen zum Durchführen einer Installation oder eines Upgrades finden Sie bei Bedarf unter Installieren der Azure CLI.

AKS-Zertifikate, Zertifizierungsstellen und Dienstkonten

AKS generiert und verwendet die folgenden Zertifikate, Zertifizierungsstellen (ZS) und Dienstkonten (SA):

  • Der AKS-API-Server erstellt eine Zertifizierungsstelle, die als Cluster-ZS bezeichnet wird.
  • Der API-Server verfügt über eine Clusterzertifizierungsstelle, die Zertifikate für die unidirektionale Kommunikation vom API-Server zu kubelets signiert.
  • Jedes Kubelet erstellt eine Zertifikatsignierungsanforderung (Certificate Signing Request, CSR), die von der Cluster-ZS signiert wird, für die Kommunikation vom Kubelet zum API-Server.
  • Der API-Aggregator verwendet die Clusterzertifizierungsstelle zum Ausstellen von Zertifikaten für die Kommunikation mit anderen APIs. Der API-Aggregator kann auch über eine eigene Zertifizierungsstelle zum Ausstellen dieser Zertifikate verfügen, aber zurzeit verwendet er die Clusterzertifizierungsstelle.
  • Jeder Knoten verwendet ein SA-Token, das von der Cluster-ZS signiert wird.
  • Der kubectl-Client verfügt über ein Zertifikat für die Kommunikation mit dem AKS-Cluster.

Microsoft verwaltet alle in diesem Abschnitt erwähnten Zertifikate mit Ausnahme des Clusterzertifikats.

Hinweis

  • AKS-Cluster, die vor Mai 2019 erstellt wurden, besitzen Zertifikate, die nach zwei Jahren ablaufen.
  • AKS-Cluster, die nach Mai 2019 erstellt wurden, besitzen Cluster-ZS-Zertifikate, die nach 30 Jahren ablaufen.

Sie können überprüfen, wann Ihr Cluster erstellt wurde, indem Sie den Befehl kubectl get nodes verwenden, der Ihnen das Alter Ihrer Knotenpools anzeigt.

Überprüfen des Ablaufdatums des Zertifikats

Überprüfen des Ablaufdatums des Clusterzertifikats

  • Überprüfen Sie mit dem Befehl kubectl config view das Ablaufdatum des Clusterzertifikats.

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

Überprüfen des Ablaufdatums des API-Serverzertifikats

  • Überprüfen Sie das Ablaufdatum des API-Serverzertifikats mit dem folgenden curl-Befehl.

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

Überprüfen des Ablaufdatums des VMAS-Agent-Knotenzertifikats

  • Überprüfen Sie mit dem Befehl az vm run-command invoke das Ablaufdatum des VMAS-Agent-Knotenzertifikats.

    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"
    

Überprüfen des Ablaufdatums des Agent-Knotenzertifikats der VM-Skalierungsgruppe

  • Überprüfen Sie mithilfe des Befehls az vm run-command invoke das Ablaufdatum des Agent-Knotenzertifikats der VM-Skalierungsgruppe.

    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"
    

Automatische Zertifikatrotation

Damit AKS Zertifikate, die nicht von Zertifizierungsstellen stammen, automatisch rotieren können, muss das Cluster über TLS Bootstrapping verfügen, das standardmäßig in allen Azure-Regionen aktiviert wird.

Hinweis

  • Wenn Sie über ein vorhandenes Cluster verfügen, müssen Sie dieses Cluster aktualisieren, um die automatische Rotation des Zertifikats zu aktivieren.
  • Deaktivieren Sie Bootstrap nicht, damit die automatische Rotation aktiviert bleibt.
  • Wenn das Cluster während der automatischen Zertifikatsrotation den Status „Beendet“ hat, werden nur die Zertifikate der Steuerelementebene rotiert. In diesem Fall sollten Sie den Knotenpool nach der Zertifikatsrotation neu erstellen, um die Zertifikatsrotation des Knotenpools einzuleiten.

Für alle AKS-Cluster, die nach März 2022 mit Azure Kubernetes Service 2 erstellt oder aktualisiert wurden, rotieren automatisch nicht-CA-Zertifikate auf den Steuerelementebenen- und Agent-Knoten innerhalb von 80 % der gültigen Zeit des Clientzertifikats, bevor sie ohne Ausfallzeiten für das Cluster ablaufen.

Wie kann überprüft werden, ob der aktuelle Agent-Knotenpool mit TLS-Bootstrapping aktiviert ist?

  1. Überprüfen Sie, ob für Ihr Cluster TLS-Bootstrapping aktiviert ist, indem Sie zu einem der folgenden Pfade navigieren:

    • Auf einem Linux-Knoten ist dies /var/lib/kubelet/bootstrap-kubeconfig oder /host/var/lib/kubelet/bootstrap-kubeconfig.
    • Auf einem Windows-Knoten: C:\k\bootstrap-config

    Weitere Informationen finden Sie unter Herstellen einer Verbindung mit Azure Kubernetes Service-Clusterknoten zur Wartung oder Problembehandlung.

    Hinweis

    Der Dateipfad kann sich ändern, wenn sich Kubernetes-Versionen weiterentwickeln.

  2. Sobald eine Region konfiguriert ist, erstellen Sie ein neues Cluster oder aktualisieren Sie ein vorhandenes Cluster, um die automatische Rotation für das Clusterzertifikat einzustellen. Sie müssen die Steuerungsebene und den Knotenpool aktualisieren, um dieses Feature zu aktivieren.

Manuelles Rotieren Ihrer Cluster-Zertifikate

Warnung

Beim Rotieren von Zertifikaten mithilfe von az aks rotate-certs werden alle Ihre Knoten und deren Betriebssystemdatenträger neu erstellt, VM-Skalierungsgruppen und ihre Datenträger eingestellt, was dazu führen kann, dass des AKS-Cluster bis zu 30 Minuten ausfällt.

  1. Verbinden Sie sich mit Ihrem Cluster mithilfe des Befehls az aks get-credentials.

    az aks get-credentials -g $RESOURCE_GROUP_NAME -n $CLUSTER_NAME
    
  2. Rotieren Sie alle Zertifikate, ZSs und SAs auf Ihrem Cluster mit dem Befehl az aks rotate-certs.

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

    Wichtig

    Der az aks rotate-certs-Vorgang kann bis zu 30 Minuten dauern. Wenn der Befehl vor dem Abschluss fehlschlägt, überprüfen Sie mithilfe von az aks show, ob der Status des Clusters az aks show lautet. Wenn sich der Cluster in einem fehlerhaften Zustand befindet, führen Sie az aks rotate-certs noch mal aus, um die Zertifikate erneut zu rotieren.

  3. Vergewissern Sie sich, dass die alten Zertifikate nicht mehr gültig sind, indem Sie einen kubectl-Befehl verwenden, z. B kubectl get nodes.

    kubectl get nodes
    

    Wenn Sie die von kubectl verwendeten Zertifikate nicht aktualisiert haben, wird ein Fehler angezeigt, welcher der folgenden Beispielausgabe ähnelt:

    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. Aktualisieren Sie das von kubectl verwendete Zertifikat mithilfe des Befehls az aks get-credentials mit dem Flag --overwrite-existing.

    az aks get-credentials -g $RESOURCE_GROUP_NAME -n $CLUSTER_NAME --overwrite-existing
    
  5. Überprüfen Sie, ob die Zertifikate mit dem Befehl kubectl get aktualisiert wurden.

    kubectl get nodes
    

    Hinweis

    Wenn Sie Dienste haben, die auf AKS basieren, müssen Sie möglicherweise auch ihre Zertifikate aktualisieren.

Nächste Schritte

In diesem Artikel wurde gezeigt, wie Sie die Zertifikate, Zertifizierungsstellen und SAs Ihres Clusters automatisch rotieren. Weitere Informationen finden Sie unter Best Practices für Clustersicherheit und Upgrades in Azure Kubernetes Service (AKS).