Certificaten roteren in Azure Kubernetes Service (AKS)
Azure Kubernetes Service (AKS) gebruikt certificaten voor verificatie met veel van de onderdelen. Om beveiligings- of beleidsredenen moet u deze certificaten mogelijk periodiek roteren. U kunt bijvoorbeeld een beleid hebben om al uw certificaten elke 90 dagen te roteren.
In dit artikel wordt beschreven hoe u de certificaten in uw AKS-cluster roteert.
Voordat u begint
Voor dit artikel moet u Azure CLI versie 2.0.77 of hoger uitvoeren. 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 en serviceaccounts:
- De AKS API-server maakt een certificeringsinstantie (CA) met de naam cluster-CA.
- De API-server heeft een cluster-CA, die certificaten ondertekent voor een een way communication van de API-server naar kubelets.
- Elke kubelet maakt ook een Certificate Signing Request (CSR), die is ondertekend door de cluster-CA, 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 gebruikt momenteel de cluster-CA.
- Elk knooppunt maakt gebruik van een SA-token (Service Account), dat is ondertekend door de cluster-CA.
- De
kubectlclient heeft een certificaat voor communicatie met het AKS-cluster.
Notitie
AKS-clusters die vóór mei 2019 zijn gemaakt, hebben certificaten die na twee jaar verlopen. Elk cluster dat is gemaakt na mei 2019 of een cluster dat de certificaten roteert, heeft CA-clustercertificaten die na 30 jaar verlopen. Alle andere AKS-certificaten, die gebruikmaken van de cluster-CA voor voor ondertekening, verlopen na twee jaar en worden automatisch geroteerd tijdens de upgrade van de AKS-versie. Als u wilt controleren wanneer uw cluster is gemaakt, gebruikt kubectl get nodes u om de leeftijd van uw knooppuntgroepen te bekijken.
Daarnaast kunt u de vervaldatum van het certificaat van uw cluster controleren. Met de volgende bash-opdracht worden bijvoorbeeld de details van het clientcertificaat weergegeven voor het cluster myAKSCluster in resourcegroep rg
kubectl config view --raw -o jsonpath="{.users[?(@.name == 'clusterUser_rg_myAKSCluster')].user.client-certificate-data}" | base64 -d | openssl x509 -text | grep -A2 Validity
- Vervaldatum van apiserver-certificaat controleren
curl https://{apiserver-fqdn} -k -v 2>&1 |grep expire
- Vervaldatum van certificaat op VMAS-agent-knooppunt controleren
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"
- Vervaldatum van certificaat op één VMSS-agent-knooppunt controleren
az vmss run-command invoke -g MC_rg_myAKSCluster_region -n vmss-name --instance-id 0 --command-id RunShellScript --query 'value[0].message' -otsv --scripts "openssl x509 -in /etc/kubernetes/certs/apiserver.crt -noout -enddate"
Automatische rotatie van certificaten
Azure Kubernetes Service roteert automatisch niet-CA-certificaten op zowel de besturingsvlak- als agentknooppunten voordat ze verlopen zonder uitvaltijd voor het cluster.
AKS kan alleen automatisch niet-CA-certificaten roteren als het cluster TLS Bootstrapping heeft. TLS Bootstrapping is momenteel beschikbaar in de volgende regio's:
- eastus2euap
- centraluseuap
- US - west-centraal
- uksouth
- eastus
- australiacentral
- australiaest
Controleren of TLS Bootstrapping is ingeschakeld voor de huidige agent-knooppuntgroep
Als u wilt controleren of TLS Bootstrapping is ingeschakeld op uw cluster, bladert u naar de volgende paden. Op een Linux-knooppunt: /var/lib/kubelet/bootstrap-kubeconfig op een Windows-knooppunt is dat c:\k\bootstrap-config.
[Opmerking] Het bestandspad kan veranderen naarmate de k8s-versie zich in de toekomst verder ontwikkelt.
Belangrijk
Zodra een regio is geconfigureerd, maakt u een nieuw cluster of upgradet u 'az aks upgrade -g $RESOURCE_GROUP_NAME -n $CLUSTER_NAME' een bestaand cluster om dat cluster in te stellen voor automatische certificaatrotatie.
Beperking
Automatische certificaatrotatie wordt niet ingeschakeld op een niet-rbac-cluster.
Uw clustercertificaten roteren
Waarschuwing
Als u uw certificaten roteert met , worden al uw knooppunten en de besturingssysteemschijven opnieuw gemaakt. Dit kan tot 30 minuten downtime voor az aks rotate-certs uw AKS-cluster veroorzaken.
Gebruik az aks get-credentials om u aan te melden bij uw AKS-cluster. Met deze opdracht wordt ook het clientcertificaat op kubectl uw lokale computer gedownload en geconfigureerd.
az aks get-credentials -g $RESOURCE_GROUP_NAME -n $CLUSTER_NAME
Gebruik az aks rotate-certs om alle certificaten, CERTIFICERINGscertificaten en SAs in uw cluster te roteren.
az aks rotate-certs -g $RESOURCE_GROUP_NAME -n $CLUSTER_NAME
Belangrijk
Het kan tot 30 minuten duren voordat az aks rotate-certs dit is voltooid. Als de opdracht mislukt voordat u deze voltooit, gebruikt u az aks show om te controleren of de status van het cluster Certificaat roteren is. Als het cluster de status Mislukt heeft, moet u opnieuw proberen az aks rotate-certs om uw certificaten opnieuw te roteren.
Controleer of de oude certificaten niet meer geldig zijn door een opdracht uit te kubectl voeren. Omdat u de certificaten die worden gebruikt door niet hebt kubectl bijgewerkt, wordt er een foutbericht weergegeven. Bijvoorbeeld:
$ kubectl get no
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")
Werk het certificaat bij dat wordt gebruikt kubectl door uit te az aks get-credentials laten.
az aks get-credentials -g $RESOURCE_GROUP_NAME -n $CLUSTER_NAME --overwrite-existing
Controleer of de certificaten zijn bijgewerkt door een opdracht uit kubectl te voeren, die nu slaagt. Bijvoorbeeld:
kubectl get no
Notitie
Als u services hebt die boven op AKS worden uitgevoerd, moet u mogelijk ook certificaten bijwerken die betrekking hebben op deze services.
Volgende stappen
In dit artikel hebt u kunnen lezen hoe u de certificaten, CERTIFICERINGscertificaten en SA's van uw cluster automatisch kunt roteren. Zie Best practices for cluster security and upgrades in Azure Kubernetes Service (AKS) (Best practices voor AKS-beveiliging) voor meer informatie.