Partager via


Activer les normes FIPS (Federal Information Process Standard) pour les pools de nœuds Azure Kubernetes Service (AKS)

Le normes FIPS (Federal Information Processing Standard) 140-2 est une norme gouvernementale américaine qui définit les exigences de sécurité minimales pour les modules cryptographiques dans les produits et systèmes de technologies de l’information. Azure Kubernetes Service (AKS) vous permet de créer des pools de nœuds Linux et Windows compatibles avec la norme FIPS 140-2. Les déploiements s’exécutant sur des pools de nœuds compatibles FIPS peuvent utiliser ces modules cryptographiques pour fournir une sécurité accrue et aider à respecter les contrôles de sécurité dans le cadre de la conformité FedRAMP. Pour plus d’informations sur la norme FIPS 140-2, consultez Norme FIPS (Federal Information Processing Standard) 140.

Prérequis

  • Azure CLI version 2.32.0 ou ultérieure installé et configuré. Pour connaître la version de l’interface, exécutez az --version. Pour plus d'informations sur l'installation ou la mise à niveau de l’interface de ligne de commande Azure, consultez Installer Azure CLI.

Remarque

AKS Monitoring Addon prend en charge les pools de nœuds compatibles FIPS avec Ubuntu, Azure Linux et Windows à partir de la version de l'agent 3.1.17 (Linux) et Win-3.1.17 (Windows).

Limites

  • Les pools de nœuds compatibles FIPS présentent les limitations suivantes :

Important

L’image Linux compatible FIPS est une image différente de celle de l’image Linux par défaut utilisée pour les pools de nœuds basés sur Linux.

Les numéros de version des images de nœuds compatibles FIPS peuvent différents de ceux des images non compatibles FIPS, par exemple la version du noyau. Le cycle de mise à jour pour les pools de nœuds et les images de nœuds compatibles FIPS peut être différent de celui des pools de nœuds et des images non compatibles FIPS.

Versions des systèmes d’exploitation prise en charge

Vous pouvez créer des pools de nœuds compatibles FIPS sur tous les types de système d’exploitation pris en charge (Linux et Windows). Toutes les versions du système d’exploitation ne prennent néanmoins pas en charge les pools de nœuds compatibles FIPS. Une fois une nouvelle version du système d’exploitation publiée, il existe généralement une période d’attente avant qu’elle soit conforme à FIPS.

Le tableau ci-dessous contient les versions du système d’exploitation prises en charge :

Type de système d’exploitation Référence (SKU) du système d’exploitation Conformité aux normes FIPS
Linux Ubuntu Prise en charge
Linux Linux Azure Prise en charge
Windows Windows Server 2019 Prise en charge
Windows Windows Server 2022 Prise en charge

Lors d’une demande d’Ubuntu avec FIPS, si la version Ubuntu par défaut ne prend pas en charge FIPS, AKS est défini par défaut sur la version la plus récente d’Ubuntu prenant en charge par FIPS. Par exemple, Ubuntu 22.04 est le système d’exploitation par défaut pour les pools de nœuds Linux. La version 22.04 ne prenant actuellement pas en charge FIPS, AKS est défini par défaut sur Ubuntu 20.04 pour les pools de nœuds Linux avec FIPS.

Remarque

Auparavant, vous pouviez utiliser l’API GetOSOptions pour déterminer si un système d’exploitation donné est pris en charge par FIPS. L’API GetOSOptions est désormais déconseillée et n’est plus incluse dans les nouvelles versions de l’API AKS depuis le 01-05-2024.

