Włączanie standardu FIPS (Federal Information Process Standard) dla pul węzłów usługi Azure Kubernetes Service (AKS)
Federal Information Processing Standard (FIPS) 140-2 to amerykański standard rządowy, który definiuje minimalne wymagania dotyczące zabezpieczeń modułów kryptograficznych w produktach i systemach technologii informatycznych. Usługa Azure Kubernetes Service (AKS) umożliwia tworzenie pul węzłów systemu Linux i Windows z włączonym programem FIPS 140-2. Wdrożenia działające w pulach węzłów z obsługą standardu FIPS mogą używać tych modułów kryptograficznych do zapewnienia zwiększonych zabezpieczeń i ułatwienia spełnienia wymagań mechanizmów kontroli zabezpieczeń w ramach zgodności z protokołem FedRAMP. Aby uzyskać więcej informacji na temat standardu FIPS 140-2, zobacz Federal Information Processing Standard (FIPS) 140.
Wymagania wstępne
- Interfejs wiersza polecenia platformy Azure w wersji 2.32.0 lub nowszej został zainstalowany i skonfigurowany. Aby dowiedzieć się, jaka wersja jest używana, uruchom polecenie
az --version
. Aby uzyskać więcej informacji na temat instalowania lub uaktualniania interfejsu wiersza polecenia platformy Azure, zobacz Instalowanie interfejsu wiersza polecenia platformy Azure.
Uwaga
Dodatek monitorowania usługi AKS obsługuje pule węzłów z obsługą standardu FIPS z systemami Ubuntu, Azure Linux i Windows, począwszy od agenta w wersji 3.1.17 (Linux) i Win-3.1.17 (Windows).
Ograniczenia
- Pule węzłów z obsługą protokołu FIPS mają następujące ograniczenia:
- Pule węzłów z obsługą protokołu FIPS wymagają platformy Kubernetes w wersji 1.19 lub nowszej.
- Aby zaktualizować bazowe pakiety lub moduły używane dla programu FIPS, należy użyć uaktualnienia obrazu węzła.
- Obrazy kontenerów w węzłach FIPS nie zostały ocenione pod kątem zgodności ze standardem FIPS.
- Instalowanie udziału CIFS kończy się niepowodzeniem, ponieważ program FIPS wyłącza niektóre moduły uwierzytelniania. Aby obejść ten problem, zobacz Błędy podczas instalowania udziału plików w puli węzłów z obsługą protokołu FIPS.
Ważne
Obraz systemu Linux z obsługą standardu FIPS jest innym obrazem niż domyślny obraz systemu Linux używany dla pul węzłów opartych na systemie Linux.
Obrazy węzłów z obsługą protokołu FIPS mogą mieć różne numery wersji, takie jak wersja jądra, niż obrazy, które nie są włączone w trybie FIPS. Cykl aktualizacji pul węzłów z obsługą protokołu FIPS i obrazów węzłów może się różnić od pul węzłów i obrazów, które nie są włączone w trybie FIPS.
Obsługiwane wersje systemu operacyjnego
Pule węzłów z obsługą protokołu FIPS można tworzyć we wszystkich obsługiwanych typach systemu operacyjnego, systemach Linux i Windows. Jednak nie wszystkie wersje systemu operacyjnego obsługują pule węzłów z obsługą protokołu FIPS. Po wydaniu nowej wersji systemu operacyjnego zazwyczaj występuje okres oczekiwania przed jego zgodnością ze standardem FIPS.
Poniższa tabela zawiera obsługiwane wersje systemu operacyjnego:
Typ systemu operacyjnego | Jednostka SKU systemu operacyjnego | Zgodność ze standardem FIPS |
---|---|---|
Linux | Ubuntu | Obsługiwane |
Linux | Azure Linux | Obsługiwane |
Windows | Windows Server 2019 | Obsługiwane |
Windows | Windows Server 2022 | Obsługiwane |
Jeśli domyślna wersja systemu Ubuntu nie obsługuje standardu FIPS, usługa AKS będzie domyślnie używać najnowszej wersji obsługiwanej przez standard FIPS systemu Ubuntu. Na przykład system Ubuntu 22.04 jest domyślny dla pul węzłów systemu Linux. Ponieważ wersja 22.04 nie obsługuje obecnie standardu FIPS, usługa AKS domyślnie używa systemu Ubuntu 20.04 dla puli węzłów z obsługą protokołu FIPS systemu Linux.
Uwaga
Wcześniej można było użyć interfejsu API GetOSOptions, aby określić, czy dany system operacyjny obsługuje standard FIPS. Interfejs API GetOSOptions jest teraz przestarzały i nie będzie już uwzględniany w nowych wersjach interfejsu API usługi AKS, począwszy od wersji 2024-05-01.
Tworzenie puli węzłów systemu Linux z obsługą protokołu FIPS
Utwórz pulę węzłów systemu Linux z obsługą protokołu FIPS przy użyciu
az aks nodepool add
polecenia z parametrem--enable-fips-image
.az aks nodepool add \ --resource-group myResourceGroup \ --cluster-name myAKSCluster \ --name fipsnp \ --enable-fips-image
Uwaga
Możesz również użyć parametru
--enable-fips-image
z poleceniemaz aks create
podczas tworzenia klastra, aby włączyć protokół FIPS w domyślnej puli węzłów. Podczas dodawania pul węzłów do klastra utworzonego w ten sposób nadal należy użyć parametru--enable-fips-image
podczas dodawania pul węzłów w celu utworzenia puli węzłów z obsługą protokołu FIPS.Sprawdź, czy pula węzłów jest włączona w trybie FIPS przy użyciu polecenia i wykonaj zapytanie dotyczące wartości enableFIPS w elemecie
az aks show
agentPoolProfiles.az aks show \ --resource-group myResourceGroup \ --name myAKSCluster \ --query="agentPoolProfiles[].{Name:name enableFips:enableFips}" \ -o table
Następujące przykładowe dane wyjściowe pokazują, że pula węzłów fipsnp jest włączona w trybie FIPS:
Name enableFips --------- ------------ fipsnp True nodepool1 False
Wyświetl listę węzłów przy użyciu
kubectl get nodes
polecenia .kubectl get nodes
W poniższych przykładowych danych wyjściowych przedstawiono listę węzłów w klastrze. Węzły rozpoczynające się od
aks-fipsnp
programu są częścią puli węzłów z obsługą protokołu FIPS.NAME STATUS ROLES AGE VERSION aks-fipsnp-12345678-vmss000000 Ready agent 6m4s v1.19.9 aks-fipsnp-12345678-vmss000001 Ready agent 5m21s v1.19.9 aks-fipsnp-12345678-vmss000002 Ready agent 6m8s v1.19.9 aks-nodepool1-12345678-vmss000000 Ready agent 34m v1.19.9
Uruchom wdrożenie z interakcyjną sesją na jednym z węzłów w puli węzłów z obsługą
kubectl debug
protokołu FIPS przy użyciu polecenia .kubectl debug node/aks-fipsnp-12345678-vmss000000 -it --image=mcr.microsoft.com/dotnet/runtime-deps:6.0
Z danych wyjściowych sesji interakcyjnej sprawdź, czy biblioteki kryptograficzne FIPS są włączone. Dane wyjściowe powinny wyglądać podobnie do następujących przykładowych danych wyjściowych:
root@aks-fipsnp-12345678-vmss000000:/# cat /proc/sys/crypto/fips_enabled 1
Pule węzłów z obsługą protokołu FIPS mają również etykietę kubernetes.azure.com/fips_enabled=true , której wdrożenia mogą używać do określania lokalizacji docelowej tych pul węzłów.
Tworzenie puli węzłów systemu Windows z obsługą protokołu FIPS
Utwórz pulę węzłów z obsługą protokołu FIPS przy użyciu
az aks nodepool add
polecenia z parametrem--enable-fips-image
. W przeciwieństwie do pul węzłów opartych na systemie Linux pule węzłów systemu Windows współużytkuje ten sam zestaw obrazów.az aks nodepool add \ --resource-group myResourceGroup \ --cluster-name myAKSCluster \ --name fipsnp \ --enable-fips-image \ --os-type Windows
Sprawdź, czy pula węzłów jest włączona w trybie FIPS przy użyciu polecenia i wykonaj zapytanie dotyczące wartości enableFIPS w elemecie
az aks show
agentPoolProfiles.az aks show \ --resource-group myResourceGroup \ --name myAKSCluster \ --query="agentPoolProfiles[].{Name:name enableFips:enableFips}" \ -o table
Sprawdź, czy pule węzłów systemu Windows mają dostęp do bibliotek kryptograficznych FIPS, tworząc połączenie RDP z węzłem systemu Windows w puli węzłów z obsługą protokołu FIPS i sprawdzając rejestr. W obszarze Uruchom aplikację wprowadź wartość
regedit
.HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa\FIPSAlgorithmPolicy
Wyszukaj w rejestrze.Jeśli
Enabled
ustawiono wartość 1, zostanie włączona funkcja FIPS.
Pule węzłów z obsługą protokołu FIPS mają również etykietę kubernetes.azure.com/fips_enabled=true , której wdrożenia mogą używać do określania lokalizacji docelowej tych pul węzłów.
Aktualizowanie istniejącej puli węzłów w celu włączenia lub wyłączenia protokołu FIPS
Istniejące pule węzłów systemu Linux można zaktualizować, aby włączyć lub wyłączyć protokół FIPS. Jeśli planujesz migrację pul węzłów z innych niż FIPS do fiPS, najpierw sprawdź, czy aplikacja działa prawidłowo w środowisku testowym przed migracją do środowiska produkcyjnego. Weryfikowanie aplikacji w środowisku testowym powinno zapobiegać problemom spowodowanym przez jądro FIPS blokujące niektóre słabe algorytmy szyfrowania lub szyfrowania, takie jak algorytm MD4, który nie jest zgodny ze standardem FIPS.
Uwaga
Podczas aktualizowania istniejącej puli węzłów systemu Linux w celu włączenia lub wyłączenia standardu FIPS aktualizacja puli węzłów zostanie przeniesiona między obrazem fips i innym niż fips. Ta aktualizacja puli węzłów spowoduje wyzwolenie ponownego obrazu w celu ukończenia aktualizacji. Może to spowodować ukończenie aktualizacji puli węzłów.
Wymagania wstępne
- Interfejs wiersza polecenia platformy Azure w wersji 2.64.0 lub nowszej. Aby dowiedzieć się, jaka wersja jest używana, uruchom polecenie
az --version
. Jeśli konieczna będzie instalacja lub uaktualnienie, zobacz Instalowanie interfejsu wiersza polecenia platformy Azure.
Włączanie protokołu FIPS w istniejącej puli węzłów
Istniejące pule węzłów systemu Linux można zaktualizować w celu włączenia protokołu FIPS. Po zaktualizowaniu istniejącej puli węzłów obraz węzła zmieni się z bieżącego obrazu na zalecany obraz FIPS tej samej jednostki SKU systemu operacyjnego.
Zaktualizuj pulę węzłów przy użyciu polecenia [
az aks nodepool update
][az-aks-nodepool-update] za pomocą parametru--enable-fips-image
.az aks nodepool update \ --resource-group myResourceGroup \ --cluster-name myAKSCluster \ --name np \ --enable-fips-image
Powyższe polecenie wyzwala obraz puli węzłów natychmiast w celu wdrożenia zgodnego systemu operacyjnego FIPS. Ten obraz występuje podczas aktualizacji puli węzłów. Nie są wymagane żadne dodatkowe kroki.
Sprawdź, czy pula węzłów jest włączona przy użyciu
az aks show
polecenia i wykonaj zapytanie dotyczące wartości enableFIPS w agentPoolProfiles.az aks show \ --resource-group myResourceGroup \ --name myAKSCluster \ --query="agentPoolProfiles[].{Name:name enableFips:enableFips}" \ -o table
Następujące przykładowe dane wyjściowe pokazują, że pula węzłów np jest włączona w trybie FIPS:
Name enableFips --------- ------------ np True nodepool1 False
Wyświetl listę węzłów przy użyciu
kubectl get nodes
polecenia .kubectl get nodes
W poniższych przykładowych danych wyjściowych przedstawiono listę węzłów w klastrze. Węzły rozpoczynające się od
aks-np
programu są częścią puli węzłów z obsługą protokołu FIPS.NAME STATUS ROLES AGE VERSION aks-np-12345678-vmss000000 Ready agent 6m4s v1.19.9 aks-np-12345678-vmss000001 Ready agent 5m21s v1.19.9 aks-np-12345678-vmss000002 Ready agent 6m8s v1.19.9 aks-nodepool1-12345678-vmss000000 Ready agent 34m v1.19.9
Uruchom wdrożenie z interakcyjną sesją na jednym z węzłów w puli węzłów z obsługą
kubectl debug
protokołu FIPS przy użyciu polecenia .kubectl debug node/aks-np-12345678-vmss000000 -it --image=mcr.microsoft.com/dotnet/runtime-deps:6.0
Z danych wyjściowych sesji interakcyjnej sprawdź, czy biblioteki kryptograficzne FIPS są włączone. Dane wyjściowe powinny wyglądać podobnie do następujących przykładowych danych wyjściowych:
root@aks-np-12345678-vmss000000:/# cat /proc/sys/crypto/fips_enabled 1
Pule węzłów z obsługą protokołu FIPS mają również etykietę kubernetes.azure.com/fips_enabled=true , której wdrożenia mogą używać do określania lokalizacji docelowej tych pul węzłów.
Wyłączanie protokołu FIPS w istniejącej puli węzłów
Istniejące pule węzłów systemu Linux można zaktualizować, aby wyłączyć protokół FIPS. Podczas aktualizowania istniejącej puli węzłów obraz węzła zmieni się z bieżącego obrazu FIPS na zalecany obraz inny niż FIPS tej samej jednostki SKU systemu operacyjnego. Zmiana obrazu węzła zostanie wykonana po ponownym obrazie.
Zaktualizuj pulę węzłów systemu Linux przy użyciu polecenia [
az aks nodepool update
][az-aks-nodepool-update] za pomocą parametru--disable-fips-image
.az aks nodepool update \ --resource-group myResourceGroup \ --cluster-name myAKSCluster \ --name np \ --disable-fips-image
Powyższe polecenie wyzwala obraz puli węzłów natychmiast w celu wdrożenia zgodnego systemu operacyjnego FIPS. Ten obraz występuje podczas aktualizacji puli węzłów. Nie są wymagane żadne dodatkowe kroki.
Sprawdź, czy pula węzłów nie jest włączona przy użyciu
az aks show
polecenia i wykonaj zapytanie dotyczące wartości enableFIPS w pliku agentPoolProfiles.az aks show \ --resource-group myResourceGroup \ --name myAKSCluster \ --query="agentPoolProfiles[].{Name:name enableFips:enableFips}" \ -o table
Następujące przykładowe dane wyjściowe pokazują, że pula węzłów np nie jest włączona w trybie FIPS:
Name enableFips --------- ------------ np False nodepool1 False
Następne kroki
Aby dowiedzieć się więcej na temat zabezpieczeń usługi AKS, zobacz Najlepsze rozwiązania dotyczące zabezpieczeń i uaktualnień klastra w usłudze Azure Kubernetes Service (AKS).
Azure Kubernetes Service