Segurança de rede na era dos contêineres
Uma das coisas boas de estar no setor há muitos anos é o fato de podermos observar como segurança de rede as tendências no data center evoluíram e predizem um pouco o que está por vir, com base em padrões e intuição comuns.
Os limites de rede e segurança estão mudando
Há quinze anos, a segurança da rede era muito simples no data center. Os protocolos de camada 2 eram reis absolutos em seu reino e o firewall podia ficar na borda para proteger a Internet ou uma conexão WAN. Os servidores de um determinado aplicativo estavam todos conectados no mesmo rack, e o limite entre as diferentes partes da infraestrutura estava bem definido. Segmentar isso foi bem simples.

Alguns anos depois, para consolidar todos esses servidores e simplificar a conectividade, os servidores blade e chassi ganharam força lentamente, criando a primeira mudança nos limites de rede e segurança entre as pessoas que gerenciam os servidores e as pessoas responsáveis pela rede e pela segurança. Quem é responsável pelos módulos de conectividade nesses chassis e onde devemos inserir os dispositivos de segurança? Na maioria das vezes, o módulo de rede acabava sendo o módulo menos importante no chassi e era sempre um pesadelo conectar-se ao restante da rede e da infraestrutura de segurança.

Mas essa batalha foi ofuscada por uma nova tecnologia. ESX da VMware hipervisor democratizou rapidamente a capacidade de compartilhar o mesmo servidor de hardware para executar vários servidores virtuais. E, como resultado, para conectar esses servidores virtuais, a rede precisou mudar novamente para um local diferente: dentro do hipervisor. Os turnos começaram como um switch virtual muito simples, mas rapidamente se expandiram para serviços de camada 3 e, eventualmente, segurança.

E, novamente, apesar da evolução da infraestrutura do data center, a nuvem pública começou sua ascensão para oferecer uma variedade de serviços ao mercado corporativo, totalmente automatizados e extremamente ágeis. Não demorou muito para que os desenvolvedores entendessem o valor dessa nova infraestrutura abstrata que pode oferecer um serviço escalável e altamente disponível sem lidar com a complexidade do gerenciamento da infraestrutura.

Há alguns anos, surgiu um novo tipo de carga de trabalho, leve, portátil e fácil de girar ou desmontar em segundos: contêineres. Com a proliferação de contêineres, os desenvolvedores perceberam rapidamente que era necessário orquestrar esses recursos de computação, junto com a rede, para garantir que os aplicativos possam ser ampliados ou reduzidos sem precisar depender de uma rede externa e de uma infraestrutura de segurança. Um cluster de contêineres é um novo elemento de infraestrutura que mistura computação, rede e segurança e cria, mais uma vez, outra mudança no limite de segurança da rede.

