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
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-image
Parameter 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.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
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
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
Ü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
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
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
Ü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.Suchen Sie in der Registrierung nach
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa\FIPSAlgorithmPolicy
.Wenn
Enabled
auf 1 festgelegt ist, ist FIPS aktiviert.
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.
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.
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
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
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
Ü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.
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.
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).
Azure Kubernetes Service