Créer un pool de nœuds Linux compatible FIPS

  1. Créez un pool de nœuds Linux compatibles FIPS en utilisant la commande az aks nodepool add avec le paramètre --enable-fips-image.

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

    Notes

    Vous pouvez également utiliser le paramètre --enable-fips-image avec la commande az aks create lorsque vous créez un cluster pour activer FIPS sur le pool de nœuds par défaut. Lors de l’ajout de pools de nœuds à un cluster créé de cette façon, vous devez toujours utiliser le paramètre --enable-fips-image lors de l’ajout de pools de nœuds pour créer un pool de nœuds compatible FIPS.

  2. Vérifiez que votre pool de nœuds est compatible FIPS en utilisant la commande az aks show et recherchez la valeur de enableFIPS dans agentPoolProfiles.

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

    L’exemple de sortie suivant montre que le pool de nœuds fipsnp est compatible FIPS :

    Name       enableFips
    ---------  ------------
    fipsnp     True
    nodepool1  False  
    
  3. Listez les nœuds à l’aide de la commande kubectl get nodes.

    kubectl get nodes
    

    L’exemple de sortie suivant présente la liste des nœuds du cluster. Les nœuds commençant par aks-fipsnp font partie du pool de nœuds compatible 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. Exécutez un déploiement avec une session interactive sur l’un des nœuds du pool de nœuds compatible FIPS à l’aide de la commande kubectl debug.

    kubectl debug node/aks-fipsnp-12345678-vmss000000 -it --image=mcr.microsoft.com/dotnet/runtime-deps:6.0
    
  5. Dans la sortie de la session interactive, vérifiez que les bibliothèques de chiffrement FIPS sont activées. Vous devez obtenir un résultat semblable à l’exemple de sortie qui suit :

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

Les pools de nœuds compatibles FIPS présentent également une étiquette kubernetes.azure.com/fips_enabled=true, que les déploiements peuvent utiliser pour cibler ces pools de nœuds.

Créer un pool de nœuds Windows compatible FIPS

  1. Créez un pool de nœuds compatible FIPS en utilisant la commande az aks nodepool add avec le paramètre --enable-fips-image. Contrairement aux pools de nœuds Linux, les pools de nœuds Windows partagent le même ensemble d’images.

    az aks nodepool add \
        --resource-group myResourceGroup \
        --cluster-name myAKSCluster \
        --name fipsnp \
        --enable-fips-image \
        --os-type Windows
    
  2. Vérifiez que votre pool de nœuds est compatible FIPS en utilisant la commande az aks show et recherchez la valeur de enableFIPS dans agentPoolProfiles.

    az aks show \
        --resource-group myResourceGroup \
        --name myAKSCluster \
        --query="agentPoolProfiles[].{Name:name enableFips:enableFips}" \
        -o table
    
  3. Vérifiez que les pools de nœuds Windows ont accès aux bibliothèques de chiffrement FIPS en créant une connexion RDP à un nœud Windows dans un pool de nœuds compatible FIPS, puis vérifiez le registre. À partir de l’application Exécuter, entrez regedit.

  4. Recherchez HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa\FIPSAlgorithmPolicy dans le registre.

  5. Si Enabled est défini sur 1, FIPS est activé.

Capture d'écran montrant une image de l'éditeur de registre pour la politique d'algorithme FIPS et son activation.

Les pools de nœuds compatibles FIPS présentent également une étiquette kubernetes.azure.com/fips_enabled=true, que les déploiements peuvent utiliser pour cibler ces pools de nœuds.

Mettre à jour un pool de nœuds existant pour activer ou désactiver FIPS

Les pools de nœuds Linux existants peuvent être mis à jour pour activer ou désactiver FIPS. Si vous envisagez de migrer vos pools de nœuds de non FIPS vers FIPS, vérifiez d’abord que votre application fonctionne correctement dans un environnement de test avant de la migrer vers un environnement de production. La validation de votre application dans un environnement de test doit empêcher les problèmes causés par le noyau FIPS bloquant un algorithme de chiffrement faible, tel qu’un algorithme MD4 non conforme aux normes FIPS.

Remarque

