Delen via


Certificaatrotatie in Azure Kubernetes Service (AKS)

Azure Kubernetes Service (AKS) gebruikt certificaten voor verificatie met veel van de onderdelen. Clusters met op rollen gebaseerd toegangsbeheer van Azure (Azure 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-functionaliteit.

In dit artikel leest u 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. Als u Azure CLI 2.0 wilt installeren of upgraden, raadpleegt u Azure CLI 2.0 installeren.

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 de cluster-CA ondertekent 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 maakt gebruik van een SA-token, dat door de cluster-CA wordt ondertekend.
  • De kubectl client heeft een certificaat voor communicatie met het AKS-cluster.

Microsoft onderhoudt alle certificaten die in deze sectie worden genoemd, 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, waarin u de leeftijd van uw knooppuntgroepen ziet.

Vervaldatums van certificaat 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 certificaat van het VMAS-agentknooppunt met behulp van de az vm run-command invoke opdracht.

    az vm run-command invoke --resource-group MC_rg_myAKSCluster_region --name vm-name --command-id RunShellScript --query 'value[0].message' -otsv --scripts "openssl x509 -in /etc/kubernetes/certs/apiserver.crt -noout -enddate"
    

Controleren of het certificaat verloopt voor het knooppunt van de virtuele-machineschaalsetagent

  • Controleer de vervaldatum van het knooppuntcertificaat van de virtuele-machineschaalset met behulp van de az vmss 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  /var/lib/kubelet/pki/kubelet-client-current.pem -noout -enddate" --query "value[0].message"
    

Automatische rotatie van certificaat

Als AKS niet-CA-certificaten automatisch wilt roteren, moet het cluster TLS Bootstrapping hebben. Dit 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 automatische rotatie ingeschakeld te houden.
  • Als het cluster de status Gestopt heeft tijdens de automatische certificaatrotatie, worden alleen de certificaten van het besturingsvlak gedraaid. In dit geval moet u de knooppuntgroep opnieuw maken na certificaatrotatie om de certificaatrotatie van de knooppuntgroep te initiëren.

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

Controleren 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 automatisch rouleren voor het clustercertificaat in te stellen. 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 het opnieuw maken van al uw knooppunten, virtuele-machineschaalsets en schijven, kan dit tot 30 minuten downtime veroorzaken voor uw AKS-cluster.

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

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

    az aks rotate-certs --resource-group $RESOURCE_GROUP_NAME --name $CLUSTER_NAME
    

    Belangrijk

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

  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 worden kubectlgebruikt niet 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 met kubectl behulp van de az aks get-credentials opdracht met de --overwrite-existing vlag.

    az aks get-credentials --resource-group $RESOURCE_GROUP_NAME --name $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 boven op AKS worden uitgevoerd, moet u mogelijk hun certificaten bijwerken.

Volgende stappen

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