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.
Pré-requisitos
- Azure CLI versão 2.32.0 ou posterior instalado e configurado. Executar
az --version
para localizar a versão. 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 contêiner nos nós FIPS não foram avaliadas quanto à conformidade 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.
Importante
A imagem Linux habilitada para FIPS é uma imagem diferente da imagem Linux padrão 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, do que as imagens que não são habilitadas para FIPS. O ciclo de atualização para pools de nós habilitados para FIPS e imagens de nós pode diferir de pools de nós e imagens que não são habilitados para FIPS.
Versões de SO suportadas
Você pode criar pools de nós habilitados para FIPS em todos os tipos de sistema operacional suportados, Linux e Windows. No entanto, nem todas as versões do sistema operacional suportam nodepools habilitados para FIPS. Depois que uma nova versão do sistema operacional é lançada, normalmente há um período de espera antes que ele seja compatível com FIPS.
A tabela abaixo 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 assumirá 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 atualmente não suporta FIPS, o AKS assumirá como padrão o Ubuntu 20.04 para nodepools habilitados para FIPS 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
Crie um pool de nós Linux habilitado para FIPS usando o
az aks nodepool add
comando 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 oaz aks create
comando 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.Verifique se o pool de nós está habilitado para FIPS usando o comando e a
az aks show
consulta 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 fipsnp é habilitado para FIPS:
Name enableFips --------- ------------ fipsnp True nodepool1 False
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
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
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
Crie um pool de nós do Windows habilitado para FIPS usando o
az aks nodepool add
comando com o--enable-fips-image
parâmetro. 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 e a
az aks show
consulta para 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 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
.Procure
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa\FIPSAlgorithmPolicy
no registo.Se
Enabled
estiver definido como 1, o FIPS estará ativado.
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.
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).