Service Mesh (ASM) oferece soluções flexíveis e eficientes para o gerenciamento de tráfego de saída, garantindo segurança, observabilidade e confiabilidade às aplicações. Este tópico descreve os recursos de gerenciamento de tráfego de saída do ASM e os benefícios de usar um egress gateway do ASM.
Recursos abrangentes de gerenciamento de tráfego de saída
O ASM fornece um conjunto rico de funcionalidades para gerenciar o tráfego de saída da camada 7, abrangendo roteamento de tráfego, observabilidade e segurança. Configure esses recursos conforme necessário.
Se uma aplicação iniciar diretamente uma solicitação HTTPS, o sidecar proxy correspondente só conseguirá processar essa solicitação como tráfego TLS comum, e os recursos da camada 7 do ASM não entrarão em vigor. Portanto, certifique-se de que as solicitações enviadas pela sua aplicação sejam solicitações HTTP em texto simples. O ASM encaminha diretamente as solicitações HTTP para serviços externos ou converte automaticamente as solicitações HTTP em HTTPS antes de enviá-las aos serviços externos, dependendo das suas configurações.
Roteamento de tráfego
Para acessar serviços HTTP fora de um cluster, configure as entradas de serviço correspondentes na service mesh. Isso permite utilizar recursos avançados em serviços virtuais, como espelhamento de tráfego de saída e roteamento de tráfego por proporção de saída. Caso acesse um serviço que utilize o protocolo HTTPS, também será necessário configurar uma DestinationRule. O recurso de roteamento de tráfego não exige um egress gateway do ASM.
Observação de tráfego de saída
Para solicitações em texto simples, observe o tráfego de saída por meio de logs, métricas e análise de rastreamento sem nenhuma configuração adicional. Se o tráfego da solicitação precisar ser criptografado, basta configurar uma entrada de serviço e uma DestinationRule. Quando a aplicação inicia uma solicitação em texto simples, o sidecar criptografa automaticamente o tráfego antes de encaminhá-lo. Dessa forma, você aproveita todas as capacidades de observabilidade da mesh. Esse recurso não requer um egress gateway do ASM.
Autenticação e autorização de tráfego de saída
O ASM também oferece recursos robustos de autenticação e autorização para tráfego de saída. Implemente funcionalidades avançadas de segurança no ASM, como verificação de JSON Web Tokens (JWTs) do tráfego de saída e restrição de acesso de clientes específicos com base em metadados de solicitação da camada 7 ou da camada 4. Esses recursos exigem um egress gateway do ASM. Para obter mais informações, consulte Modelos de segurança para tráfego de saída.
Modelos de segurança para tráfego de saída
Para tráfego TCP puro (tráfego não HTTP e não TLS), utilize políticas de rede nativas do Kubernetes para aumentar a segurança.
Ação padrão
A ação padrão é ALLOW_ANY, o que indica que o sidecar proxy não impõe restrições ao tráfego de saída. Nesse cenário, o comportamento do tráfego de saída fica totalmente descontrolado, resultando no nível mais baixo de segurança.
REGISTRY_ONLY
Ao ativar REGISTRY_ONLY, as aplicações acessam apenas os serviços registrados por meio de entradas de serviço.
Como os proprietários da aplicação têm permissão para alterar as configurações dos pods, eles podem usar vários métodos para fazer com que o tráfego de saída contorne o sidecar proxy. Se uma solicitação contornar o sidecar proxy, as restrições de acesso do REGISTRY_ONLY tornam-se inválidas, permitindo que a aplicação acesse serviços externos sem limitações. Por esse motivo, o REGISTRY_ONLY não é considerado uma política de segurança válida.
Além disso, essa solução restringe o acesso a serviços externos apenas para workloads em um namespace específico, não oferecendo controle granular para workloads individuais.
REGISTRY_ONLY e egress gateway
O egress gateway funciona como um limite de segurança ideal. Por ser uma implantação separada, o administrador da mesh controla totalmente o egress gateway. O proprietário da aplicação não tem controle direto sobre o egress gateway nem sobre suas políticas de segurança.
Além disso, garanta que apenas os nós onde o egress gateway está implantado possam acessar serviços externos, impedindo o acesso pelos demais nós. Os pods da aplicação não devem ter acesso direto à internet. Para enviar tráfego com sucesso a um serviço externo, o proprietário da aplicação deve assegurar que o tráfego de saída da aplicação seja processado pelo sidecar proxy e depois encaminhado ao egress gateway.
Após o tráfego ser encaminhado transparentemente para o egress gateway:
Configure políticas de autorização no egress gateway para implementar autorização refinada ou aplicar autorização personalizada.
Caso o serviço de destino seja HTTPS, configure um upgrade de HTTP para HTTPS no egress gateway. O egress gateway gerencia automaticamente as conexões HTTPS e pode multiplexá-las entre workloads para melhorar o desempenho.
Uso com Cloud Firewall
Ao utilizar o Cloud Firewall para restringir rigorosamente o tráfego de saída de uma VPC ou NAT Gateway, atribua um intervalo de endereços IP fixo e previsível aos pods do egress gateway do ASM e adicione esse intervalo à lista de permissões na política de firewall.
Para isso, assegure que os pods do egress gateway utilizem um segmento de endereço IP independente e exclusivo. Em um cluster ACK da Alibaba Cloud, escolha um dos dois métodos abaixo:
-
Utilize a Terway Container Network Interface (CNI) para atribuir endereços IP fixos aos pods (Recomendado).
Se o seu cluster ACK usar o modo de rede Terway, aproveite as capacidades nativas dele para atribuir endereços IP fixos aos pods do egress gateway e associá-los a um vSwitch e grupo de segurança independentes. Essa é a solução mais direta e concisa. Para obter mais informações, consulte Configurar um IP estático, vSwitch dedicado e grupo de segurança para um pod.
-
Use a rede do host (HostNetwork) para atribuir indiretamente endereços IP fixos aos pods.
Caso não seja possível usar o primeiro método, siga estas etapas para atribuir indiretamente o endereço IP do nó ao pod do egress gateway:
Crie um node pool exclusivo: Crie um node pool dedicado para o egress gateway. Certifique-se de que o intervalo de endereços IP desse node pool não se sobreponha aos intervalos de outros pods de aplicação no cluster. Para obter mais informações, consulte Criar e gerenciar um node pool.
Adicione taints aos nós: Aplique taints em todos os nós desse node pool para impedir que outros pods sejam agendados neles.
-
Configure o egress gateway: Modifique a configuração de implantação do egress gateway para:
Ative o modo de rede do host (
hostNetwork: true).Adicionar tolerations correspondentes para coincidir com os taints do node pool dedicado.
Configure afinidade para garantir que os pods sejam agendados neste node pool exclusivo.
Após concluir essas configurações, o pod do egress gateway usará o endereço IP do nó como endereço IP de saída. Em seguida, adicione o segmento de endereço IP do node pool exclusivo à lista de permissões do Cloud Firewall.
Referências
Utilize as políticas de tráfego de saída fornecidas pelo ASM para configurar rapidamente regras de tráfego destinadas a usar um egress gateway para acessar serviços fora de um cluster. Para obter mais informações, consulte Gerencie tráfego de saída com ASMEgressTrafficPolicy.