Compartilhar via


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.

Cuidado

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

  • A partir de 17 de junho de 2025, o AKS não dará mais suporte ao Ubuntu 18.04. As imagens de nó existentes serão excluídas e o AKS não fornecerá mais atualizações de segurança. Você não poderá mais escalar seus pools de nós. Atualize os pools de nós para uma versão suportada do Kubernetes para migrar para uma versão do Ubuntu com suporte.
  • A partir de 17 de março de 2027, o AKS não dará mais suporte ao Ubuntu 20.04. As imagens de nó existentes serão excluídas e o AKS não fornecerá mais atualizações de segurança. Você não poderá mais escalar seus pools de nós. Atualize os pools de nós para a versão 1.34+ do Kubernetes a fim de migrar para uma versão do Ubuntu com suporte. Para obter mais informações sobre essa desativação, confira os Problemas do GitHub do AKS

Importante

A partir de 30 de novembro de 2025, o AKS (Serviço de Kubernetes do Azure) não dá mais suporte ou fornece atualizações de segurança para o Azure Linux 2.0. A imagem do nó do Azure no Linux 2.0 foi congelada na versão 202512.06.0. A partir de 31 de março de 2026, as imagens de nó serão removidas e não será possível escalar os grupos de nós. Migre para uma versão do Azure Linux com suporte atualizando os pools de nós para uma versão do Kubernetes com suporte ou migrando para o osSku AzureLinux3. Para obter mais informações, consulte [Desativação] Pools de nós do Azure Linux 2.0 no AKS.

Pré-requisitos

CLI do Azure versão 2.32.0 ou posterior instalada e configurada. Para saber qual é a versão, execute az --version. 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

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.

As imagens de nó habilitadas para FIPS podem ter números de versões 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.

Versões do sistema operacional com suporte

Você pode criar pools de nós habilitados para FIPS em todos os tipos de sistema operacional com suporte (Linux e Windows). No entanto, nem todas as versões do sistema operacional dão suporte a 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 de ser compatível com FIPS.

Esta tabela inclui as versões do sistema operacional com suporte:

Tipo de SO SKU do SO Conformidade do padrão FIPS
Linux Ubuntu Com suporte
Linux Azure Linux Com suporte
Windows Windows Server 2019 Com suporte
Windows Windows Server 2022 Com suporte

Ao solicitar o Ubuntu habilitado para FIPS, se a versão padrão do Ubuntu não der suporte ao FIPS, o AKS usará como padrão a versão mais recente com suporte para FIPS do Ubuntu. Por exemplo, o Ubuntu 22.04 é padrão para pools de nós do Linux. Como a 22.04 atualmente não dá suporte ao FIPS, o AKS usa como padrão o Ubuntu 20.04 para pools de nós habilitados para FIPS do Linux.

Observação

Anteriormente, você poderia usar a API GetOSOptions para determinar se um dado sistema operacional tinha suporte para FIPS. A API GetOSOptions agora foi preterida e não será mais incluída em novas versões da API do AKS a partir de 01/05/2024.

Criar um pool de nós do Linux habilitado para 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 --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 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.

    A captura de tela mostra a imagem do editor de registro para a Política de Algoritmo FIPS, sendo habilitada.

    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.

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ê planeja migrar seus pools de nós de ambientes que não usam FIPS para aqueles que usam FIPS, primeiro verifique se seu aplicativo funciona corretamente em um ambiente de teste apropriado 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 o algoritmo MD4, que não é compatível com FIPS.

Observação

Ao atualizar um pool de nós Linux existente para habilitar ou desabilitar o FIPS, a atualização do pool de nós se moverá entre a imagem fips e não-fips. Essa atualização do pool de nós acionará uma nova imagem 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 saber qual é a versão, execute az --version. Se você precisa instalar ou atualizar, consulte Instalar a CLI do Azure.

Habilitar o FIPS em um pool de nós existente

Os pools de nós Linux existentes podem ser atualizados para habilitar o FIPS. Ao atualizar um pool de nós existente, a imagem do nó mudará da imagem atual para a imagem FIPS recomendada do mesmo 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
    

    Esse comando dispara uma nova imagem do pool de nós imediatamente para implantar o sistema operacional compatível com FIPS. Essa criação de imagem ocorre durante a atualização do pool de nós. Nenhuma etapa adicional é necessária.

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

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

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

    Name       enableFips
    ---------  ------------
    np         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-np e 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 comando kubectl debug.

    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. Seu resultado deve ser semelhante ao seguinte exemplo de saída:

    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 kubernetes.azure.com/fips_enabled=true, que as implantações podem usar para direcionar esses pools de nós.

Desabilitar o FIPS em um pool de nós existente

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

  1. Atualize um pool de nós do 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
    

    Esse comando dispara uma nova imagem do pool de nós imediatamente para implantar o sistema operacional compatível com FIPS. Essa criação de imagem ocorre durante a atualização do pool de nós. Nenhuma etapa adicional é necessária.

  2. Verifique se o pool de nós não está habilitado para FIPS usando o comando e a consulta az aks show para 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

Transmita o sinalizador --message-of-the-day com a localização do arquivo para substituir a Mensagem do dia nos nós do Linux na 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ó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).