Então, o que aprendemos ao longo de 15 anos? Qual é o padrão comum de todas essas evoluções?
- O limite de segurança de rede está se deslocando cada vez mais para a camada de computação porque os desenvolvedores estão sempre ultrapassando os limites para obter mais flexibilidade ao desenvolver e testar seus aplicativos.
- As equipes de rede e segurança estão atrasadas no jogo e, na melhor das hipóteses, podem recomendar opções ou soluções, mas, na maioria das vezes, herdam o que foi decidido pelas equipes de aplicativos ou de nuvem.
- Proteger infraestruturas é mais difícil quando as coisas não foram pensadas e projetadas com a segurança em mente, e geralmente cria um nível extra de complexidade quando é adicionada posteriormente.
Qual é o problema com os contêineres?
Na verdade, contêineres e clusters de contêineres não são uma exceção a essa tendência de migrar cada vez mais a rede para as camadas de software e computação. Conforme descrito anteriormente, vimos isso há muitos anos e não há razão para que isso mude se as equipes de rede e segurança não estiverem revertendo essa tendência.
Do ponto de vista da rede e da segurança, os contêineres não introduzem nada novo ou desconhecido, eles apenas combinam o que já sabemos (IPs, sub-redes, DHCP/DNS, zonas, segmentos, encapsulamento, NAT, firewall ou balanceadores de carga), mas tudo acontece no próprio sistema operacional, e esse é um problema fundamental.
As equipes de TI adoram limites, responsabilidades e propriedade, e isso é o oposto de como os clusters de contêineres operam. Eles foram projetados para serem autossuficientes, orquestrados e opacos em relação ao mundo exterior. Por um lado, é uma ótima notícia que uma nova peça de infraestrutura não exija extensas sessões de projeto para ser conectada e executada. Por outro lado, isso cria uma questão de segurança real sobre como os fluxos de aplicativos podem ser protegidos se você não souber e entender o que está acontecendo nesses clusters.
O que pode ser feito para mudar isso?
Idealmente, os desenvolvedores deveriam desenvolver o código e entregá-lo a outra equipe para colocá-lo em produção — de uma forma totalmente testada e automatizada, em uma infraestrutura projetada para escala e disponibilidade, e com a segurança no topo das prioridades em cada camada da pilha.
Bem, parece que em muitas organizações, ainda não chegamos a esse ponto. As equipes de DevOps estão conectadas a seus colegas no desenvolvimento, mas esse nem sempre é o caso das equipes de rede e segurança, e isso precisa mudar se quisermos ver os contêineres como uma tecnologia disruptiva no mercado.
As equipes de rede e segurança devem passar mais tempo entendendo o que foi transportado e protegido pela infraestrutura. Eles devem aprender o que é um pipeline de CI/CD e devem ter uma opinião sobre como as coisas são criadas dentro do aplicativo para que possam adaptar os mecanismos de segurança para complementar o que o aplicativo não é capaz de alcançar. Isso requer aprender novas habilidades, aceitar as diferenças e ser crítico, mas com a mente aberta, a novos conceitos que, a princípio, podem não parecer uma boa ideia, mas na verdade podem ser muito eficientes.
Os contêineres são um exemplo perfeito de uma tecnologia que força pessoas de todas as áreas de um departamento de TI a aprenderem umas com as outras.
Caso contrário, é uma receita para o desastre. Não há cluster de contêineres sem rede, não há aplicativo em contêiner em produção sem segurança e não há infraestrutura compartilhada sem segmentação. As equipes de rede e segurança precisam aproveitar essa oportunidade para aprender novas maneiras de fazer as coisas, passar mais tempo entendendo como as coisas podem ser feitas em software e se apropriar das camadas de rede e segurança propondo designs simples, seguros e estáveis para atender à camada de aplicativos.
Por onde você deve começar?
Obviamente, não existe uma bala mágica ou arma secreta que possa ser a resposta única para todos. Mas aqui estão algumas ideias que podem ajudar a levar sua equipe ao sucesso:
Conheça seus amigos: Os desenvolvedores e as equipes de DevOps não são inimigos das equipes de rede e segurança. Todos eles estão servindo ao mesmo propósito: o negócio. Mas sem saber o que outras equipes fazem, é mais difícil ver o que pode ser feito para melhorar como grupo. A construção de infraestruturas complexas, como clusters de contêineres, exige decisões interligadas para ser bem-sucedida, especialmente quando se trata de segurança.
Adquira o conhecimento: Ninguém sabe tudo, mas todo mundo pode aprender qualquer coisa. É normal ser leve em algumas áreas de sua infraestrutura, mas definitivamente não é bom não querer aprender como as coisas são feitas ou deveriam ser feitas. Contêineres, plataformas de orquestração e malhas de serviços não são fáceis de abordar. Leva tempo para se sentir confortável com novas terminologias ou conceitos, mas é muito gratificante quando você cruza esse limite de compreensão e consegue transformar esse conhecimento em ação.
Uma rede é uma rede e a segurança é universal: Lembre-se de que um cluster de contêineres é uma coleção de endereços IP (associados a contêineres) que se comunicam entre si. Além disso, os aplicativos não devem viver em um cluster de contêineres sem serem expostos ao mundo; portanto, haverá o conceito de abrir algumas portas para o mundo. Os engenheiros de rede e segurança são responsáveis pelos fluxos que vão de uma extremidade a outra de um cluster, além de receber e retirar pacotes desse cluster. Se algo for comprometido em um cluster de contêineres, é responsabilidade da equipe de segurança da rede monitorar, reagir e responder para evitar a propagação de uma violação. Sim, os clusters de contêineres têm uma abordagem diferente para rede e segurança, mas ainda é uma rede que precisa ser segmentada e protegida.
Busque a verdade: É importante entender e desafiar o status quo. Quando as coisas não funcionam como você pensava, tudo bem. Isso significa que, coletivamente, como equipe, você precisa buscar a verdade e concordar com ela. Uma tecnologia bem compreendida é mais fácil de implantar, proteger e solucionar problemas.
Atualmente, contêineres, plataformas de orquestração e malhas de serviços estão ganhando muita força nas organizações de TI e é extremamente importante que, como engenheiro de rede e segurança, você entenda os conceitos dessas tecnologias. Alguns conceitos parecerão muito familiares, outros parecerão muito estranhos, mas para proteger adequadamente as coisas, você deve saber como elas realmente funcionam!
Confira nossa página de contêineres para obter mais informações sobre como aproveitar o Illumio para segmentação de contêineres.