Obměně certifikátů v Azure Kubernetes Service (AKS)
Azure Kubernetes Service (AKS) používá certifikáty k ověřování u mnoha svých součástí. Clustery s podporou RBAC vytvořené po březnu 2022 mají povolenou automatickou obměnu certifikátů. Možná budete muset tyto certifikáty pravidelně obměňovat z důvodů zabezpečení nebo zásad. Můžete mít například zásadu pro obměně všech certifikátů každých 90 dní.
Poznámka
Automatická obměně certifikátů je ve výchozím nastavení povolená jenom pro clustery AKS s podporou RBAC.
V tomto článku se dozvíte, jak ve vašem clusteru AKS funguje obměně certifikátů.
Než začnete
Tento článek vyžaduje Azure CLI verze 2.0.77 nebo novější. Verzi zjistíte spuštěním příkazu az --version
. Pokud potřebujete instalaci nebo upgrade, přečtěte si téma Instalace Azure CLI.
Certifikáty AKS, certifikační autority a účty služeb
AKS generuje a používá následující certifikáty, certifikační autority (CA) a účty služeb (SA):
- Server rozhraní API AKS vytvoří certifikační autoritu s názvem CA clusteru.
- Server rozhraní API má certifikační autoritu clusteru, která podepisuje certifikáty pro jednosměrnou komunikaci ze serveru rozhraní API do kubeletů.
- Každý kubelet vytvoří žádost o podepsání certifikátu (CSR), kterou podepíše certifikační autorita clusteru pro komunikaci z kubeletu na server rozhraní API.
- Agregátor rozhraní API používá certifikační autoritu clusteru k vydávání certifikátů pro komunikaci s jinými rozhraními API. Agregátor rozhraní API může mít také vlastní certifikační autoritu pro vystavování těchto certifikátů, ale v současné době používá certifikační autoritu clusteru.
- Každý uzel používá token SA, který podepisuje certifikační autorita clusteru.
- Klient
kubectl
má certifikát pro komunikaci s clusterem AKS.
Microsoft udržuje všechny certifikáty uvedené v této části s výjimkou certifikátu clusteru.
Poznámka
- Clustery AKS vytvořené před květnem 2019 mají certifikáty, jejichž platnost vyprší po dvou letech.
- Clustery AKS vytvořené po květnu 2019 mají certifikáty ca clusteru, jejichž platnost po 30 letech vyprší.
Pomocí příkazu , který ukazuje stáří fondů uzlů, můžete ověřit, kdy byl cluster vytvořenkubectl get nodes
.
Kontrola dat vypršení platnosti certifikátu
Kontrola data vypršení platnosti certifikátu clusteru
Zkontrolujte datum vypršení platnosti certifikátu clusteru
kubectl config view
pomocí příkazu .kubectl config view --raw -o jsonpath="{.clusters[?(@.name == '')].cluster.certificate-authority-data}" | base64 -d | openssl x509 -text | grep -A2 Validity
Kontrola data vypršení platnosti certifikátu serveru rozhraní API
Pomocí následujícího
curl
příkazu zkontrolujte datum vypršení platnosti certifikátu serveru rozhraní API.curl https://{apiserver-fqdn} -k -v 2>&1 | grep expire
Kontrola data vypršení platnosti certifikátu uzlu agenta VMAS
Zkontrolujte datum vypršení platnosti certifikátu uzlu agenta VMAS pomocí
az vm run-command invoke
příkazu .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"
Kontrola data vypršení platnosti certifikátu uzlu agenta škálovací sady virtuálních počítačů
Zkontrolujte datum vypršení platnosti certifikátu uzlu agenta škálovací sady virtuálních
az vm run-command invoke
počítačů pomocí příkazu .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"
Automatická obměně certifikátu
Aby služba AKS automaticky obměněla certifikáty jiné než certifikační autority, musí mít cluster zaváděcí protokol TLS, který je ve výchozím nastavení ve všech oblastech Azure povolený.
Poznámka
- Pokud máte existující cluster, musíte ho upgradovat, aby se povolila automatická obměně certifikátů.
- Nezakazujte bootstrap, aby byla povolená automatická rotace.
- Pokud je cluster během automatické obměně certifikátů v zastaveném stavu, obměňují se pouze certifikáty řídicí roviny. V takovém případě byste měli fond uzlů po obměně certifikátů znovu vytvořit, abyste zahájili obměnu certifikátů fondu uzlů.
U všech clusterů AKS vytvořených nebo upgradovaných po březnu 2022 Azure Kubernetes Service automaticky obměňuje certifikáty bez certifikační autority na uzlech řídicí roviny i agenta během 80 % doby platnosti klientského certifikátu před vypršením jejich platnosti bez výpadků clusteru.
Jak zkontrolovat, jestli je ve fondu uzlů aktuálního agenta povolené spouštění tls?
Přejděte na jednu z následujících cest a ověřte, jestli má váš cluster povolené spouštění tls:
- Na uzlu s Linuxem: /var/lib/kubelet/bootstrap-kubeconfig nebo /host/var/lib/kubelet/bootstrap-kubeconfig
- Na uzlu Windows: C:\k\bootstrap-config
Další informace najdete v tématu Připojení k uzlům clusteru Azure Kubernetes Service za účelem údržby nebo řešení potíží.
Poznámka
Cesta k souboru se může měnit s tím, jak se vyvíjejí verze Kubernetes.
Po nakonfigurování oblasti vytvořte nový cluster nebo upgradujte existující cluster a nastavte pro certifikát clusteru automatickou obměnu. Abyste tuto funkci povolili, musíte upgradovat řídicí rovinu a fond uzlů.
Ruční obměna certifikátů clusteru
Upozornění
Obměně certifikátů pomocí nástroje az aks rotate-certs
znovu vytvoří všechny uzly, Virtual Machine Scale Sets a disky a může způsobit až 30minutový výpadek clusteru AKS.
Připojte se ke clusteru
az aks get-credentials
pomocí příkazu .az aks get-credentials --resource-group $RESOURCE_GROUP_NAME --name $CLUSTER_NAME
Pomocí příkazu obměňte všechny certifikáty, certifikační autority a certifikáty SA v clusteru
az aks rotate-certs
.az aks rotate-certs --resource-group $RESOURCE_GROUP_NAME --name $CLUSTER_NAME
Důležité
Dokončení může trvat až 30 minut
az aks rotate-certs
. Pokud se příkaz před dokončením nezdaří, pomocí příkazuaz aks show
ověřte, že stav clusteru je Rotace certifikátu. Pokud je cluster ve stavu selhání, znovu spusťteaz aks rotate-certs
a znovu obměňte certifikáty.Pomocí libovolného
kubectl
příkazu, napříkladkubectl get nodes
, ověřte, že staré certifikáty už nejsou platné.kubectl get nodes
Pokud jste neaktualizovali certifikáty používané nástrojem
kubectl
, zobrazí se chyba podobná následujícímu příkladu výstupu: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")
Aktualizujte certifikát použitý příkazem
kubectl
az aks get-credentials
s příznakem--overwrite-existing
.az aks get-credentials --resource-group $RESOURCE_GROUP_NAME --name $CLUSTER_NAME --overwrite-existing
Pomocí příkazu ověřte, že se certifikáty aktualizovaly
kubectl get
.kubectl get nodes
Poznámka
Pokud máte nějaké služby, které běží v AKS, možná budete muset aktualizovat jejich certifikáty.
Další kroky
V tomto článku se dozvíte, jak automaticky obměňovat certifikáty clusteru, certifikační autority a certifikační autority. Další informace najdete v tématu Osvědčené postupy pro zabezpečení a upgrady clusterů v Azure Kubernetes Service (AKS).
Azure Kubernetes Service
Váš názor
https://aka.ms/ContentUserFeedback.
Připravujeme: V průběhu roku 2024 budeme postupně vyřazovat problémy z GitHub coby mechanismus zpětné vazby pro obsah a nahrazovat ho novým systémem zpětné vazby. Další informace naleznete v tématu:Odeslat a zobrazit názory pro