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?
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 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.
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
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, gebruiktaz 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 uitaz aks rotate-certs
om uw certificaten opnieuw te roteren.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 door worden gebruikt
kubectl
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
kubectl
met behulp van deaz aks get-credentials
opdracht met de--overwrite-existing
vlag.az aks get-credentials -g $RESOURCE_GROUP_NAME -n $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 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.