Freigeben über


Aktivieren des Federal Information Process Standards (FIPS) für AKS-Knotenpools (Azure Kubernetes Service)

Der Federal Information Processing Standard (FIPS) 140-2 ist ein Standard der US-Regierung, der Mindestsicherheitsanforderungen für kryptografische Module in IT-Produkten und -Systemen definiert. Mit Azure Kubernetes Service (AKS) können Sie Linux- und Windows-Knotenpools mit aktiviertem FIPS 140-2 erstellen. Bereitstellungen, die in FIPS-fähigen Knotenpools ausgeführt werden, können mithilfe dieser Kryptografiemodule mehr Sicherheit bieten und Sicherheitskontrollen im Rahmen der FedRAMP-Compliance erfüllen. Weitere Informationen zu FIPS 140-2 finden Sie unter Federal Information Processing Standard (FIPS) 140.

Voraussetzungen

  • Version 2.32.0 oder höher der Azure CLI installiert und konfiguriert. Führen Sie az --version aus, um die Version zu finden. Weitere Informationen zum Installieren oder Upgraden der Azure CLI finden Sie unter Installieren der Azure CLI.

Hinweis

AKS Monitoring Addon unterstützt FIPS-fähige Node-Pools mit Ubuntu, Azure Linux und Windows ab Agent Version 3.1.17 (Linux) und Win-3.1.17 (Windows).

Begrenzungen

  • Bei FIPS-fähigen Knotenpools gelten die folgenden Einschränkungen:
    • FIPS-fähige Knotenpools erfordern Kubernetes, Version 1.19 und höher.
    • Zur Aktualisierung der zugrunde liegenden Pakete oder Module, die für FIPS verwendet werden, müssen Sie ein Knotenimageupgrade verwenden.
    • Containerimages auf den FIPS-Knoten wurden nicht auf FIPS-Konformität bewertet.
    • Die Bereitstellung einer CIFS-Freigabe schlägt fehl, da FIPS einige Authentifizierungsmodule deaktiviert. Informationen zum Umgehen dieses Problems finden Sie unter Fehler beim Einbinden einer Dateifreigabe in einem FIPS-fähigen Knotenpool.

Wichtig

Das FIPS-fähige Linux-Image ist ein anderes als das Linux-Standardimage, das bei Linux-basierten Knotenpools verwendet wird.

FIPS-fähige Knotenimages haben möglicherweise andere Versionsnummern, z. B. die Kernelversion, als nicht-FIPS-fähige Images. Der Updatezyklus kann sich für FIPS-fähige Knotenpools und Knotenimages von nicht-FIPS-fähigen Knotenpools und -images unterscheiden.

Unterstützte Betriebssystemversionen

Sie können FIPS-fähige Knotenpools für alle unterstützten Betriebssystemtypen, Linux und Windows erstellen. Allerdings unterstützen nicht alle Betriebssystemversionen FIPS-fähige Knotenpools. Nachdem eine neue Betriebssystemversion veröffentlicht wurde, gibt es in der Regel eine Wartezeit, bevor sie FIPS-kompatibel ist.

Die folgende Tabelle enthält die unterstützten Betriebssystemversionen:

Betriebssystemtyp Betriebssystem-SKU FIPS-Compliance
Linux Ubuntu Unterstützt
Linux Azure Linux Unterstützt
Windows Windows Server 2019 Unterstützt
Windows Windows Server 2022 Unterstützt

Wenn FIPS-aktiviertes Ubuntu angefordert wird, wenn die standardmäßige Ubuntu-Version FIPS nicht unterstützt, verwendet AKS standardmäßig die neueste FIPS-unterstützte Version von Ubuntu. Beispielsweise ist Ubuntu 22.04 standardmäßig für Linux-Knotenpools. Da FIPS von 22.04 derzeit nicht unterstützt wird, unterstützt AKS standardmäßig Ubuntu 20.04 für Linux FIPS-fähige Knotenpools.

Hinweis

Zuvor konnten Sie die GetOSOptions-API verwenden, um zu bestimmen, ob ein bestimmtes Betriebssystem FIPS unterstützt. Die GetOSOptions-API ist jetzt veraltet und wird ab 2024-05-01 nicht mehr in neuen AKS-API-Versionen enthalten sein.

