Habilitar o padrão FIPS para pools de nós do AKS (Serviço de Kubernetes do Azure)

O padrão FIPS (FIPS) 140-2 é um padrão do governo dos EUA que define os requisitos mínimos de segurança para módulos de criptografia em sistemas e produtos de tecnologia da informação. O AKS (Serviço de Kubernetes do Azure) permite criar pools de nós do Linux e do Windows com o padrão FIPS 140-2 habilitado. As implantações executadas em pools de nós habilitados para FIPS podem usar esses módulos de criptografia para fornecer maior segurança e ajudar a atender aos controles de segurança como parte da conformidade do FedRAMP. Para obter mais informações sobre o padrão FIPS 140-2, confira Padrão FIPS 140.

Pré-requisitos

  • CLI do Azure versão 2.32.0 ou posterior instalada e configurada. Execute az --version para encontrar a versão. Para obter informações sobre como instalar ou atualizar a CLI do Azure, confira Instalar a CLI do Azure.

Observação

O Suplemento de Monitoramento do AKS dá suporte a pools de nós habilitados para FIPS com Ubuntu, Azure Linux e Windows, começando com o Agente versão 3.1.17 (Linux) e Win-3.1.17 (Windows).

Limitações

  • Os pools de nós habilitados para FIPS têm as seguintes limitações:

Importante

A imagem do Linux habilitada para FIPS é uma imagem diferente da imagem padrão do Linux usada para pools de nós baseados em Linux. Para habilitar o FIPS em um pool de nós, você deve criar um novo pool de nós baseado em Linux. Não é possível habilitar o FIPS em pools de nós existentes.

As imagens de nó habilitadas para FIPS podem ter números de versão diferentes, como a versão do kernel, além das imagens que não são habilitadas para FIPS. O ciclo de atualização para pools de nós e imagens de nós habilitados para FIPS pode diferir dos pools de nós e imagens que não são habilitados para FIPS.

Criar um pool de nós do Linux habilitado para padrão FIPS

  1. Crie um pool de nós do Linux habilitado para FIPS usando o comando az aks nodepool add com o parâmetro --enable-fips-image.

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

    Observação

    Você também pode usar o parâmetro --enable-fips-image com o comando az aks create ao criar um cluster para habilitar o FIPS no pool de nós padrão. Ao adicionar pools de nós a um cluster criado dessa maneira, você ainda deve usar o parâmetro --enable-fips-image ao adicionar pools de nós para criar um pool de nós habilitado para FIPS.

  2. Verifique se o pool de nós está habilitado para FIPS usando o comando az aks show e consulte o valor enableFIPS em agentPoolProfiles.

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

    A saída de exemplo a seguir mostra que o pool de nós fipsnp está habilitado para FIPS:

    Name       enableFips
    ---------  ------------
    fipsnp     True
    nodepool1  False  
    
  3. Liste os nós usando o comando kubectl get nodes.

    kubectl get nodes
    

    A saída de exemplo a seguir mostra uma lista dos nós no cluster. Os nós que começam com aks-fipsnp e fazem parte do pool de nós habilitado para 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. Execute uma implantação com uma sessão interativa em um dos nós no pool de nós habilitado para FIPS usando o comando kubectl debug.

    kubectl debug node/aks-fipsnp-12345678-vmss000000 -it --image=mcr.microsoft.com/dotnet/runtime-deps:6.0
    
  5. Na saída da sessão interativa, verifique se as bibliotecas criptográficas FIPS estão habilitadas. Seu resultado deve ser semelhante ao seguinte exemplo de saída:

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

Os pools de nós habilitados para FIPS também têm um rótulo kubernetes.azure.com/fips_enabled=true, que as implantações podem usar para direcionar esses pools de nós.

Criar um pool de nós do Windows habilitado para padrão FIPS

  1. Crie um pool de nós do Windows habilitado para FIPS usando o comando az aks nodepool add com o parâmetro --enable-fips-image. Ao contrário dos pools de nós baseados em Linux, os pools de nós do Windows compartilham o mesmo conjunto de imagens.

    az aks nodepool add \
        --resource-group myResourceGroup \
        --cluster-name myAKSCluster \
        --name fipsnp \
        --enable-fips-image \
        --os-type Windows
    
  2. Verifique se o pool de nós está habilitado para FIPS usando o comando az aks show e consulte o valor enableFIPS em agentPoolProfiles.

    az aks show \
        --resource-group myResourceGroup \
        --name myAKSCluster \
        --query="agentPoolProfiles[].{Name:name enableFips:enableFips}" \
        -o table
    
  3. Verifique se os pools de nós do Windows têm acesso às bibliotecas criptográficas do FIPS criando uma conexão RDP com um nó do Windows em um pool de nós habilitado para FIPS e verifique o registro. No aplicativo Executar, insira regedit.

  4. Procure HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa\FIPSAlgorithmPolicy no registro.

  5. Se o Enabled estiver definido como 1, o FIPS estará habilitado.

Screenshot shows a picture of the registry editor to the FIPS Algorithm Policy, and it being enabled.

Os pools de nós habilitados para FIPS também têm um rótulo kubernetes.azure.com/fips_enabled=true, que as implantações podem usar para direcionar esses pools de nós.

Próximas etapas

Para saber mais sobre a segurança do AKS, confira Melhores práticas para segurança de cluster e atualizações no AKS (Serviço de Kubernetes do Azure).