Sdílet prostřednictvím


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 vm 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 -text" --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?

  1. 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.

  2. 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.

  1. Připojte se ke clusteru az aks get-credentials pomocí příkazu.

    az aks get-credentials --resource-group $RESOURCE_GROUP_NAME --name $CLUSTER_NAME
    
  2. 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žijte az aks show k ověření stavu rotace certifikátu clusteru. Pokud je cluster ve stavu selhání, znovu spusťte az aks rotate-certs rotaci certifikátů.

  3. Ověřte, že staré certifikáty již nejsou platné, pomocí žádného kubectl příkazu, například kubectl get nodes.

    kubectl get nodes
    

    Pokud jste certifikáty používané nástrojem kubectlneaktualizovali, 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")
    
  4. 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
    
  5. 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).