Share via


Abilitare Federal Information Process Standard (FIPS) per i pool di nodi servizio Azure Kubernetes (AKS)

FIPS (Federal Information Processing Standard) 140-2 è uno standard del Governo degli Stati Uniti che definisce i requisiti di sicurezza minimi per i moduli crittografici nei prodotti e nei sistemi informatici. servizio Azure Kubernetes (servizio Azure Kubernetes) consente di creare pool di nodi Linux e Windows con FIPS 140-2 abilitato. Le distribuzioni in esecuzione nei pool di nodi con abilitazione di FIPS possono usare tali moduli crittografici per fornire maggiore sicurezza e contribuire al rispetto dei controlli di sicurezza come parte della conformità a FedRAMP. Per altre informazioni su FIPS 140-2, vedere Federal Information Processing Standard (FIPS) 140.

Prerequisiti

  • Interfaccia della riga di comando di Azure versione 2.32.0 o successiva installata e configurata. Eseguire az --version per trovare la versione. Per altre informazioni sull'installazione o l'aggiornamento dell'interfaccia della riga di comando di Azure, vedere Installare l'interfaccia della riga di comando di Azure.

Nota

Il componente aggiuntivo di monitoraggio del servizio Azure Kubernetes supporta i pool di nodi abilitati per FIPS con Ubuntu, Azure Linux e Windows a partire da Agent versione 3.1.17 (Linux) e Win-3.1.17 (Windows).

Limiti

  • I pool di nodi abilitati per FIPS presentano le limitazioni seguenti:
    • I pool di nodi abilitati per FIPS richiedono Kubernetes versione 1.19 e successive.
    • Per aggiornare i pacchetti o i moduli sottostanti usati per FIPS, è necessario usare l'aggiornamento dell'immagine del nodo.
    • Le immagini del contenitore nei nodi FIPS non sono state valutate per la conformità FIPS.
    • Il montaggio di una condivisione CIFS non riesce perché FIPS disabilita alcuni moduli di autenticazione. Per risolvere questo problema, vedere Errori durante il montaggio di una condivisione file in un pool di nodi abilitato per FIPS.

Importante

L'immagine Linux abilitata per FIPS è un'immagine diversa rispetto all'immagine Linux predefinita usata per i pool di nodi basati su Linux. Per abilitare FIPS in un pool di nodi, è necessario creare un nuovo pool di nodi basato su Linux. Non è possibile abilitare FIPS nei pool di nodi esistenti.

Le immagini dei nodi abilitate per FIPS possono avere numeri di versione diversi, ad esempio la versione del kernel, rispetto alle immagini non abilitate per FIPS. Il ciclo di aggiornamento per i pool di nodi abilitati per FIPS e le immagini dei nodi possono differire da pool di nodi e immagini non abilitati per FIPS.

Versioni del sistema operativo supportate

È possibile creare pool di nodi abilitati per FIPS in tutti i tipi di sistema operativo supportati, Linux e Windows. Tuttavia, non tutte le versioni del sistema operativo supportano pool di nodi abilitati per FIPS. Dopo il rilascio di una nuova versione del sistema operativo, è in genere previsto un periodo di attesa prima che sia conforme a FIPS.

La tabella seguente include le versioni del sistema operativo supportate:

OS Type (Tipo di sistema operativo) SKU sistema operativo Conformità FIPS
Linux Ubuntu Supportata
Linux Azure Linux Supportata
Windows Windows Server 2019 Supportata
Windows Windows Server 2022 Supportata

Quando si richiede Ubuntu abilitato per FIPS, se la versione predefinita di Ubuntu non supporta FIPS, per impostazione predefinita il servizio Azure Kubernetes sarà la versione fips supportata più recente di Ubuntu. Ad esempio, Ubuntu 22.04 è l'impostazione predefinita per i pool di nodi Linux. Poiché la versione 22.04 attualmente non supporta FIPS, per impostazione predefinita il servizio Azure Kubernetes sarà Ubuntu 20.04 per i pool di nodi abilitati per Linux FIPS.