Erstellen eines FIPS-fähigen Linux-Knotenpools

  1. Erstellen Sie mithilfe des Befehls „az aks nodepool add“ mit dem --enable-fips-image-Parameter einen FIPS-fähigen Linux-Knotenpool.

    az aks nodepool add \
        --resource-group myResourceGroup \
        --cluster-name myAKSCluster \
        --name fipsnp \
        --enable-fips-image
    

    Hinweis

    Sie können auch beim Erstellen eines Clusters den --enable-fips-imageParameter mit dem Befehl „az aks create“ verwenden, um FIPS im Standardknotenpool zu aktivieren. Wenn Sie Knotenpools zu einem auf diese Weise erstellten Cluster hinzufügen, müssen Sie zum Erstellen eines FIPS-fähigen Knotenpools weiterhin den Parameter --enable-fips-image verwenden.

  2. Vergewissern Sie sich, dass Ihr Knotenpool FIPS-fähig ist, indem Sie den Befehl „az aks show“ und die Abfrage für den Wert enableFIPS in agentPoolProfiles verwenden.

    az aks show \
        --resource-group myResourceGroup \
        --name myAKSCluster \
        --query="agentPoolProfiles[].{Name:name enableFips:enableFips}" \
        -o table
    

    Die folgende Beispielausgabe zeigt, dass der Knotenpool fipsnp FIPS-fähig ist:

    Name       enableFips
    ---------  ------------
    fipsnp     True
    nodepool1  False  
    
  3. Listen Sie die Knoten mithilfe des Befehls „kubectl get nodes“ auf.

    kubectl get nodes
    

    Die folgende Beispielausgabe führt alle Knoten im Cluster auf. Die Knoten, deren Namen mit aks-fipsnp anfangen, sind Teil des FIPS-fähigen Knotenpools.

    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. Führen Sie mithilfe des Befehls „kubectl debug“ eine Bereitstellung bei einer interaktiven Sitzung auf einem dieser Knoten im FIPS-fähigen Knotenpool.

    kubectl debug node/aks-fipsnp-12345678-vmss000000 -it --image=mcr.microsoft.com/dotnet/runtime-deps:6.0
    
  5. Überprüfen Sie anhand der Ausgabe der interaktiven Sitzung, ob die FIPS-Kryptografiebibliotheken aktiviert wurden. Ihre Ausgabe sollte in etwa dem folgendem Beispiel entsprechen:

    root@aks-fipsnp-12345678-vmss000000:/# cat /proc/sys/crypto/fips_enabled
    1
    

FIPS-fähige Knotenpools haben auch die Bezeichnung kubernetes.azure.com/fips_enabled=true, die von Bereitstellungen für diese Knotenpools verwendet werden können.

Erstellen eines FIPS-fähigen Windows-Knotenpools

  1. Erstellen Sie mithilfe des Befehls „az aks nodepool add“ mit dem --enable-fips-image-Parameter einen FIPS-fähigen Windows-Knotenpool. Im Gegensatz zu Linux-basierten Knotenpools teilen Windows-Knotenpools denselben Imagesatz.

    az aks nodepool add \
        --resource-group myResourceGroup \
        --cluster-name myAKSCluster \
        --name fipsnp \
        --enable-fips-image \
        --os-type Windows
    
  2. Vergewissern Sie sich, dass Ihr Knotenpool FIPS-fähig ist, indem Sie den Befehl „az aks show“ und die Abfrage für den Wert enableFIPS in agentPoolProfiles verwenden.

    az aks show \
        --resource-group myResourceGroup \
        --name myAKSCluster \
        --query="agentPoolProfiles[].{Name:name enableFips:enableFips}" \
        -o table
    
  3. Überprüfen Sie, ob Windows-Knotenpools Zugriff auf die FIPS-Verschlüsselungsbibliotheken haben, indem Sie eine RDP-Verbindung mit einem Windows-Knoten in einem FIPS-fähigen Knotenpool erstellen und überprüfen dann die Registrierung überprüfen. Geben Sie über die Ausführen-Anwendung entsprechend regedit ein.

  4. Suchen Sie in der Registrierung nach HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa\FIPSAlgorithmPolicy.

  5. Wenn Enabled auf 1 festgelegt ist, ist FIPS aktiviert.

Screenshot: Bild des Registrierungs-Editors für die FIPS-Algorithmusrichtlinie und wie diese aktiviert wird

FIPS-fähige Knotenpools haben auch die Bezeichnung kubernetes.azure.com/fips_enabled=true, die von Bereitstellungen für diese Knotenpools verwendet werden können.

Updaten eines vorhandenen Knotenpools zum Aktivieren oder Deaktivieren des FIPS (Vorschau)

Vorhandene Knotenpools können upgedatet werden, um den FIPS zu aktivieren oder zu deaktivieren. Wenn Sie planen, Ihre Knotenpools von Nicht-FIPS zu FIPS zu migrieren, überprüfen Sie zuerst, ob Ihre Anwendung in einer Testumgebung ordnungsgemäß funktioniert, bevor Sie sie zu einer Produktionsumgebung migrieren. Durch das Überprüfen Ihrer Anwendung in einer Testumgebung sollten Sie Probleme verhindern können, die durch das Blockieren schwacher Verschlüsselungsverfahren bzw. -algorithmen durch den FIPS-Kernel verursacht werden (z. B. einen MD4-Algorithmus, der nicht FIPS-kompatibel ist).

Hinweis

Beim Updaten eines vorhandenen Linux-Knotenpools zum Aktivieren oder Deaktivieren des FIPS wechselt das Knotenpoolupdate zwischen dem FIPS-Image und dem Nicht-FIPS-Image. Dieses Knotenpoolupdate löst einen Reimagingvorgang aus, um das Update abzuschließen. Dies kann dazu führen, dass das Knotenpoolupdate einige Minuten dauert.

