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?
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.
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.
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
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, gebruiktaz 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 uitaz aks rotate-certs
om uw certificaten opnieuw te draaien.Controleer of de oude certificaten niet meer geldig zijn met behulp van een
kubectl
opdracht, zoalskubectl get nodes
.kubectl get nodes
Als u de certificaten die worden
kubectl
gebruikt 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")
Werk het certificaat bij dat wordt gebruikt met
kubectl
behulp van deaz aks get-credentials
opdracht met de--overwrite-existing
vlag.az aks get-credentials --resource-group $RESOURCE_GROUP_NAME --name $CLUSTER_NAME --overwrite-existing
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.
Azure Kubernetes Service