Partilhar via


Habilitar o FIPS (Federal Information Process Standard) para pools de nós do Serviço Kubernetes do Azure (AKS)

O Federal Information Processing Standard (FIPS) 140-2 é uma norma do governo dos Estados Unidos que define os requisitos mínimos de segurança para módulos criptográficos nos produtos e sistemas das tecnologias de informação. O Serviço Kubernetes do Azure (AKS) permite criar pools de nós Linux e Windows com o FIPS 140-2 habilitado. As implementações em execução nos conjuntos de nós com o FIPS ativado podem utilizar esses módulos criptográficos para fornecer maior segurança e ajudar a satisfazer os controlos de segurança como parte da conformidade com o FedRAMP. Para obter mais informações sobre o FIPS 140-2, consulte Federal Information Processing Standard (FIPS) 140.

Atenção

Neste artigo, há referências a um recurso que pode estar usando versões do Ubuntu OS que estão sendo preteridas para o AKS.

  • A partir de 17 de junho de 2025, o AKS não suportará mais o Ubuntu 18.04. As imagens de nó existentes serão eliminadas e o AKS deixará de fornecer atualizações de segurança. Você não vai mais poder dimensionar os seus pools de nós. Atualize os seus pools de nós para uma versão de Kubernetes suportada, para migrar para uma versão suportada do Ubuntu.
  • A partir de 17 de março de 2027, o AKS não suportará mais o Ubuntu 20.04. As imagens de nó existentes serão eliminadas e o AKS deixará de fornecer atualizações de segurança. Você não vai mais poder dimensionar os seus pools de nós. Atualize os seus grupos de nós para a Kubernetes versão 1.34+ para migrar para uma versão suportada do Ubuntu. Para obter mais informações sobre essa aposentadoria, consulte Problemas do AKS GitHub

Pré-requisitos

Azure CLI versão 2.32.0 ou posterior instalado e configurado. Para localizar a versão, execute az --version. Para obter mais informações sobre como instalar ou atualizar a CLI do Azure, consulte Instalar a CLI do Azure.

Nota

O AKS Monitoring Addon suporta pools de nós habilitados para FIPS com Ubuntu, Azure Linux e Windows a partir da 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:
    • Os pools de nós habilitados para FIPS exigem o Kubernetes versão 1.19 e superior.
    • Para atualizar os pacotes ou módulos subjacentes usados para FIPS, você deve usar o Node Image Upgrade.
    • As imagens de contentores nos nós FIPS não são avaliadas quanto à compatibilidade com FIPS.
    • A montagem de um compartilhamento CIFS falha porque o FIPS desabilita alguns módulos de autenticação. Para contornar esse problema, consulte Erros ao montar um compartilhamento de arquivos em um pool de nós habilitado para FIPS.
    • Os pools de nós habilitados para FIPS com VMs Arm64 só são suportados com o Azure Linux 3.0+.

Importante

A imagem Linux habilitada para FIPS é uma imagem diferente da imagem Linux padrão usada para pools de nós baseados em Linux.

Imagens de nó com suporte FIPS podem ter números de versão diferentes, como a versão do kernel, em comparação com imagens sem suporte FIPS. O ciclo de atualização para pools de nós com FIPS habilitado e imagens de nós pode diferir em relação aos pools de nós e imagens que não têm FIPS habilitado.

Versões de SO suportadas

Você pode criar pools de nós com suporte FIPS em todos os tipos de sistema operativo suportados (Linux e Windows). No entanto, nem todas as versões do sistema operacional suportam pools de nós habilitados para FIPS. Depois que uma nova versão do sistema operacional é lançada, normalmente há um período de espera antes que ela seja compatível com FIPS.

Esta tabela inclui as versões de SO suportadas:

Tipo de SO OS SKU Conformidade com FIPS
Linux Ubuntu Suportado
Linux Azure Linux Suportado
Windows Windows Server 2019 Suportado
Windows Windows Server 2022 Suportado

Ao solicitar o Ubuntu habilitado para FIPS, se a versão padrão do Ubuntu não suportar FIPS, o AKS assume como padrão a versão mais recente suportada pelo FIPS do Ubuntu. Por exemplo, o Ubuntu 22.04 é padrão para pools de nós do Linux. Como o 22.04 não suporta FIPS atualmente, o AKS assume como padrão o Ubuntu 20.04 para pools de nós habilitados para FIPS do Linux.

