Este documento explica os principais conceitos de segurança de rede do GKE, como o princípio de privilégio mínimo, e ajuda você a escolher as ferramentas certas para proteger seu cluster. Os principais objetivos da implementação da segurança de rede do GKE são o isolamento da carga de trabalho e a multilocação segura. Para atingir esses objetivos, aplique os princípios de privilégio mínimo e defesa em profundidade e use dados acionáveis para informar suas decisões de segurança.
No Google Kubernetes Engine (GKE), aplicar o princípio de privilégio mínimo ao tráfego de rede significa restringir a comunicação apenas ao que é necessário para que os aplicativos funcionem. Por padrão, a rede em um cluster do GKE é aberta, o que significa que cada pod pode se comunicar com todos os outros.
O GKE agora oferece suporte a uma abordagem hierárquica para segurança de rede usando ClusterNetworkPolicy para aplicação no nível administrativo em todos os namespaces.
Este documento fornece informações que operadores, especialistas em rede e especialistas em segurança precisam entender e implementar a segurança de rede em clusters do GKE. Para mais informações sobre funções comuns e tarefas de exemplo em Google Cloud, consulte Funções e tarefas comuns do usuário do GKE.
Antes de ler este documento, verifique se você está familiarizado com o seguinte:
- Conceitos de rede do GKE: para uma visão geral, consulte Sobre a rede do GKE.
- Pods, serviços e namespaces do Kubernetes: esses recursos fundamentais do Kubernetes são essenciais para definir políticas de segurança de rede. Consulte a documentação do Kubernetes.
- O princípio de privilégio mínimo: esse princípio de segurança é um conceito fundamental aplicado em todo este documento.
Objetivos da segurança de rede do GKE
As políticas de segurança de rede do GKE fornecem controle de tráfego refinado e compatível com o Kubernetes no cluster. Essas políticas são um elemento essencial da sua estratégia de segurança geral. Para implementar uma segurança de rede robusta, considere estes princípios fundamentais:
- Privilégio mínimo: conceda aos sistemas e serviços apenas os privilégios mínimos necessários para realizar as funções. Esse princípio reduz o impacto potencial de uma violação. As políticas de rede do Kubernetes ajudam você a passar de uma rede aberta por padrão para uma em que apenas as conexões necessárias são permitidas.
- Defesa em profundidade: camadas de vários controles de segurança independentes. Uma falha em um controle não leva a uma violação total do sistema. Por exemplo, você usa uma política de rede para isolar um banco de dados, mesmo que ele exija autenticação.
- Dados acionáveis: decisões de segurança baseadas em dados. A modelagem de ameaças e a avaliação de riscos informam sua postura de segurança. Recursos como a geração de registros de políticas de rede fornecem os dados para verificar políticas e detectar possíveis violações.
Escolher uma política de segurança de rede
Para escolher a política certa, identifique o tipo e o escopo do tráfego que você precisa controlar.
Tipos de tráfego
Para escolher a política certa, considere a origem e o destino do tráfego que você quer gerenciar:
Comunicação entre pods no cluster: para controlar como os microsserviços se comunicam entre si, use políticas que operam em rótulos e namespaces de pods.
- Como desenvolvedor de aplicativos, use a NetworkPolicy padrão do Kubernetes NetworkPolicy para definir regras de entrada e saída do aplicativo no namespace.
- Como administrador de cluster, use a
ClusterNetworkPolicy
padrão do Kubernetes para aplicar proteções de segurança obrigatórias (nível
Admin) ou estabelecer padrões de confiança zero (nívelBaseline) em todos os namespaces. Esse recurso é compatível com clusters que executam a versão 1.36.1-gke.1067000 ou mais recente do GKE. - Como administrador de cluster, use a
CiliumClusterwideNetworkPolicy
proprietária para controle de tráfego especializado em todo o cluster. Para novas implantações, use a
ClusterNetworkPolicynativa do Kubernetes em vez dessa política reservada.
Tráfego de saída de pods para serviços externos: para controlar o tráfego de saída de pods para serviços externos com base em nomes de domínio, use FQDNNetworkPolicy. Essa política é útil quando os endereços IP de serviços externos não são estáticos, porque ela resolve e atualiza automaticamente os endereços IP permitidos com base no DNS.
Criptografia para todo o tráfego de serviço para serviço: para garantir que toda a comunicação entre serviços seja criptografada e autenticada, use um service mesh. Use Istio ou o Anthos Cloud Service Mesh para implementar o TLS mútuo (mTLS), que processa a criptografia automaticamente.
Níveis de avaliação de políticas
O GKE avalia as políticas de segurança de rede em três níveis hierárquicos.
- Nível de administrador (ClusterNetworkPolicy): o nível mais alto de precedência. Use esse nível para aplicar mandatos de segurança obrigatórios. As regras de negação nesse nível substituem todas as outras políticas. As regras de aceitação permitem o tráfego e interrompem a avaliação desse pacote.
- Nível NetworkPolicy: o nível em que os desenvolvedores definem a segurança específica do aplicativo. As políticas incluem os recursos padrão
NetworkPolicy,FQDNNetworkPolicy, eCiliumClusterwideNetworkPolicy. - Nível de referência (ClusterNetworkPolicy): o nível mais baixo de precedência. Use esse nível para definir proteções padrão de "negação por padrão" que os desenvolvedores podem substituir seletivamente no nível NetworkPolicy.
Se nenhuma política corresponder em qualquer nível, o GKE usará um comportamento implícito de "permitir tudo".
Resumo das opções de política
A tabela a seguir resume qual política usar com base na sua meta de segurança.
| Objetivo | Política recomendada |
|---|---|
| Controlar o tráfego entre pods usando rótulos e namespaces. | Kubernetes NetworkPolicy |
| Controlar o tráfego de saída para serviços externos por nome de domínio. | FQDNNetworkPolicy |
| Criptografar e autenticar todo o tráfego de serviço para serviço. | Istio ou Anthos Cloud Service Mesh (para mTLS) |
| Aplicar proteções de segurança obrigatórias e não substituíveis. | ClusterNetworkPolicy (nível de administrador) |
| Estabelecer proteções padrão de "confiança zero" que os desenvolvedores podem substituir. | ClusterNetworkPolicy (nível de referência) |
| Configurar políticas proprietárias em todo o cluster (não recomendado para novas implantações). | CiliumClusterwideNetworkPolicy |
| Auditar e registrar conexões permitidas ou negadas por políticas. | Geração de registros de políticas de rede (ativada para qualquer política) |
Auditar e solucionar problemas de políticas de rede
Depois de implementar políticas de rede, verifique se elas funcionam conforme o esperado e diagnostique problemas de conectividade. Você pode usar a geração de registros de políticas de rede como a principal ferramenta para isso.
Quando você ativa a geração de registros de políticas de rede, o GKE gera um registro de log no Cloud Logging para cada conexão que uma política de rede permite ou nega. Esses registros são essenciais para realizar auditoria de segurança e solucionar problemas de comportamento inesperado. A revisão desses registros permite que você veja os efeitos concretos das regras, confirmando que o tráfego legítimo flui conforme o esperado e que o tráfego não autorizado é bloqueado.
Ao contrário das políticas padrão, que são "somente permissão", os recursos ClusterNetworkPolicy oferecem suporte a ações negar explícitas. Se uma política administrativa descartar o tráfego, o registro de log atribuirá a negação à política específica responsável pelo bloqueio.
A seguir
- Saiba como configurar uma NetworkPolicy do Kubernetes.
- Saiba como controlar o tráfego de saída usando uma FQDNNetworkPolicy.
- Saiba como aplicar proteções de segurança em todo o cluster usando ClusterNetworkPolicy.
- Saiba como configurar a CiliumClusterwideNetworkPolicy para regras em todo o cluster.
- Saiba como ativar a geração de registros de políticas de rede para auditar suas políticas.