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. 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
- 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 a atualização de imagem de nó.
- As imagens de contêiner nos nós do FIPS não foram avaliadas para conformidade com o padrão FIPS.
- Ocorre uma falha na montagem de um compartilhamento CIFS porque o FIPS desabilita alguns módulos de autenticação. Para resolver esse problema, confira Erros ao montar um compartilhamento de arquivo em um pool de nós habilitado para FIPS.
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ã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.
Versões do sistema operacional com suporte
É possível 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 nós habilitados para FIPS. Após lançar uma nova versão do sistema operacional, normalmente há um período de espera antes de ele ficar em conformidade com o FIPS.
A tabela abaixo inclui as versões do sistema operacional com suporte:
Tipo de sistema operacional | 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 oferecer suporte ao FIPS, o AKS usará como padrão a versão mais recente do Ubuntu com suporte para FIPS. Por exemplo, o Ubuntu 22.04 é padrão para pools de nós do Linux. Como o 22.04 não oferece suporte atualmente ao FIPS, o AKS usa como padrão o Ubuntu 20.04 para pools de nós habilitados para Linux FIPS.
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 padrão FIPS
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 comandoaz 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.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
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
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
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
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
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
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
.Procure
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa\FIPSAlgorithmPolicy
no registro.Se o
Enabled
estiver definido como 1, o FIPS estará habilitado.
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 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. A validação do seu aplicativo em um ambiente de teste deve evitar problemas causados pelo kernel FIPS bloqueando alguma cifra fraca ou algoritmo de criptografia, como um 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 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.
Atualize um pool de nós usando o comando [
az aks nodepool update
][az-aks-nodepool-update] com o parâmetro--enable-fips-image
.az aks nodepool update \ --resource-group myResourceGroup \ --cluster-name myAKSCluster \ --name np \ --enable-fips-image
O comando acima aciona imediatamente uma nova imagem do pool de nós para implantar o sistema operacional compatível com FIPS. Essa recriação ocorre durante a atualização do pool de nós. Nenhuma etapa adicional é necessária.
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
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
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
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
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.
Atualize um pool de nós do Linux usando o comando [
az aks nodepool update
][az-aks-nodepool-update] com o parâmetro--disable-fips-image
.az aks nodepool update \ --resource-group myResourceGroup \ --cluster-name myAKSCluster \ --name np \ --disable-fips-image
O comando acima aciona imediatamente uma nova imagem do pool de nós para implantar o sistema operacional compatível com FIPS. Essa recriação ocorre durante a atualização do pool de nós. Nenhuma etapa adicional é necessária.
Verifique se o pool de nós não 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
O exemplo de saída a seguir mostra que o pool de nós np não está habilitado para FIPS:
Name enableFips --------- ------------ np False nodepool1 False
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).
Azure Kubernetes Service