Dela via


Aktivera FIPS (Federal Information Process Standard) för AKS-nodpooler (Azure Kubernetes Service)

Federal Information Processing Standard (FIPS) 140-2 är en standard för amerikanska myndigheter som anger de minsta säkerhetskraven för kryptografiska moduler i IT-produkter och -system. Med Azure Kubernetes Service (AKS) kan du skapa Linux- och Windows-nodpooler med FIPS 140-2 aktiverat. Distributioner som körs på FIPS-aktiverade nodpooler kan använda dessa kryptografiska moduler för att öka säkerheten och uppfylla säkerhetskontroller som en del av efterlevnaden av FedRAMP. Mer information om FIPS 140-2 finns i Federal Information Processing Standard (FIPS) 140.

Förutsättningar

  • Azure CLI version 2.32.0 eller senare installerad och konfigurerad. Kör az --version för att hitta versionen. Mer information om hur du installerar eller uppgraderar Azure CLI finns i Installera Azure CLI.

Kommentar

AKS Monitoring Addon stöder FIPS-aktiverade nodpooler med Ubuntu, Azure Linux och Windows från och med Agent version 3.1.17 (Linux) och Win-3.1.17 (Windows).

Begränsningar

  • FIPS-aktiverade nodpooler har följande begränsningar:
    • FIPS-aktiverade nodpooler kräver Kubernetes version 1.19 och senare.
    • Om du vill uppdatera de underliggande paketen eller modulerna som används för FIPS måste du använda Node Image Upgrade.
    • Containeravbildningar på FIPS-noderna har inte utvärderats för FIPS-efterlevnad.
    • Monteringen av en CIFS-resurs misslyckas eftersom FIPS inaktiverar vissa autentiseringsmoduler. Information om det här problemet finns i Fel vid montering av en filresurs i en FIPS-aktiverad nodpool.

Viktigt!

Den FIPS-aktiverade Linux-avbildningen är en annan avbildning än den Linux-standardbild som används för Linux-baserade nodpooler.

FIPS-aktiverade nodavbildningar kan ha olika versionsnummer, till exempel kernelversion, än bilder som inte är FIPS-aktiverade. Uppdateringscykeln för FIPS-aktiverade nodpooler och nodbilder kan skilja sig från nodpooler och avbildningar som inte är FIPS-aktiverade.

Operativsystemversioner som stöds

Du kan skapa FIPS-aktiverade nodpooler på alla operativsystemtyper som stöds, Linux och Windows. Alla OS-versioner stöder dock inte FIPS-aktiverade nodpooler. När en ny os-version har släppts finns det vanligtvis en väntetid innan den är FIPS-kompatibel.

Tabellen nedan innehåller operativsystemversioner som stöds:

Typ av operativsystem OS SKU FIPS-efterlevnad
Linux Ubuntu Stöds
Linux Azure Linux Stöds
Windows Windows Server 2019 Stöds
Windows Windows Server 2022 Stöds

När du begär FIPS-aktiverad Ubuntu, om standardversionen av Ubuntu inte stöder FIPS, kommer AKS som standard att vara den senaste FIPS-stödda versionen av Ubuntu. Ubuntu 22.04 är till exempel standard för Linux-nodpooler. Eftersom 22.04 för närvarande inte stöder FIPS, är AKS som standard Ubuntu 20.04 för Linux FIPS-aktiverade nodpooler.

Kommentar

Tidigare kunde du använda API:et GetOSOptions för att avgöra om ett visst OPERATIVSYSTEM som stöds av FIPS. Api:et GetOSOptions är nu inaktuellt och kommer inte längre att ingå i nya AKS API-versioner från och med 2024-05-01.

Skapa en FIPS-aktiverad Linux-nodpool

  1. Skapa en FIPS-aktiverad Linux-nodpool med kommandot az aks nodepool add med parametern --enable-fips-image .

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

    Kommentar

    Du kan också använda parametern --enable-fips-image az aks create med kommandot när du skapar ett kluster för att aktivera FIPS i standardnodpoolen. När du lägger till nodpooler i ett kluster som skapats på det här sättet måste du fortfarande använda parametern --enable-fips-image när du lägger till nodpooler för att skapa en FIPS-aktiverad nodpool.

  2. Kontrollera att nodpoolen är FIPS-aktiverad med kommandot az aks show och frågan för värdet enableFIPS i agentPoolProfiles.

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

    Följande exempelutdata visar att fipsnp-nodpoolen är FIPS-aktiverad:

    Name       enableFips
    ---------  ------------
    fipsnp     True
    nodepool1  False  
    
  3. Visa en lista över noderna med kommandot kubectl get nodes .

    kubectl get nodes
    

    Följande exempelutdata visar en lista över noderna i klustret. Noderna som börjar med aks-fipsnp ingår i den FIPS-aktiverade nodpoolen.

    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. Kör en distribution med en interaktiv session på en av noderna i den FIPS-aktiverade nodpoolen kubectl debug med kommandot .

    kubectl debug node/aks-fipsnp-12345678-vmss000000 -it --image=mcr.microsoft.com/dotnet/runtime-deps:6.0
    
  5. Kontrollera att FIPS kryptografiska bibliotek är aktiverade från den interaktiva sessionens utdata. Dina utdata bör se ut ungefär som följande exempelutdata:

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

FIPS-aktiverade nodpooler har också en kubernetes.azure.com/fips_enabled=true etikett, som distributioner kan använda för att rikta in sig på dessa nodpooler.

