Udostępnij za pośrednictwem


Rotacja certyfikatów w usłudze Azure Kubernetes Service (AKS)

Usługa Azure Kubernetes Service (AKS) używa certyfikatów do uwierzytelniania w wielu swoich składnikach. Klastry z kontrolą dostępu opartą na rolach platformy Azure (Azure RBAC), które zostały utworzone po marcu 2022 r., są włączone z automatycznym rotacją certyfikatów. Może być konieczne okresowe obracanie tych certyfikatów ze względów bezpieczeństwa lub zasad. Na przykład możesz mieć zasady rotacji wszystkich certyfikatów co 90 dni.

Uwaga

Automatyczne obracanie certyfikatów jest domyślnie włączone tylko w przypadku klastrów usługi AKS z włączoną kontrolą dostępu opartej na rolach.

W tym artykule pokazano, jak działa rotacja certyfikatów w klastrze usługi AKS.

Zanim rozpoczniesz

Ten artykuł wymaga interfejsu wiersza polecenia platformy Azure w wersji 2.0.77 lub nowszej. Uruchom polecenie az --version, aby dowiedzieć się, jaka wersja jest używana. Jeśli konieczna będzie instalacja lub uaktualnienie, zobacz Instalowanie interfejsu wiersza polecenia platformy Azure.

Certyfikaty usługi AKS, urzędy certyfikacji i konta usług

Usługa AKS generuje i używa następujących certyfikatów, urzędów certyfikacji i kont usług (SA):

  • Serwer interfejsu API usługi AKS tworzy urząd certyfikacji nazywany urzędem certyfikacji klastra.
  • Serwer interfejsu API ma urząd certyfikacji klastra, który podpisuje certyfikaty komunikacji jednokierunkowej z serwera interfejsu API do usługi kubelets.
  • Każdy kubelet tworzy żądanie podpisania certyfikatu (CSR), które urząd certyfikacji klastra podpisuje, do komunikacji z kubelet do serwera interfejsu API.
  • Agregator interfejsu API używa urzędu certyfikacji klastra do wystawiania certyfikatów na potrzeby komunikacji z innymi interfejsami API. Agregator interfejsu API może również mieć własny urząd certyfikacji do wystawiania tych certyfikatów, ale obecnie używa urzędu certyfikacji klastra.
  • Każdy węzeł używa tokenu sa, który urząd certyfikacji klastra podpisuje.
  • Klient kubectl ma certyfikat do komunikowania się z klastrem usługi AKS.

Firma Microsoft utrzymuje wszystkie certyfikaty wymienione w tej sekcji, z wyjątkiem certyfikatu klastra.

Uwaga

  • Klastry usługi AKS utworzone przed majem 2019 r. mają certyfikaty, które wygasają po dwóch latach.
  • Klastry usługi AKS utworzone po maju 2019 r. mają certyfikaty urzędu certyfikacji klastra, które wygasają po upływie 30 lat.

Możesz sprawdzić, kiedy klaster został utworzony przy użyciu kubectl get nodes polecenia , które pokazuje wiek pul węzłów.

Sprawdzanie dat wygaśnięcia certyfikatu

Sprawdzanie daty wygaśnięcia certyfikatu klastra

  • Sprawdź datę wygaśnięcia certyfikatu klastra przy użyciu kubectl config view polecenia .

    kubectl config view --raw -o jsonpath="{.clusters[?(@.name == '')].cluster.certificate-authority-data}" | base64 -d | openssl x509 -text | grep -A2 Validity
    

Sprawdzanie daty wygaśnięcia certyfikatu serwera interfejsu API

  • Sprawdź datę wygaśnięcia certyfikatu serwera interfejsu API przy użyciu następującego curl polecenia.

    curl https://{apiserver-fqdn} -k -v 2>&1 | grep expire
    

Sprawdzanie daty wygaśnięcia certyfikatu węzła agenta VMAS

  • Sprawdź datę wygaśnięcia certyfikatu węzła agenta programu VMAS przy użyciu az vm run-command invoke polecenia .

    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"
    

Sprawdzanie wygaśnięcia certyfikatu dla węzła agenta zestawu skalowania maszyn wirtualnych

  • Sprawdź datę wygaśnięcia certyfikatu węzła agenta zestawu skalowania maszyn wirtualnych przy użyciu az vmss run-command invoke polecenia .

    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"
    

Automatyczna rotacja certyfikatu

Aby usługa AKS automatycznie obracała certyfikaty inne niż urzędy certyfikacji, klaster musi mieć funkcję bootstrapping protokołu TLS, która jest domyślnie włączona we wszystkich regionach świadczenia usługi Azure.

Uwaga

  • Jeśli masz istniejący klaster, musisz uaktualnić ten klaster, aby włączyć automatyczne obracanie certyfikatów.
  • Nie wyłączaj uruchamiania, aby zachować włączoną automatyczną rotację.
  • Jeśli klaster jest w stanie zatrzymanym podczas automatycznego obracania certyfikatów, obracane są tylko certyfikaty płaszczyzny sterowania. W takim przypadku należy ponownie utworzyć pulę węzłów po rotacji certyfikatów, aby zainicjować rotację certyfikatów puli węzłów.

W przypadku wszystkich klastrów usługi AKS utworzonych lub uaktualnionych po marcu 2022 r. usługa Azure Kubernetes Service automatycznie obraca certyfikaty inne niż urzędy certyfikacji na węzłach płaszczyzny sterowania i agenta w ciągu 80% prawidłowego czasu certyfikatu klienta przed wygaśnięciem bez przestoju dla klastra.

Jak sprawdzić, czy bieżąca pula węzłów agenta jest włączona podczas uruchamiania protokołu TLS?

  1. Sprawdź, czy klaster ma włączoną funkcję bootstrapping protokołu TLS, przechodząc do jednej z następujących ścieżek:

    • W węźle systemu Linux: /var/lib/kubelet/bootstrap-kubeconfig lub /host/var/lib/kubelet/bootstrap-kubeconfig
    • W węźle systemu Windows: C:\k\bootstrap-config

    Aby uzyskać więcej informacji, zobacz Connect to Azure Kubernetes Service cluster nodes for maintenance or troubleshooting (Nawiązywanie połączenia z węzłami klastra usługi Azure Kubernetes Service w celu konserwacji lub rozwiązywania problemów).

    Uwaga

    Ścieżka pliku może ulec zmianie w miarę rozwoju wersji platformy Kubernetes.

  2. Po skonfigurowaniu regionu utwórz nowy klaster lub uaktualnij istniejący klaster, aby ustawić automatyczną rotację certyfikatu klastra. Aby włączyć tę funkcję, należy uaktualnić płaszczyznę sterowania i pulę węzłów.

Ręczne obracanie certyfikatów klastra

Ostrzeżenie

Rotacja certyfikatów przy użyciu ponownego az aks rotate-certs tworzenia wszystkich węzłów, zestawów skalowania maszyn wirtualnych i dysków może spowodować do 30 minut przestoju klastra usługi AKS.

  1. Połącz się z klastrem az aks get-credentials przy użyciu polecenia .

    az aks get-credentials --resource-group $RESOURCE_GROUP_NAME --name $CLUSTER_NAME
    
  2. Obróć wszystkie certyfikaty, urzędy certyfikacji i urzędy certyfikacji w klastrze przy użyciu az aks rotate-certs polecenia .

    az aks rotate-certs --resource-group $RESOURCE_GROUP_NAME --name $CLUSTER_NAME
    

    Ważne

    Ukończenie tego procesu może potrwać do 30 minut az aks rotate-certs . Jeśli polecenie zakończy się niepowodzeniem przed ukończeniem, użyj polecenia az aks show , aby sprawdzić, czy stan klastra to Rotacja certyfikatów. Jeśli klaster jest w stanie niepowodzenia, uruchom az aks rotate-certs ponownie, aby ponownie obrócić certyfikaty.

  3. Sprawdź, czy stare certyfikaty nie są już prawidłowe przy użyciu dowolnego kubectl polecenia, takiego jak kubectl get nodes.

    kubectl get nodes
    

    Jeśli certyfikaty używane przez kubectlprogram nie zostały zaktualizowane, zostanie wyświetlony błąd podobny do następujących przykładowych danych wyjściowych:

    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. Zaktualizuj certyfikat używany za pomocą kubectl az aks get-credentials polecenia z flagą --overwrite-existing .

    az aks get-credentials --resource-group $RESOURCE_GROUP_NAME --name $CLUSTER_NAME --overwrite-existing
    
  5. Sprawdź, czy certyfikaty zostały zaktualizowane przy użyciu kubectl get polecenia .

    kubectl get nodes
    

    Uwaga

    Jeśli masz jakiekolwiek usługi działające w usłudze AKS, może być konieczne zaktualizowanie ich certyfikatów.

Następne kroki

W tym artykule pokazano, jak ręcznie i automatycznie obracać certyfikaty klastra, urzędy certyfikacji i urzędy certyfikacji. Aby uzyskać więcej informacji, zobacz Najlepsze rozwiązania dotyczące zabezpieczeń i uaktualnień klastra w usłudze Azure Kubernetes Service (AKS).