Udostępnij za pośrednictwem


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

  1. 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 poleceniem az 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.

  2. 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  
    
  3. 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
    
  4. 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
    
  5. 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

  1. 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
    
  2. 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
    
  3. 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.

  4. HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa\FIPSAlgorithmPolicy Wyszukaj w rejestrze.

  5. Jeśli Enabled ustawiono wartość 1, zostanie włączona funkcja FIPS.

Zrzut ekranu przedstawia obraz edytora rejestru w zasadach algorytmów FIPS i jest on włączony.

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

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.

  1. 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.

  1. 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  
    
  2. 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
    
  3. 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
    
  4. 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.

  1. 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.

  1. 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).