Skapa en FIPS-aktiverad Windows-nodpool

  1. Skapa en FIPS-aktiverad Windows-nodpool med kommandot az aks nodepool add med parametern --enable-fips-image . Till skillnad från Linux-baserade nodpooler delar Windows-nodpooler samma avbildningsuppsättning.

    az aks nodepool add \
        --resource-group myResourceGroup \
        --cluster-name myAKSCluster \
        --name fipsnp \
        --enable-fips-image \
        --os-type Windows
    
  2. Kontrollera att nodpoolen är FIPS-aktiverad med kommandot az aks show och frågan för värdet enableFIPS i agentPoolProfiles.

    az aks show \
        --resource-group myResourceGroup \
        --name myAKSCluster \
        --query="agentPoolProfiles[].{Name:name enableFips:enableFips}" \
        -o table
    
  3. Kontrollera att Windows-nodpooler har åtkomst till FIPS kryptografiska bibliotek genom att skapa en RDP-anslutning till en Windows-nod i en FIPS-aktiverad nodpool och kontrollera registret. Från kör-programmet anger du regedit.

  4. HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa\FIPSAlgorithmPolicy Leta efter i registret.

  5. Om Enabled är inställt på 1 aktiveras FIPS.

Skärmbild som visar en bild av registerredigeraren till FIPS-algoritmprincipen och den aktiveras.

FIPS-aktiverade nodpooler har också en kubernetes.azure.com/fips_enabled=true etikett, som distributioner kan använda för att rikta in sig på dessa nodpooler.

Uppdatera en befintlig nodpool för att aktivera eller inaktivera FIPS

Befintliga Linux-nodpooler kan uppdateras för att aktivera eller inaktivera FIPS. Om du planerar att migrera dina nodpooler från icke-FIPS till FIPS kontrollerar du först att programmet fungerar korrekt i en testmiljö innan du migrerar det till en produktionsmiljö. Validering av ditt program i en testmiljö bör förhindra problem som orsakas av att FIPS-kerneln blockerar vissa svaga chiffer- eller krypteringsalgoritmer, till exempel en MD4-algoritm som inte är FIPS-kompatibel.

Kommentar

När du uppdaterar en befintlig Linux-nodpool för att aktivera eller inaktivera FIPS flyttas nodpooluppdateringen mellan fips- och icke-fips-avbildningen. Den här uppdateringen av nodpoolen utlöser en återimering för att slutföra uppdateringen. Detta kan göra att det tar några minuter att uppdatera nodpoolen.

Förutsättningar

  • Azure CLI version 2.64.0 eller senare. Kör az --version för att hitta versionen. Om du behöver installera eller uppgradera kan du läsa Installera Azure CLI.

Aktivera FIPS i en befintlig nodpool

Befintliga Linux-nodpooler kan uppdateras för att aktivera FIPS. När du uppdaterar en befintlig nodpool ändras nodavbildningen från den aktuella avbildningen till den rekommenderade FIPS-avbildningen av samma OS SKU.

  1. Uppdatera en nodpool med kommandot [az aks nodepool update][az-aks-nodepool-update] med parametern --enable-fips-image .

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

Kommandot ovan utlöser en återimering av nodpoolen omedelbart för att distribuera DET FIPS-kompatibla operativsystemet. Den här omstarten sker under uppdateringen av nodpoolen. Inga ytterligare steg krävs.

  1. Kontrollera att nodpoolen är FIPS-aktiverad med kommandot az aks show och fråga efter värdet enableFIPS i agentPoolProfiles.

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

    Följande exempelutdata visar att np-nodpoolen är FIPS-aktiverad:

    Name       enableFips
    ---------  ------------
    np         True
    nodepool1  False  
    
  2. Visa en lista över noderna med kommandot kubectl get nodes .

    kubectl get nodes
    

    Följande exempelutdata visar en lista över noderna i klustret. Noderna som börjar med aks-np ingår i den FIPS-aktiverade nodpoolen.

    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. Kör en distribution med en interaktiv session på en av noderna i den FIPS-aktiverade nodpoolen kubectl debug med kommandot .

    kubectl debug node/aks-np-12345678-vmss000000 -it --image=mcr.microsoft.com/dotnet/runtime-deps:6.0
    
  4. Kontrollera att FIPS kryptografiska bibliotek är aktiverade från den interaktiva sessionens utdata. Dina utdata bör se ut ungefär som följande exempelutdata:

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

FIPS-aktiverade nodpooler har också en kubernetes.azure.com/fips_enabled=true etikett, som distributioner kan använda för att rikta in sig på dessa nodpooler.

Inaktivera FIPS i en befintlig nodpool

Befintliga Linux-nodpooler kan uppdateras för att inaktivera FIPS. När du uppdaterar en befintlig nodpool ändras nodavbildningen från den aktuella FIPS-avbildningen till den rekommenderade icke-FIPS-avbildningen av samma OS-SKU. Ändringen av nodbilden sker efter en ombildning.

  1. Uppdatera en Linux-nodpool med kommandot [az aks nodepool update][az-aks-nodepool-update] med parametern --disable-fips-image .

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

Kommandot ovan utlöser en återimering av nodpoolen omedelbart för att distribuera DET FIPS-kompatibla operativsystemet. Den här omstarten sker under uppdateringen av nodpoolen. Inga ytterligare steg krävs.

  1. Kontrollera att nodpoolen inte är FIPS-aktiverad med kommandot az aks show och fråga efter värdet enableFIPS i agentPoolProfiles.

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

    Följande exempelutdata visar att np-nodpoolen inte är FIPS-aktiverad:

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

Nästa steg

Mer information om AKS-säkerhet finns i Metodtips för klustersäkerhet och uppgraderingar i Azure Kubernetes Service (AKS).