Nota

Anteriormente, você podia usar a API GetOSOptions para determinar se um determinado sistema operacional suportava FIPS. A API GetOSOptions agora foi preterida e não será mais incluída nas novas versões da API AKS a partir de 2024-05-01.

Criar um pool de nós Linux habilitado para FIPS

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

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

    Nota

    Você também pode usar o --enable-fips-image parâmetro 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 --enable-fips-image parâmetro 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 é habilitado para FIPS:

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

    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 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 kubectl debug comando.

    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. Sua saída deve ser semelhante à saída de exemplo a seguir:

    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 de 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 FIPS

  1. Crie um pool de nós do Windows com suporte 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 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, digite regedit.

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

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

    A captura de tela mostra uma imagem do editor do Registro para a Política de Algoritmo FIPS e ela está sendo ativada.

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

Atualizar um pool de nós existente para habilitar ou desabilitar o FIPS

Os pools de nós Linux existentes podem ser atualizados para habilitar ou desabilitar o FIPS. Se você estiver planejando migrar seus pools de nós de não-FIPS para FIPS, primeiro valide se seu aplicativo está funcionando corretamente em um ambiente de teste antes de migrá-lo para um ambiente de produção. Validar seu aplicativo em um ambiente de teste deve evitar problemas causados pelo kernel FIPS bloqueando algum algoritmo de cifra ou criptografia fraco, como um algoritmo MD4 que não é compatível com FIPS.

Nota

Ao atualizar um pool de nós Linux existente para ativar ou desativar o FIPS, a atualização do pool de nós altera entre a imagem FIPS e a imagem não-FIPS. Esta atualização do pool de nós aciona uma reimagem para concluir a atualização. Isso pode fazer com que a atualização do pool de nós demore alguns minutos para ser concluída.

Pré-requisitos

CLI do Azure versão 2.64.0 ou posterior. Para localizar a versão, execute az --version. Se precisar de instalar ou atualizar, veja Install Azure CLI (Instalar o Azure CLI).

Habilitar FIPS em um pool de nós existente

Os pools de nós Linux existentes podem ser atualizados para habilitar o FIPS. Quando você atualiza um pool de nós existente, a imagem do nó muda da imagem atual para a imagem FIPS recomendada da mesma SKU do sistema operacional.

  1. Atualize um pool de nós usando o comando az aks nodepool update com o --enable-fips-image parâmetro.

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

    Este comando dispara uma nova imagem do pool de nós imediatamente para implantar o sistema operacional compatível com FIPS. Essa nova imagem ocorre durante a atualização do pool de nós. Não são necessárias etapas adicionais.

  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 np é habilitado para FIPS:

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

    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-np fazem parte do pool de nós habilitado para 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
    
  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 kubectl debug comando.

    kubectl debug node/aks-np-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. Sua saída deve ser semelhante à saída de exemplo a seguir:

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

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

Desabilitar FIPS em um pool de nós existente

Os pools de nós Linux existentes podem ser atualizados para desativar o FIPS. Ao atualizar um pool de nós existente, a imagem do nó muda da imagem FIPS atual para a imagem não-FIPS recomendada da mesma SKU do sistema operacional. A alteração da imagem do nó ocorrerá após uma nova imagem.

  1. Atualize um pool de nós Linux usando o comando az aks nodepool update com o --disable-fips-image parâmetro.

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

    Este comando dispara uma nova imagem do pool de nós imediatamente para implantar o sistema operacional compatível com FIPS. Essa nova imagem ocorre durante a atualização do pool de nós. Não são necessárias etapas adicionais.

  2. Verifique se o seu pool de nós não está configurado com FIPS usando o comando az aks show e verifique 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 np não está habilitado para FIPS:

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

Mensagem do Dia

Passe o sinalizador --message-of-the-day com a localização do ficheiro para substituir a Mensagem do Dia nos nós Linux durante a criação do cluster ou do pool de nós.

Crie um cluster com a mensagem do dia usando o comando az aks create .

az aks create --cluster-name myAKSCluster --resource-group myResourceGroup --message-of-the-day ./newMOTD.txt

Adicione um pool de nós com a mensagem do dia usando o comando az aks nodepool add.

az aks nodepool add --name mynodepool1 --cluster-name myAKSCluster --resource-group myResourceGroup --message-of-the-day ./newMOTD.txt

Próximos passos

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