Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
In dit artikel wordt uitgelegd hoe u certificaten in Azure Kubernetes Service (AKS) clusters beheert en roteert om veilige communicatie tussen onderdelen te behouden en naleving te garanderen.
Prerequisites
- Azure CLI versie 2.0.77 of hoger. Controleer uw versie met behulp van de
az --versionopdracht. Voor het installeren of upgraden, zie Azure CLI installeren.
De vervaldatum van het certificaat van de clustercertificeringsinstantie (CA) controleren
Controleer de vervaldatum van het ca-certificaat van het cluster 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 vmSS-agentknooppuntcertificaat controleren
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 <node-resource-group> \
--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"
Vervaldatum van zelfstandig VM-certificaat controleren
Controleer de vervaldatum van een zelfstandige VM met behulp van de az vm run-command invoke opdracht.
az vm run-command invoke \
--resource-group <resource-group> \
--name <vm-name> \
--command-id RunShellScript \
--scripts "openssl x509 -in /var/lib/kubelet/pki/kubelet-client-current.pem -noout -enddate" \
--query "value[0].message"
Cluster-CA-certificaten handmatig roteren
Wanneer u het CA-certificaat van het cluster roteert, worden ook de volgende onderliggende certificaten vernieuwd:
- Tokens voor serviceaccounts (SA)
- API-servercertificaten
- Kubelet-clientcertificaten
- Servercertificaten van Kubelet (als certificaatrotatie voor Kubelet-servercertificaten is ingeschakeld op het cluster)
Warning
Als u uw certificaten vernieuwt met az aks rotate-certs, worden al uw knooppunten, schaalsets voor virtuele machines en schijven opnieuw gemaakt. Dit proces kan tot 30 minuten downtime veroorzaken voor uw AKS-cluster. Als de opdracht mislukt voordat deze is voltooid, gebruikt u de opdracht az aks show om te controleren of de clusterstatus Certificate Rotating aangeeft. Als het cluster zich in een mislukte staat bevindt, voert u az aks rotate-certs opnieuw uit om uw certificaten te vernieuwen.
Maak verbinding met uw cluster met behulp van de
az aks get-credentialsopdracht.az aks get-credentials --resource-group <resource-group> --name <cluster-name>Roteren alle certificaten, CA's en SA's in uw cluster met behulp van de
az aks rotate-certsopdracht.az aks rotate-certs --resource-group <resource-group> --name <cluster-name>Controleer of de oude certificaten niet meer geldig zijn met behulp van een
kubectlopdracht, zoalskubectl get nodes.kubectl get nodesAls u de gebruikte certificaten van
kubectlniet hebt bijgewerkt, ziet u een fout zoals in 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")
Clientcertificaten bijwerken kubectl
Werk het
kubectlclientcertificaat bij met behulp van deaz aks get-credentialsopdracht met de--overwrite-existingvlag.az aks get-credentials --resource-group <resource-group> --name <cluster-name> --overwrite-existingControleer of de certificaten zijn bijgewerkt met behulp van de
kubectl getopdracht.kubectl get nodesNote
Als u services hebt die boven op AKS worden uitgevoerd, moet u mogelijk hun certificaten bijwerken.
Controleren of kubelet-certificaatrotatie is ingeschakeld
Elk knooppunt waarvoor de functie is ingeschakeld, krijgt automatisch het label kubernetes.azure.com/kubelet-serving-ca=cluster. Controleer of de labels zijn ingesteld met behulp van de kubectl get nodes -L kubernetes.azure.com/kubelet-serving-ca opdracht.
kubectl get nodes -L kubernetes.azure.com/kubelet-serving-ca
Controleren of kubelet het TLS-opstartstrappingsproces doorloopt
Wanneer u deze functie inschakelt, doorloopt elke kubelet die op uw knooppunten wordt uitgevoerd het serving TLS-bootstrapproces.
Controleer of het opstartproces plaatsvindt met behulp van de kubectl get opdracht om de huidige CSR-objecten in uw cluster op te halen.
kubectl get csr --field-selector=spec.signerName=kubernetes.io/kubelet-serving
Alle actieve CSR's bevinden zich in de Approved,Issued-status, wat aangeeft dat de CSR is goedgekeurd en dat er een ondertekend certificaat is uitgegeven. De dienende CSRs hebben een ondertekenaarsnaam van kubernetes.io/kubelet-serving. Voorbeeld:
NAME AGE SIGNERNAME REQUESTOR REQUESTEDDURATION CONDITION
csr-1ab2c 113s kubernetes.io/kube-apiserver-client-kubelet system:bootstrap:abcd1e none Approved,Issued
csr-defgh 111s kubernetes.io/kubelet-serving system:node:akswinp1000000 none Approved,Issued
csr-ij3kl 46m kubernetes.io/kubelet-serving system:node:akswinp2000000 none Approved,Issued
csr-mn4op 46m kubernetes.io/kube-apiserver-client-kubelet system:bootstrap:ab1cde none Approved,Issued
Controleer of kubelet gebruikmaakt van een certificaat dat is verkregen van tls-bootstrapping van de server
Controleer of de kubelet van het knooppunt gebruikmaakt van een servicecertificaat dat is ondertekend door de cluster-CA met behulp van de opdracht [kubectl debug][kubectl-debug] om de inhoud van de PKI-map van de kubelet te onderzoeken.
kubectl debug node/<node> -ti --image=mcr.microsoft.com/azurelinux/base/core:3.0 -- ls -l /host/var/lib/kubelet/kubelet-server-current.pem
Als er een kubelet-server-current.pem symlink bestaat, initialiseert de kubelet zijn eigen servercertificaat en rouleert dit via het TLS-bootstrapproces; dit certificaat wordt ondertekend door de cluster-CA.
Kubelet-certificaatrotatie uitschakelen
Schakel kubelet-certificaatrotatie uit door de knooppuntgroep bij te werken met behulp van de
az aks nodepool updateopdracht en geef de tagaks-disable-kubelet-serving-certificate-rotation=trueop.az aks nodepool update \ --cluster-name <cluster-name> \ --resource-group <resource-group> \ --name <node-pool-name> \ --tags aks-disable-kubelet-serving-certificate-rotation=trueStel uw knooppunten opnieuw in met behulp van een upgrade van een knooppuntinstallatiekopie of door de pool te schalen naar nul exemplaren en vervolgens een back-up te maken van de gewenste waarde.
Verwante onderwerpen
Zie de volgende artikelen voor meer informatie over AKS-beveiliging: