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

Azure Kubernetes Service (AKS) używa certyfikatów do uwierzytelniania z wieloma składnikami. Klastry z włączoną kontrolą dostępu opartą na rolach utworzone po marcu 2022 r. są włączone z automatyczną rotacją certyfikatów. Może być konieczne okresowe obracanie tych certyfikatów ze względów bezpieczeństwa lub zasad. Na przykład mogą istnieć zasady rotacji wszystkich certyfikatów co 90 dni.

Uwaga

Automatyczna rotacja certyfikatów jest domyślnie włączona tylko dla klastrów usługi AKS z włączoną kontrolą dostępu opartą 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 o nazwie Urząd 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 na potrzeby komunikacji z narzędzia kubelet do serwera interfejsu API.
  • Agregator interfejsów 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 obsługuje 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 30 latach.

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 VMAS przy użyciu az vm run-command invoke polecenia .

    az vm run-command invoke -g MC_rg_myAKSCluster_region -n vm-name --command-id RunShellScript --query 'value[0].message' -otsv --scripts "openssl x509 -in /etc/kubernetes/certs/apiserver.crt -noout -enddate"
    

Sprawdzanie daty wygaśnięcia certyfikatu 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 vm 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 /etc/kubernetes/certs/apiserver.crt -noout -enddate" --query "value[0].message"
    

Automatyczna rotacja certyfikatów

Aby usługa AKS automatycznie obracała certyfikaty bez urzędu 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ć automatyczną rotację certyfikatów.
  • Nie wyłączaj uruchamiania, aby zachować włączoną automatyczną rotację.
  • Jeśli klaster jest w stanie zatrzymanym podczas rotacji certyfikatów automatycznych, 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. Azure Kubernetes Service automatycznie obraca certyfikaty inne niż urzędy certyfikacji zarówno na węźle płaszczyzny sterowania, jak i węzłach 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 Nawiązywanie połączenia z węzłami klastra 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 utworzenia wszystkich węzłów, Virtual Machine Scale Sets i dysków i 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 -g $RESOURCE_GROUP_NAME -n $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 -g $RESOURCE_GROUP_NAME -n $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 kubectl przy użyciu az aks get-credentials polecenia z flagą --overwrite-existing .

    az aks get-credentials -g $RESOURCE_GROUP_NAME -n $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, które działają w usłudze AKS, może być konieczne zaktualizowanie ich certyfikatów.

Następne kroki

W tym artykule pokazano, jak 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).