Lors de la mise à jour d’un pool de nœuds Linux existant pour activer ou désactiver FIPS, la mise à jour du pool de nœuds se déplace entre l’image FIPS et non FIPS. Cette mise à jour du pool de nœuds déclenche une nouvelle image pour terminer la mise à jour. Cela peut retarder de quelques minutes la fin de la mise à jour du pool de nœuds.

Prérequis

  • Azure CLI version 2.64.0 ou ultérieure. Pour connaître la version de l’interface, exécutez az --version. Si vous devez installer ou mettre à niveau, voir Installer Azure CLI.

Activer FIPS sur un pool de nœuds existant

Les pools de nœuds Linux existants peuvent être mis à jour pour activer FIPS. Lorsque vous mettez à jour un pool de nœuds existant, l’image de nœud passe de l’image actuelle à l’image FIPS recommandée du même SKU de système d’exploitation.

  1. Mettez à jour un pool de nœuds à l’aide de la commande [az aks nodepool update][az-aks-nodepool-update] avec le paramètre --enable-fips-image.

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

La commande ci-dessus déclenche une réinitialisation du pool de nœuds immédiatement pour déployer le système d’exploitation conforme aux normes FIPS. Cette réinitialisation se produit pendant la mise à jour du pool de nœuds. Aucune étape supplémentaire n’est nécessaire.

  1. Vérifiez que votre pool de nœuds est compatible avec FIPS en utilisant la commande az aks show et recherchez la valeur de enableFIPS dans agentPoolProfiles.

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

    L’exemple de sortie suivant montre que le pool de nœuds np est compatible avec FIPS :

    Name       enableFips
    ---------  ------------
    np         True
    nodepool1  False  
    
  2. Listez les nœuds à l’aide de la commande kubectl get nodes.

    kubectl get nodes
    

    L’exemple de sortie suivant présente la liste des nœuds du cluster. Les nœuds commençant par aks-np font partie du pool de nœuds compatible 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. Exécutez un déploiement avec une session interactive sur l’un des nœuds du pool de nœuds compatible FIPS à l’aide de la commande kubectl debug.

    kubectl debug node/aks-np-12345678-vmss000000 -it --image=mcr.microsoft.com/dotnet/runtime-deps:6.0
    
  4. Dans la sortie de la session interactive, vérifiez que les bibliothèques de chiffrement FIPS sont activées. Vous devez obtenir un résultat semblable à l’exemple de sortie qui suit :

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

Les pools de nœuds compatibles FIPS présentent également une étiquette kubernetes.azure.com/fips_enabled=true, que les déploiements peuvent utiliser pour cibler ces pools de nœuds.

Désactiver FIPS sur un pool de nœuds existant

Les pools de nœuds Linux existants peuvent être mis à jour pour désactiver FIPS. Lors de la mise à jour d’un pool de nœuds existant, l’image de nœud passe de l’image actuelle FIPS à l’image non FIPS recommandée du même SKU de système d’exploitation. La modification de l’image de nœud se produit après une nouvelle image.

  1. Mettez à jour un pool de nœuds Linux à l’aide de la commande [az aks nodepool update][az-aks-nodepool-update] avec le paramètre --disable-fips-image.

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

La commande ci-dessus déclenche une réinitialisation du pool de nœuds immédiatement pour déployer le système d’exploitation conforme aux normes FIPS. Cette réinitialisation se produit pendant la mise à jour du pool de nœuds. Aucune étape supplémentaire n’est nécessaire.

  1. Vérifiez que votre pool de nœuds n’est pas compatible avec FIPS en utilisant la commande az aks show et recherchez la valeur de enableFIPS dans agentPoolProfiles.

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

    L’exemple de sortie suivant montre que le pool de nœuds np n’est pas compatible avec FIPS :

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

Étapes suivantes

Pour plus d’informations sur la sécurité AKS, consultez Meilleures pratiques relatives aux mises à niveau et à la sécurité du cluster dans Azure Kubernetes Service (AKS).