Certifikatrotation i Azure Kubernetes Service (AKS)
Azure Kubernetes Service (AKS) använder certifikat för autentisering med många av dess komponenter. RBAC-aktiverade kluster som skapats efter mars 2022 aktiveras med automatisk rotation av certifikat. Du kan behöva rotera certifikaten regelbundet av säkerhets- eller principskäl. Du kan till exempel ha en princip för att rotera alla dina certifikat var 90:e dag.
Anteckning
Automatisk rotation av certifikat är endast aktiverat som standard för RBAC-aktiverade AKS-kluster.
Den här artikeln visar hur certifikatrotation fungerar i AKS-klustret.
Innan du börjar
Den här artikeln kräver Azure CLI version 2.0.77 eller senare. Kör az --version
för att hitta versionen. Om du behöver installera eller uppgradera kan du läsa Installera Azure CLI.
AKS-certifikat, certifikatutfärdare och tjänstkonton
AKS genererar och använder följande certifikat, certifikatutfärdare (CA) och tjänstkonton (SA):
- AKS API-servern skapar en ca som kallas kluster-CA:n.
- API-servern har en kluster-CA som signerar certifikat för enkelriktad kommunikation från API-servern till kubelets.
- Varje kubelet skapar en begäran om certifikatsignering (CSR), som klustercertifikatutfärdaren signerar, för kommunikation från kubelet till API-servern.
- API-aggregatorn använder klustercertifikatutfärdaren för att utfärda certifikat för kommunikation med andra API:er. API-aggregatorn kan också ha en egen certifikatutfärdare för att utfärda dessa certifikat, men den använder för närvarande klustercertifikatutfärdaren.
- Varje nod använder en SA-token som kluster-CA:en signerar.
- Klienten
kubectl
har ett certifikat för kommunikation med AKS-klustret.
Microsoft underhåller alla certifikat som nämns i det här avsnittet, förutom klustercertifikatet.
Anteckning
- AKS-kluster som skapades före maj 2019 har certifikat som upphör att gälla efter två år.
- AKS-kluster som skapats efter maj 2019 har klustercertifikatutfärdarcertifikat som upphör att gälla efter 30 år.
Du kan kontrollera när klustret skapades med kommandot kubectl get nodes
som visar ålder för dina nodpooler.
Kontrollera certifikatets förfallodatum
Kontrollera förfallodatum för klustercertifikat
Kontrollera förfallodatumet för klustercertifikatet med kommandot
kubectl config view
.kubectl config view --raw -o jsonpath="{.clusters[?(@.name == '')].cluster.certificate-authority-data}" | base64 -d | openssl x509 -text | grep -A2 Validity
Kontrollera förfallodatum för API-servercertifikat
Kontrollera förfallodatumet för API-servercertifikatet med hjälp av följande
curl
kommando.curl https://{apiserver-fqdn} -k -v 2>&1 | grep expire
Kontrollera förfallodatum för VMAS-agentnodcertifikat
Kontrollera förfallodatumet för VMAS-agentnodcertifikatet med kommandot
az vm run-command invoke
.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"
Kontrollera förfallodatum för agentnodcertifikat för vm-skalningsuppsättning
Kontrollera förfallodatumet för vm-skalningsuppsättningens agentnodcertifikat med kommandot
az vm run-command invoke
.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"
Automatisk rotation av certifikat
För att AKS ska kunna rotera icke-CA-certifikat automatiskt måste klustret ha TLS Bootstrapping, vilket är aktiverat som standard i alla Azure-regioner.
Anteckning
- Om du har ett befintligt kluster måste du uppgradera klustret för att aktivera automatisk rotation av certifikat.
- Inaktivera inte Bootstrap för att aktivera automatisk rotation.
- Om klustret är i ett stoppat tillstånd under den automatiska certifikatrotationen roteras endast kontrollplanscertifikaten. I det här fallet bör du återskapa nodpoolen efter certifikatrotationen för att starta roteringen av nodpoolens certifikat.
För aks-kluster som skapats eller uppgraderats efter mars 2022 roterar Azure Kubernetes Service automatiskt icke-CA-certifikat på både kontrollplanet och agentnoderna inom 80 % av klientcertifikatets giltiga tid innan de upphör att gälla utan avbrottstid för klustret.
Så här kontrollerar du om den aktuella agentnodpoolen är TLS Bootstrapping aktiverad?
Kontrollera om TLS Bootstrapping är aktiverat i klustret genom att bläddra till en av följande sökvägar:
- På en Linux-nod: /var/lib/kubelet/bootstrap-kubeconfig eller /host/var/lib/kubelet/bootstrap-kubeconfig
- På en Windows-nod: C:\k\bootstrap-config
Mer information finns i Ansluta till Azure Kubernetes Service klusternoder för underhåll eller felsökning.
Anteckning
Filsökvägen kan ändras allt eftersom Kubernetes-versioner utvecklas.
När en region har konfigurerats skapar du ett nytt kluster eller uppgraderar ett befintligt kluster för att ange automatisk rotation för klustercertifikatet. Du måste uppgradera kontrollplanet och nodpoolen för att aktivera den här funktionen.
Rotera klustercertifikaten manuellt
Varning
Om du roterar dina certifikat med hjälp az aks rotate-certs
av återskapas alla noder, Virtual Machine Scale Sets och diskar och kan orsaka upp till 30 minuters stilleståndstid för AKS-klustret.
Anslut till klustret med
az aks get-credentials
kommandot .az aks get-credentials --resource-group $RESOURCE_GROUP_NAME --name $CLUSTER_NAME
Rotera alla certifikat, certifikatutfärdare och SA:er i klustret med kommandot
az aks rotate-certs
.az aks rotate-certs --resource-group $RESOURCE_GROUP_NAME --name $CLUSTER_NAME
Viktigt
Det kan ta upp till 30 minuter att
az aks rotate-certs
slutföra. Om kommandot misslyckas innan du slutför det kan du användaaz aks show
för att kontrollera att klustrets status är Certifikatrotering. Om klustret är i ett feltillstånd köraz aks rotate-certs
du igen för att rotera certifikaten igen.Kontrollera att de gamla certifikaten inte längre är giltiga med något
kubectl
kommando, till exempelkubectl get nodes
.kubectl get nodes
Om du inte har uppdaterat de certifikat som används av
kubectl
visas ett fel som liknar följande exempelutdata: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")
Uppdatera certifikatet som används
kubectl
med kommandotaz aks get-credentials
med--overwrite-existing
flaggan .az aks get-credentials --resource-group $RESOURCE_GROUP_NAME --name $CLUSTER_NAME --overwrite-existing
Kontrollera att certifikaten har uppdaterats med kommandot
kubectl get
.kubectl get nodes
Anteckning
Om du har tjänster som körs ovanpå AKS kan du behöva uppdatera deras certifikat.
Nästa steg
Den här artikeln visar hur du automatiskt roterar klustercertifikat, certifikatutfärdare och certifikatutfärdare. Mer information finns i Metodtips för klustersäkerhet och uppgraderingar i Azure Kubernetes Service (AKS).
Azure Kubernetes Service
Feedback
https://aka.ms/ContentUserFeedback.
Kommer snart: Under hela 2024 kommer vi att fasa ut GitHub-problem som feedbackmekanism för innehåll och ersätta det med ett nytt feedbacksystem. Mer information finns i:Skicka och visa feedback för