Uwaga
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Usługa Azure Kubernetes Service (AKS) używa certyfikatów do uwierzytelniania w interakcji z wieloma składnikami. Klastry z kontrolą dostępu opartą na rolach platformy Azure (Azure RBAC), które zostały utworzone po marcu 2022 r., mają włączony automatyczny obrót 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 / Notatka
Automatyczna rotacja certyfikatów jest domyślnie włączona tylko dla klastrów AKS z włączoną RBAC.
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 az --version
, aby znaleźć wersję. Jeśli konieczna będzie instalacja lub uaktualnienie, zobacz Instalowanie interfejsu wiersza polecenia platformy Azure.
Certyfikaty AKS, Urzędy Certyfikacji i Konta Usługi
Usługa AKS generuje i używa następujących certyfikatów, Urzędów Certyfikacji (CA) i Kont Usług (SA):
- Serwer API AKS tworzy certyfikat CA, zwany certyfikatem klastra.
- Serwer interfejsu API ma CA klastra, który podpisuje certyfikaty dla komunikacji jednokierunkowej z serwera interfejsu API do kubeletów.
- Każdy kubelet tworzy żądanie podpisania certyfikatu (CSR), które jest podpisywane przez urząd certyfikacji klastra, umożliwiając komunikację z kubeleta do serwera API.
- Agregator interfejsów API używa Urzędu Certyfikacji (CA) 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 bezpieczeństwa 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 / Notatka
- 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 CA klastra, które wygasają po 30-letnim okresie ważności.
Możesz sprawdzić, kiedy klaster został utworzony, korzystając z polecenia kubectl get nodes
, 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
Sprawdź datę wygaśnięcia certyfikatu węzła agenta VMAS
Sprawdź datę wygaśnięcia certyfikatu dla węzła agenta programu VMAS używając polecenia
az vm run-command invoke
.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"
Sprawdź wygaśnięcie certyfikatu dla węzła agenta 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 AKS automatycznie obracało certyfikaty niezwiązane z urzędami certyfikacji, klaster musi mieć funkcję rozruch TLS, która jest domyślnie włączona we wszystkich regionach Azure.
Uwaga / Notatka
- 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 odnowieniu certyfikatów, aby zainicjować proces odnowienia 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% certyfikatu klienta ważnego czasu 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 / Notatka
Ś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ęczna rotacja certyfikatów klastra
Ostrzeżenie
Rotacja certyfikatów przy użyciu az aks rotate-certs
powoduje ponowne utworzenie wszystkich węzłów, zestawów skalowalnych maszyn wirtualnych i dysków oraz 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
Przeprowadź rotację wszystkich certyfikatów, urzędów certyfikacji i kont usługowych w klastrze, używając polecenia
az aks rotate-certs
.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 przez
kubectl
, korzystając z poleceniaaz aks get-credentials
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 / Notatka
Jeśli masz jakiekolwiek usługi uruchomione na platformie AKS, może być konieczne dokonanie aktualizacji ich certyfikatów.
Rotacja certyfikatów serwera Kubelet
Usługa rotacji certyfikatów obsługowych Kubelet umożliwia AKS korzystanie z uruchamiania protokołu TLS kubeleta zarówno do uruchamiania, jak i rotacji certyfikatów obsługowych podpisanych przez urząd certyfikacji klastra.
Ograniczenia
- Obsługiwane na platformie Kubernetes w wersji 1.27 lub nowszej.
- Nie jest obsługiwane, gdy pula węzłów używa migawki puli węzłów na podstawie dowolnego obrazu węzła starszego niż
202501.12.0
. - Tej funkcji nie można włączyć ręcznie. Istniejące pule węzłów mają domyślnie włączoną rotację certyfikatów usługi kubelet, gdy przeprowadzają pierwsze uaktualnienie do dowolnego rozwiązania Kubernetes w wersji 1.27 lub nowszej. Nowe pule węzłów na platformie Kubernetes w wersji 1.27 lub nowszej będą mieć domyślnie włączoną rotację certyfikatów obsługujących usługę kubelet. Aby sprawdzić, czy rotacja certyfikatów usługi Kubelet została włączona w Twoim regionie, zobacz Wydania usługi AKS.
Sprawdź, czy włączono rotację certyfikatów obsługujących usługę kubelet
Każdy węzeł z włączoną funkcją automatycznie otrzymuje etykietę kubernetes.azure.com/kubelet-serving-ca=cluster
. Sprawdź, czy etykiety zostały ustawione przy użyciu kubectl get nodes -L kubernetes.azure.com/kubelet-serving-ca
polecenia .
kubectl get nodes -L kubernetes.azure.com/kubelet-serving-ca
Zweryfikuj, czy narzędzie kubelet przechodzi przez proces inicjalizacji protokołu TLS
Po włączeniu tej funkcji każdy kubelet uruchomiony na węzłach powinien przejść przez proces inicjowania TLS.
Sprawdź, czy proces bootstrappingu ma miejsce, używając polecenia kubectl get
do pobrania bieżących obiektów CSR w klastrze.
kubectl get csr --field-selector=spec.signerName=kubernetes.io/kubelet-serving
Wszyscy obsługujący CSR-y powinni znajdować się w Approved,Issued
stanie, który wskazuje, że CSR został zatwierdzony, oraz wystawiono podpisany certyfikat. Konsultanci działu obsługi klienta mają nazwę sygnatariusza kubernetes.io/kubelet-serving
.
NAME AGE SIGNERNAME REQUESTOR REQUESTEDDURATION CONDITION
csr-8mx4w 113s kubernetes.io/kube-apiserver-client-kubelet system:bootstrap:uoxr9r none Approved,Issued
csr-bchlj 111s kubernetes.io/kubelet-serving system:node:akswinp7000000 none Approved,Issued
csr-sb4wz 46m kubernetes.io/kubelet-serving system:node:akswinp6000000 none Approved,Issued
csr-zc4wt 46m kubernetes.io/kube-apiserver-client-kubelet system:bootstrap:ho7zyu none Approved,Issued
Sprawdź, czy narzędzie kubelet używa certyfikatu uzyskanego z uruchamiania protokołu TLS serwera
Aby potwierdzić, czy węzeł kubelet używa certyfikatu serwera podpisanego przez CA klastra, użyj polecenia [kubectl debug
][kubectl-debug], aby przejrzeć zawartość katalogu PKI kubeleta.
kubectl debug node/<node> -ti --image=mcr.microsoft.com/azurelinux/base/core:3.0 -- ls -l /host/var/lib/kubelet/kubelet-server-current.pem
Jeśli istnieje symlink, kubelet skonfigurował/odnowił swój certyfikat serwera poprzez proces uruchamiania TLS i został on podpisany przez urząd certyfikacji klastra.
Wyłącz rotację certyfikatów serwera kubelet
Można wyłączyć rotację certyfikatów kubelet, aktualizując pulę węzłów przy użyciu polecenia az aks nodepool update, aby określić tag aks-disable-kubelet-serving-certificate-rotation=true
, a następnie ponownie obrazując węzły. Reimage węzła można wykonać za pomocą uaktualnienia obrazu węzła lub przez skalowanie puli do 0 wystąpień, a następnie wykonanie kopii zapasowej do żądanej wartości.
az aks nodepool update --cluster-name myCluster --resource-group myResourceGroup --name mynodepool --tags aks-disable-kubelet-serving-certificate-rotation=true
Dalsze kroki
W tym artykule pokazano, jak ręcznie i automatycznie odnawiać certyfikaty klastra, urzędy certyfikacji (CA) oraz kontrolery dostępów (SA). 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