Encriptação em trânsito com WireGuard

À medida que as organizações dependem cada vez mais do Azure Kubernetes Service (AKS) para executar cargas de trabalho containerizadas, garantir a segurança do tráfego de rede entre aplicações e serviços torna-se essencial, especialmente em ambientes regulados ou sensíveis à segurança. A criptografia em trânsito com o WireGuard protege os dados à medida que se movem entre pods e nós, reduzindo os riscos de intercetação ou adulteração. O WireGuard é conhecido por sua simplicidade e criptografia robusta, oferecendo uma solução poderosa para proteger a comunicação dentro de clusters AKS.

A encriptação WireGuard para AKS faz parte do conjunto de funcionalidades Advanced Container Networking Services, e a sua implementação baseia-se no Cilium.

Escopo de criptografia do WireGuard

A criptografia em trânsito do WireGuard no AKS foi projetada para proteger fluxos de tráfego específicos dentro do cluster Kubernetes. Esta secção descreve quais os tipos de tráfego encriptados e quais não são atualmente suportados através dos Serviços Avançados de Rede de Contentores.

Fluxos de tráfego suportados/encriptados:

  • Tráfego de pod entre nós: tráfego que sai de um pod de um nó destinado a um pod em outro nó.

Fluxos de tráfego não suportados/não encriptados

  • Tráfego de pods do mesmo nó: tráfego entre pods no mesmo nó
  • Tráfego de nó-rede: tráfego gerado pelo próprio nó para outro nó

Visão geral da arquitetura

A encriptação WireGuard baseia-se no Azure CNI alimentado pelo Cilium para garantir comunicações entre nós dentro de um sistema distribuído. A arquitetura usa um agente WireGuard dedicado que orquestra o gerenciamento de chaves, a configuração da interface e as atualizações dinâmicas de pares. Esta secção tenta fornecer uma explicação detalhada

Diagrama do projeto WireGuard.

Agente WireGuard

Após a inicialização, o agente Cilium avalia sua configuração para determinar se a criptografia está habilitada. Quando o WireGuard é selecionado como o modo de criptografia, o agente inicializa um subsistema WireGuard dedicado. O agente wireguard é responsável por configurar e inicializar os componentes necessários para aplicar a criptografia do WireGuard.

Geração de chaves

Um requisito fundamental para proteger a comunicação é a geração de pares de chaves criptográficas. Cada nó no cluster do Kubernetes gerará automaticamente um par de chaves WireGuard exclusivo durante a fase de inicialização e distribuirá a sua chave pública por meio da anotação 'network.cilium.io/wg-pub-key' no objeto de recurso personalizado CiliumNode do Kubernetes. Os pares de chaves são armazenados na memória e rodados a cada 120 segundos. A chave privada serve como identidade confidencial do nó. A chave pública é compartilhada com os nós pares no cluster para decifrar e cifrar o tráfego de e para os endpoints geridos pelo Cilium em execução nesse nó. Estas chaves são geridas inteiramente pela Azure, e não pelo cliente, garantindo um tratamento seguro e automatizado sem necessidade de intervenção manual. Esse mecanismo garante que apenas nós com credenciais validadas possam participar da rede criptografada.

Criação de interfaces

Quando o processo de geração de chaves é concluído, o agente WireGuard configura uma interface de rede dedicada (cilium_wg0). Este processo envolve a criação e configuração da interface com a chave privada gerada anteriormente.

Comparação com criptografia de rede virtual

Azure oferece múltiplas opções para proteger o tráfego em trânsito em AKS, incluindo encriptação virtual a nível de rede e encriptação baseada em WireGuard. Embora ambas as abordagens melhorem a confidencialidade e a integridade do tráfego de rede, elas diferem em escopo, flexibilidade e requisitos de implantação. Esta secção ajuda-o a compreender quando utilizar cada solução.

Utilize a criptografia de redes virtuais quando

  • Requer encriptação total na camada de rede para todo o tráfego dentro da rede virtual: A encriptação da rede virtual garante que todo o tráfego, independentemente da carga de trabalho ou camada de orquestração, é automaticamente encriptado à medida que percorre a Azure Virtual Network.

  • Você precisa de uma sobrecarga de desempenho mínima: A criptografia de rede virtual usa aceleração de hardware em SKUs de VM suportadas, descarregando a criptografia do sistema operacional para o hardware subjacente. Este design oferece alta taxa de transferência com baixo uso da CPU.

  • Todas as suas máquinas virtuais suportam encriptação de rede virtual: A criptografia de rede virtual depende de SKUs de VM que suportam a aceleração de hardware necessária. Se a sua infraestrutura consistir inteiramente em SKUs suportados, a criptografia de rede virtual pode ser perfeitamente habilitada.

  • As suas configurações de rede AKS suportam encriptação de rede virtual: A criptografia de rede virtual tem algumas limitações quando se trata de rede aks pod. Para obter mais informações, consulte Cenários suportados pela criptografia de rede virtual

Utilize a criptografia WireGuard quando

  • Você deseja garantir que o tráfego da sua aplicação seja criptografado através de todos os nós A criptografia em redes virtuais não criptografa o tráfego entre nós que estão no mesmo host físico.

  • Você deseja unificar a criptografia em ambientes multinuvem ou híbridos: O WireGuard oferece uma solução independente da nuvem, permitindo criptografia consistente entre clusters executados em diferentes provedores de nuvem ou no local.

  • Você não precisa ou deseja criptografar todo o tráfego dentro da rede virtual: O WireGuard permite uma estratégia de criptografia mais direcionada, ideal para proteger cargas de trabalho confidenciais sem incorrer na sobrecarga de criptografar todo o tráfego.

  • Algumas das suas SKUs de VM não suportam encriptação de rede virtual: O WireGuard é implementado em software e funciona independentemente do suporte de hardware de VM, tornando-se uma opção prática para ambientes heterogêneos.

Considerações & limitações

• O WireGuard não é compatível com FIPS . • A encriptação WireGuard não se aplica a pods que utilizam rede host (spec.hostNetwork: true) porque esses pods usam a identidade do host em vez de terem identidades individuais.

Importante

A criptografia WireGuard opera no nível do software, o que pode introduzir latência e afetar o desempenho da taxa de transferência. A extensão desse impacto depende de vários fatores, incluindo o tamanho da VM (SKU do nó), a configuração da rede e os padrões de tráfego do aplicativo. Nosso benchmarking indica que a taxa de transferência é limitada a 1,5 Gbps com uma MTU de 1500; no entanto, os resultados podem variar dependendo das características da carga de trabalho e da configuração do cluster. O uso de uma SKU que suporta MTU 3900 resultou em uma taxa de transferência aproximadamente 2,5x maior. Embora a criptografia do WireGuard possa ser usada junto com as políticas de rede, isso pode levar a uma degradação adicional do desempenho, com taxa de transferência reduzida e latência aumentada. Para aplicativos sensíveis à latência ou à taxa de transferência, é altamente recomendável avaliar primeiro o WireGuard em um ambiente que não seja de produção. Como sempre, os resultados podem variar com base nas características da carga de trabalho e na configuração do cluster.

Pricing

Importante

Advanced Container Networking Services é uma oferta paga. Para obter mais informações sobre preços, consulte Advanced Container Networking Services - Pricing.

Próximos passos