Certificaatrotatie in Azure Kubernetes Service (AKS)

Azure Kubernetes Service (AKS) gebruikt certificaten voor verificatie met veel onderdelen. Clusters met RBAC die na maart 2022 zijn gemaakt, worden ingeschakeld met automatische rotatie van certificaten. Mogelijk moet u deze certificaten regelmatig roteren om beveiligings- of beleidsredenen. U hebt bijvoorbeeld een beleid om al uw certificaten elke 90 dagen te roteren.

Notitie

Automatische rotatie van certificaten is standaard alleen ingeschakeld voor AKS-clusters met RBAC.

In dit artikel wordt beschreven hoe certificaatrotatie werkt in uw AKS-cluster.

Voordat u begint

Voor dit artikel is Azure CLI versie 2.0.77 of hoger vereist. Voer az --version uit om de versie te bekijken. Zie Azure CLI installeren als u de CLI wilt installeren of een upgrade wilt uitvoeren.

AKS-certificaten, certificeringsinstanties en serviceaccounts

AKS genereert en gebruikt de volgende certificaten, certificeringsinstanties (CA) en serviceaccounts (SA):

  • De AKS API-server maakt een CA met de naam cluster-CA.
  • De API-server heeft een cluster-CA, die certificaten ondertekent voor eenrichtingscommunicatie van de API-server naar kubelets.
  • Elke kubelet maakt een aanvraag voor certificaatondertekening (CSR), die door de cluster-CA wordt ondertekend, voor communicatie van de kubelet naar de API-server.
  • De API-aggregator gebruikt de cluster-CA om certificaten uit te geven voor communicatie met andere API's. De API-aggregator kan ook een eigen CA hebben voor het uitgeven van deze certificaten, maar momenteel wordt de cluster-CA gebruikt.
  • Elk knooppunt gebruikt een SA-token, dat de cluster-CA ondertekent.
  • De kubectl client heeft een certificaat voor communicatie met het AKS-cluster.

Microsoft onderhoudt alle certificaten die in deze sectie worden vermeld, met uitzondering van het clustercertificaat.

Notitie

  • AKS-clusters die vóór mei 2019 zijn gemaakt , hebben certificaten die na twee jaar verlopen.
  • AKS-clusters die na mei 2019 zijn gemaakt , hebben cluster-CA-certificaten die na 30 jaar verlopen.

U kunt controleren wanneer uw cluster is gemaakt met behulp van de kubectl get nodes opdracht, die de leeftijd van uw knooppuntgroepen weergeeft.

Vervaldatums van certificaten controleren

Vervaldatum van clustercertificaat controleren

  • Controleer de vervaldatum van het clustercertificaat met behulp van de kubectl config view opdracht .

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

Vervaldatum van API-servercertificaat controleren

  • Controleer de vervaldatum van het API-servercertificaat met behulp van de volgende curl opdracht.

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

Vervaldatum van VMAS-agentknooppuntcertificaat controleren

  • Controleer de vervaldatum van het VMAS-agentknooppuntcertificaat met behulp van de az vm run-command invoke opdracht .

    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"
    

Controleer de vervaldatum van het certificaat van het knooppunt van de virtuele-machineschaalsetagent

  • Controleer de vervaldatum van het knooppuntcertificaat van de virtuele-machineschaalsetagent met behulp van de az vm run-command invoke opdracht .

    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 rotatie van certificaat

Als u wilt dat AKS niet-CA-certificaten automatisch roteert, moet het cluster TLS-bootstrapping hebben. Deze functie is standaard ingeschakeld in alle Azure-regio's.

Notitie

  • Als u een bestaand cluster hebt, moet u dat cluster upgraden om automatische rotatie van certificaten in te schakelen.
  • Schakel Bootstrap niet uit om automatisch draaien ingeschakeld te houden.
  • Als het cluster een gestopte status heeft tijdens de automatische certificaatrotatie, worden alleen de certificaten van het besturingsvlak geroteerd. In dit geval moet u de knooppuntgroep opnieuw maken na het roteren van het certificaat om de certificaatrotatie van de knooppuntgroep te initiëren.

Voor AKS-clusters die zijn gemaakt of bijgewerkt na maart 2022, roteert Azure Kubernetes Service niet-CA-certificaten automatisch op zowel het besturingsvlak als de agentknooppunten binnen 80% van de geldige tijd van het clientcertificaat voordat ze verlopen zonder downtime voor het cluster.

Hoe controleert u of de huidige agentknooppuntgroep TLS Bootstrapping is ingeschakeld?

  1. Controleer of TLS-bootstrapping is ingeschakeld voor uw cluster door naar een van de volgende paden te bladeren:

    • Op een Linux-knooppunt: /var/lib/kubelet/bootstrap-kubeconfig of /host/var/lib/kubelet/bootstrap-kubeconfig
    • Op een Windows-knooppunt: C:\k\bootstrap-config

    Zie Verbinding maken met Azure Kubernetes Service clusterknooppunten voor onderhoud of probleemoplossing voor meer informatie.

    Notitie

    Het bestandspad kan veranderen naarmate Kubernetes-versies zich ontwikkelen.

  2. Zodra een regio is geconfigureerd, maakt u een nieuw cluster of werkt u een bestaand cluster bij om automatische rotatie in te stellen voor het clustercertificaat. U moet het besturingsvlak en de knooppuntgroep upgraden om deze functie in te schakelen.

Uw clustercertificaten handmatig roteren

Waarschuwing

Als u uw certificaten roteert met behulp az aks rotate-certs van, worden alle knooppunten, Virtual Machine Scale Sets en schijven, opnieuw gemaakt en kan dit tot 30 minuten downtime voor uw AKS-cluster veroorzaken.

  1. Maak verbinding met uw cluster met behulp van de az aks get-credentials opdracht .

    az aks get-credentials -g $RESOURCE_GROUP_NAME -n $CLUSTER_NAME
    
  2. Draai alle certificaten, CA's en SLA's in uw cluster met behulp van de az aks rotate-certs opdracht .

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

    Belangrijk

    Het kan tot 30 minuten duren voordat az aks rotate-certs het is voltooid. Als de opdracht mislukt voordat het wordt voltooid, gebruikt az aks show u om te controleren of de status van het cluster Certificaat roteren is. Als het cluster de status Mislukt heeft, voert u opnieuw uit az aks rotate-certs om uw certificaten opnieuw te roteren.

  3. Controleer of de oude certificaten niet meer geldig zijn met behulp van een kubectl opdracht, zoals kubectl get nodes.

    kubectl get nodes
    

    Als u de certificaten die door worden gebruikt kubectlniet hebt bijgewerkt, ziet u een fout die vergelijkbaar is met de volgende voorbeelduitvoer:

    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. Werk het certificaat bij dat wordt gebruikt kubectl met behulp van de az aks get-credentials opdracht met de --overwrite-existing vlag.

    az aks get-credentials -g $RESOURCE_GROUP_NAME -n $CLUSTER_NAME --overwrite-existing
    
  5. Controleer of de certificaten zijn bijgewerkt met behulp van de kubectl get opdracht .

    kubectl get nodes
    

    Notitie

    Als u services hebt die op AKS worden uitgevoerd, moet u mogelijk hun certificaten bijwerken.

Volgende stappen

In dit artikel hebt u uitgelegd hoe u uw clustercertificaten, CA's en SLA's automatisch kunt roteren. Zie Best practices voor clusterbeveiliging en -upgrades in Azure Kubernetes Service (AKS) voor meer informatie.