Voraussetzungen

  • Azure CLI, Version 2.64.0 oder höher. Führen Sie az --version aus, um die Version zu finden. Informationen zum Durchführen einer Installation oder eines Upgrades finden Sie bei Bedarf unter Installieren der Azure CLI.

Aktivieren des FIPS in einem vorhandenen Knotenpool

Vorhandene Linux-Knotenpools können upgedatet werden, um den FIPS zu deaktivieren. Wenn Sie einen vorhandenen Knotenpool updaten, ändert sich das Knotenimage vom aktuellen Image in das empfohlene FIPS-Image derselben Betriebssystem-SKU.

  1. Updaten Sie einen Knotenpool mit dem Befehl [az aks nodepool update][az-aks-nodepool-update] mit dem Parameter --enable-fips-image.

    az aks nodepool update \
        --resource-group myResourceGroup \
        --cluster-name myAKSCluster \
        --name np \
        --enable-fips-image
    

Mit dem obigen Befehl wird sofort ein Reimagingvorgang des Knotenpools ausgelöst, um das FIPS-kompatible Betriebssystem bereitzustellen. Dieser Reimagingvorgang wird während des Knotenpoolupdates durchgeführt. Es sind keine weiteren Schritte erforderlich.

  1. Vergewissern Sie sich, dass Ihr Knotenpool FIPS-fähig ist, indem Sie den Befehl az aks show und die Abfrage für den Wert enableFIPS in agentPoolProfiles verwenden.

    az aks show \
        --resource-group myResourceGroup \
        --name myAKSCluster \
        --query="agentPoolProfiles[].{Name:name enableFips:enableFips}" \
        -o table
    

    Die folgende Beispielausgabe zeigt, dass der Knotenpool np FIPS-fähig ist:

    Name       enableFips
    ---------  ------------
    np         True
    nodepool1  False  
    
  2. Listen Sie die Knoten mithilfe des Befehls „kubectl get nodes“ auf.

    kubectl get nodes
    

    Die folgende Beispielausgabe führt alle Knoten im Cluster auf. Die Knoten, deren Namen mit aks-np anfangen, sind Teil des FIPS-fähigen Knotenpools.

    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. Führen Sie mithilfe des Befehls „kubectl debug“ eine Bereitstellung bei einer interaktiven Sitzung auf einem dieser Knoten im FIPS-fähigen Knotenpool.

    kubectl debug node/aks-np-12345678-vmss000000 -it --image=mcr.microsoft.com/dotnet/runtime-deps:6.0
    
  4. Überprüfen Sie anhand der Ausgabe der interaktiven Sitzung, ob die FIPS-Kryptografiebibliotheken aktiviert wurden. Ihre Ausgabe sollte in etwa dem folgendem Beispiel entsprechen:

    root@aks-np-12345678-vmss000000:/# cat /proc/sys/crypto/fips_enabled
    1
    

FIPS-fähige Knotenpools haben auch die Bezeichnung kubernetes.azure.com/fips_enabled=true, die von Bereitstellungen für diese Knotenpools verwendet werden können.

Deaktivieren des FIPS in einem vorhandenen Knotenpool

Vorhandene Linux-Knotenpools können upgedatet werden, um den FIPS zu deaktivieren. Wenn Sie einen vorhandenen Knotenpool updaten, ändert sich das Knotenimage vom aktuellen FIPS-Image in das empfohlene Nicht-FIPS-Image derselben Betriebssystem-SKU. Die Knotenimageänderung tritt nach einem Reimagingvorgang auf.

  1. Updaten Sie einen Linux-Knotenpool mit dem Befehl [az aks nodepool update][az-aks-nodepool-update] mit dem Parameter --disable-fips-image.

    az aks nodepool update \
        --resource-group myResourceGroup \
        --cluster-name myAKSCluster \
        --name np \
        --disable-fips-image
    

Mit dem obigen Befehl wird sofort ein Reimagingvorgang des Knotenpools ausgelöst, um das FIPS-kompatible Betriebssystem bereitzustellen. Dieser Reimagingvorgang wird während des Knotenpoolupdates durchgeführt. Es sind keine weiteren Schritte erforderlich.

  1. Vergewissern Sie sich, dass Ihr Knotenpool nicht FIPS-fähig ist, indem Sie den Befehl az aks show und die Abfrage für den Wert enableFIPS in agentPoolProfiles verwenden.

    az aks show \
        --resource-group myResourceGroup \
        --name myAKSCluster \
        --query="agentPoolProfiles[].{Name:name enableFips:enableFips}" \
        -o table
    

    Die folgende Beispielausgabe zeigt, dass der Knotenpool np nicht FIPS-fähig ist:

    Name       enableFips
    ---------  ------------
    np         False
    nodepool1  False  
    

Nächste Schritte

Weitere Informationen zur AKS-Sicherheit finden Sie unter Bewährte Methoden für Clustersicherheit und Upgrades in Azure Kubernetes Service (AKS).