Em um cenário de microsserviços, cada contêiner web-api deve se servir por meio de HTTPS ou é aceitável trabalhar internamente por meio de HTTP e ter todas as entradas configuradas com certificados e redirecionadas para a porta 80 dos contêineres?
Acho que a abordagem mais fácil é proteger apenas o tráfego externo, pois para configurar um Asp.Net Core WebAPI para servir a si mesmo (kestrel) através de HTTPS (por exemplo) é necessário montar o certificado em um volume e fornecer a senha do certificado. É um pouco complicado.
Qual é a melhor prática?
Responder1
Depende dos requisitos e recursos, se você possui On-Prem ou baremetal, etc.
Não há requisitos para proteger o tráfego
Se não houver requisitos relativos à proteção do tráfego do cliente dentro do cluster, você poderá encerrar SSL
a conexão do cliente ingress-controller
e usá-la HTTP
entre os pods.
Requisitos seguros
Se houver necessidade de proteger o tráfego do cliente para o pod de destino, isso poderá ser obtido de duas maneiras.
L3 LoadBalancer
comNodePort, configurado comPassagem SSLsobreIngress
.- Se o tráfego precisar ser usado
SSL
, mas não for necessário entregarSSL
diretamente ao designadoPod
, seria mais fácil implementá-lo configurandoIstioMalha commTLS
. Esta opção permitirá rotear o tráfego usando cabeçalhos HTTP e você não precisará gerenciar certificados manualmente. por favor, verifiqueessePara maiores informações.
Como as Melhores Práticas sempre tendem a ser tão seguras quanto possível, é sempre recomendável usar uma conexão segura. Apesar disso, alguns cenários simplesmente não precisam disso.
Responder2
Se o seu cluster estiver em execução na nuvem e usando umbalanceador de nuvem externo, sua entrada e seus pods poderão estar em máquinas ou datacenters diferentes. Nesse caso, você deve realmente impor o TLS da entrada aos pods.
De qualquer forma, o balanceador de carga e seu cluster devem estar no mesmo VPC (esperançosamente restrito).
Responder3
Também depende dos vetores de ataque contra os quais você está se protegendo.
Se você está preocupado com a possibilidade de alguém detectar o tráfego entre seus nós do Kubernetes, considere usar um plug-in de rede (CNI) que suporte criptografia como WeaveNet ou coloque todos os seus nós em uma rede VPN usando Wireguard ou OpenVPN.
Se você deseja proteger os serviços no cluster uns dos outros, considere algo como o Istio, que criptografa o tráfego entre os pods.