Nota

In precedenza, è possibile usare l'API GetOSOptions per determinare se un determinato sistema operativo supporta FIPS. L'API GetOSOptions è ora deprecata e non verrà più inclusa nelle nuove versioni dell'API del servizio Azure Kubernetes a partire dalla versione 2024-05-01.

Creare un pool di nodi Linux abilitato per FIPS

  1. Creare un pool di nodi Linux abilitato per FIPS usando il az aks nodepool add comando con il --enable-fips-image parametro .

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

    Nota

    È anche possibile usare il --enable-fips-image parametro con il az aks create comando quando si crea un cluster per abilitare FIPS nel pool di nodi predefinito. Quando si aggiungono pool di nodi a un cluster creato in questo modo, è comunque necessario usare il --enable-fips-image parametro quando si aggiungono pool di nodi per creare un pool di nodi abilitato per FIPS.

  2. Verificare che il pool di nodi sia abilitato per FIPS usando il az aks show comando e la query per il valore enableFIPS in agentPoolProfiles.

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

    L'output di esempio seguente mostra che il pool di nodi fipsnp è abilitato per FIPS:

    Name       enableFips
    ---------  ------------
    fipsnp     True
    nodepool1  False  
    
  3. Elencare i nodi usando il kubectl get nodes comando .

    kubectl get nodes
    

    L'output di esempio seguente mostra un elenco dei nodi nel cluster. I nodi che iniziano con aks-fipsnp fanno parte del pool di nodi abilitato per 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. Eseguire una distribuzione con una sessione interattiva in uno dei nodi nel pool di nodi abilitato per FIPS usando il kubectl debug comando .

    kubectl debug node/aks-fipsnp-12345678-vmss000000 -it --image=mcr.microsoft.com/dotnet/runtime-deps:6.0
    
  5. Dall'output interattivo della sessione verificare che le librerie di crittografia FIPS siano abilitate. L'output dovrebbe essere simile all'esempio di output seguente:

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

I pool di nodi abilitati per FIPS hanno anche un'etichetta kubernetes.azure.com/fips_enabled=true , che le distribuzioni possono usare per indirizzare tali pool di nodi.

Creare un pool di nodi Windows abilitato per FIPS

  1. Creare un pool di nodi Windows abilitato per FIPS usando il az aks nodepool add comando con il --enable-fips-image parametro . A differenza dei pool di nodi basati su Linux, i pool di nodi Windows condividono lo stesso set di immagini.

    az aks nodepool add \
        --resource-group myResourceGroup \
        --cluster-name myAKSCluster \
        --name fipsnp \
        --enable-fips-image \
        --os-type Windows
    
  2. Verificare che il pool di nodi sia abilitato per FIPS usando il az aks show comando e la query per il valore enableFIPS in agentPoolProfiles.

    az aks show \
        --resource-group myResourceGroup \
        --name myAKSCluster \
        --query="agentPoolProfiles[].{Name:name enableFips:enableFips}" \
        -o table
    
  3. Verificare che i pool di nodi di Windows abbiano accesso alle librerie di crittografia FIPS creando una connessione RDP a un nodo Windows in un pool di nodi abilitato per FIPS e controllando il Registro di sistema. Nell'applicazione Esegui immettere regedit.

  4. HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa\FIPSAlgorithmPolicy Cercare nel Registro di sistema.

  5. Se Enabled è impostato su 1, FIPS è abilitato.

Screenshot che mostra un'immagine dell'editor del Registro di sistema per i criteri dell'algoritmo FIPS e che è abilitata.

I pool di nodi abilitati per FIPS hanno anche un'etichetta kubernetes.azure.com/fips_enabled=true , che le distribuzioni possono usare per indirizzare tali pool di nodi.

Passaggi successivi

Per altre informazioni sulla sicurezza del servizio Azure Kubernetes, vedere Procedure consigliate per la sicurezza e gli aggiornamenti del cluster in servizio Azure Kubernetes (servizio Azure Kubernetes).