Obměny certifikátů ve službě Azure Kubernetes Service (AKS)
Služba Azure Kubernetes Service (AKS) používá certifikáty pro ověřování mnoha svých komponent. Clustery s řízením přístupu na základě role v Azure (Azure RBAC), které byly vytvořeny po březnu 2022, mají povolenou automatickou obměnu certifikátů. Tyto certifikáty možná budete muset pravidelně obměňovat z důvodů zabezpečení nebo zásad. Můžete mít například zásadu pro obměna všech certifikátů každých 90 dnů.
Poznámka:
Automatické obměny certifikátů je ve výchozím nastavení povolené jenom pro clustery AKS s podporou RBAC.
V tomto článku se dozvíte, jak funguje obměně certifikátů v clusteru AKS.
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 certifikační autorita clusteru.
- Server ROZHRANÍ API má certifikační autoritu clusteru, která podepisuje certifikáty pro jednosměrnou komunikaci ze serveru rozhraní API do kubelets.
- Každý kubelet vytvoří žádost o podepsání certifikátu (CSR), kterou certifikační autorita clusteru podepíše 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ý podepíše 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 certifikační autority clusteru, jejichž platnost vyprší po 30 letech.
Pomocí příkazu můžete ověřit, kdy byl cluster vytvořen kubectl get nodes
, což ukazuje věk fondů uzlů.
Kontrola dat vypršení platnosti certifikátu
Kontrola data vypršení platnosti certifikátu clusteru
Pomocí příkazu zkontrolujte datum vypršení platnosti certifikátu clusteru
kubectl config view
.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 agenta VMAS
Pomocí příkazu zkontrolujte datum vypršení platnosti certifikátu
az vm run-command invoke
uzlu agenta VMAS.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 vypršení platnosti certifikátu pro uzel agenta škálovací sady virtuálních počítačů
Pomocí příkazu zkontrolujte datum vypršení platnosti certifikátu
az vmss run-command invoke
agenta agenta škálovací sady virtuálních počítačů.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"
Automatické obměně certifikátů
Aby služba AKS automaticky obměňuje certifikáty mimo certifikační autoritu, musí mít cluster protokol TLS Bootstrapping, který je ve výchozím nastavení povolený ve všech oblastech Azure.
Poznámka:
- Pokud máte existující cluster, musíte tento cluster upgradovat, abyste povolili automatické obměně certifikátů.
- Nezakažujte Bootstrap, aby se zachovalo automatické obměně.
- Pokud je cluster v zastaveném stavu při automatické obměně certifikátů, otočí se pouze certifikáty řídicí roviny. V takovém případě byste měli fond uzlů vytvořit znovu po obměně certifikátů, abyste zahájili obměnu certifikátů fondu uzlů.
U všech clusterů AKS vytvořených nebo upgradovaných po březnu 2022 služba Azure Kubernetes Service automaticky obměňuje certifikáty bez certifikační autority na řídicí rovině i na uzlech agentů v rámci 80 % platné doby platnosti klientského certifikátu před vypršením jejich platnosti bez výpadku clusteru.
Jak zkontrolovat, jestli je aktuálně povolený fond uzlů agenta TLS Bootstrapping?
Ověřte, jestli je u vašeho clusteru povolené spouštění protokolu TLS, a to tak, že přejdete na jednu z následujících cest:
- Na linuxovém uzlu: /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 pro účely údržby nebo řešení potíží.
Poznámka:
Cesta k souboru se může při vývoji verzí Kubernetes změnit.
Jakmile je oblast nakonfigurovaná, vytvořte nový cluster nebo upgradujte existující cluster, aby se pro certifikát clusteru nastavila automatická rotace. Pokud chcete tuto funkci povolit, musíte upgradovat řídicí rovinu a fond uzlů.
Ruční obměna certifikátů clusteru
Upozorňující
Obměně certifikátů pomocí az aks rotate-certs
opětovného vytvoření všech uzlů, škálovacích sad virtuálních počítačů a disků a může způsobit až 30 minut výpadku 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 certifikační autority ve vašem 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ří, použijteaz aks show
k ověření stavu rotace certifikátu clusteru. Pokud je cluster ve stavu selhání, znovu spusťteaz aks rotate-certs
rotaci certifikátů.Ověřte, že staré certifikáty již nejsou platné, pomocí žádného
kubectl
příkazu, napříkladkubectl get nodes
.kubectl get nodes
Pokud jste certifikáty používané nástrojem
kubectl
neaktualizovali, 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ý
kubectl
pomocíaz aks get-credentials
příkazu 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 certifikáty byly aktualizovány
kubectl get
.kubectl get nodes
Poznámka:
Pokud máte nějaké služby, které běží nad AKS, budete možná muset aktualizovat jejich certifikáty.
Další kroky
Tento článek vám ukázal, jak ručně a automaticky otočit 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 clusteru ve službě Azure Kubernetes Service (AKS).
Azure Kubernetes Service