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?
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.
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.
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
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 poleceniaaz aks show
, aby sprawdzić, czy stan klastra to Rotacja certyfikatów. Jeśli klaster jest w stanie niepowodzenia, uruchomaz aks rotate-certs
ponownie, aby ponownie obrócić certyfikaty.Sprawdź, czy stare certyfikaty nie są już prawidłowe przy użyciu dowolnego
kubectl
polecenia, takiego jakkubectl get nodes
.kubectl get nodes
Jeśli certyfikaty używane przez
kubectl
program 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")
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
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).
Azure Kubernetes Service