13 práticas recomendadas para proteger microsserviços

A arquitetura de microsserviços fornece flexibilidade, escalabilidade e capacidade de modificar, adicionar ou remover componentes de software sem afetar outras partes do aplicativo.

Além de ciclos de desenvolvimento de software mais curtos, equipes menores e opções flexíveis de linguagem de programação, ele permite dimensionar ou solucionar problemas de determinadas funções ou serviços sem interferir nos outros componentes.

Geralmente, os microsserviços permitem dividir grandes aplicativos monogâmicos em serviços distintos implementáveis ​​de forma independente. No entanto, esses serviços independentes menores aumentam o número de componentes, daí a complexidade e dificuldade em protegê-los.

Imagem de arquitetura monolítica versus microsserviços Chapéu vermelho

Normalmente, uma implantação típica de microsserviços terá as camadas de hardware, serviço ou aplicativo, comunicação, nuvem, virtualização e orquestração. Cada um deles possui requisitos, controles e desafios de segurança específicos.

Desafios de segurança associados a microsserviços

Os microsserviços geralmente são sistemas amplamente distribuídos com regras de acesso complexas, mais tráfego para monitorar e uma superfície de ataque maior. Além disso, a maior parte da nuvem de microsserviços é executada em ambientes de nuvem, que também possuem configurações e controles de segurança variados.

Devido ao grande número de APIs, portas e componentes expostos, os firewalls tradicionais podem não fornecer segurança adequada. Esses problemas tornam as implantações de microsserviços mais vulneráveis ​​a várias ameaças cibernéticas, como man-in-the-middle, ataques de injeção, cross-site scripting, DDoS e outros.

A segurança da rede é outro desafio com microsserviços. Em particular, o controlo de identidade e acesso assume um novo nível de complexidade. Outras vulnerabilidades incluem código inseguro e falhas nos sistemas de descoberta de serviços.

Embora proteger microsserviços seja mais difícil do que aplicativos monolíticos, você pode protegê-los com eficiência estabelecendo uma boa estratégia e seguindo as práticas recomendadas.

Idealmente, a arquitetura requer uma abordagem distribuída que deve abranger todos os diferentes componentes.

As áreas típicas a serem abordadas incluem

  • Protegendo aplicativos, microsserviços e usuários
  • Protegendo o gerenciamento de identidade e acesso
  • Protegendo dados
  • Aumente a segurança da comunicação serviço a serviço
  • Monitorando os microsserviços e sistemas de segurança

Práticas recomendadas para proteger microsserviços

Uma das melhores estratégias é usar uma combinação de melhores práticas, ferramentas e controles para proteger todo o ecossistema. A abordagem atual pode diferir de acordo com o tipo de serviço, aplicações, usuários, fatores ambientais e outros.

Se você decidir usar microsserviços, precisará garantir que está atendendo a todas as demandas de segurança para serviços, conexões e dados.

Vamos agora dar uma olhada em algumas práticas eficazes de segurança de microsserviços.

#1. Crie segurança desde o início 👮

Torne a segurança parte do ciclo de desenvolvimento. Idealmente, integre a segurança ao desenvolvimento e implantação de microsserviços desde o início. Abordar a segurança dessa maneira é uma abordagem fácil, eficaz e mais barata do que esperar para adicioná-la quando o desenvolvimento do software estiver quase concluído.

  Como enviar um e-mail com um endereço “De” diferente no Outlook

#2. Use o mecanismo de defesa em profundidade

A Defense in Depth (DiP) é uma técnica onde você aplica várias camadas de segurança em seus serviços e dados. A prática torna mais difícil para os invasores penetrar nas várias camadas, proporcionando forte segurança para seus serviços e dados.

Ao contrário das soluções de segurança de perímetro, como os firewalls, o conceito de Defesa em profundidade é diferente. Ele conta com uma combinação de ferramentas como antivírus, firewall, gerenciamento de patches, software anti-spam e outros para fornecer várias camadas de segurança distribuídas por todo o sistema.

Imagem de segurança multicamada de defesa em profundidade: imperva

Com essa abordagem, você deve primeiro identificar os serviços confidenciais e, em seguida, aplicar as camadas de segurança apropriadas a eles.

#3. Implante segurança no nível do contêiner 📦

Na maioria das vezes, os microsserviços dependem da tecnologia de contêineres. Assim, proteger os contêineres, tanto interna quanto externamente, é uma forma de reduzir a superfície de ataque e os riscos. Idealmente, visar o princípio de segurança de privilégio mínimo é uma boa prática e requer uma combinação de estratégias, incluindo, mas não se limitando a;

  • Limitando a permissão ao mínimo necessário
  • Evite executar serviços e qualquer outra coisa usando sudo ou contas privilegiadas.
  • Limite ou controle o acesso e o consumo dos recursos disponíveis. Por exemplo, limitar o acesso aos recursos do sistema operacional pelos contêineres ajuda a evitar roubo ou comprometimento de dados.
  • Não armazene segredos no disco do contêiner.
  • Use regras apropriadas para isolar o acesso aos recursos.

Também é vital garantir que as imagens do contêiner não tenham vulnerabilidades ou problemas de segurança. Uma varredura regular de segurança e vulnerabilidade dos contêineres ajudará a identificar riscos.

As ferramentas típicas de digitalização de imagens incluem clara, âncorae mais.

#4. Implante uma autenticação multifator 🔒

Habilitar a autenticação multifator aumenta a segurança do front-end.

Os usuários que acessarem precisarão fornecer seus detalhes de nome de usuário e senha, além de outra forma de verificação, como um código enviado para seus telefones ou um endereço de e-mail especificado. A técnica torna mais difícil para os invasores, que podem estar usando credenciais roubadas ou hackeadas, acessar os microsserviços, pois não terão como fornecer a segunda autenticação.

#5. Use tokens de identidade e acesso do usuário

Na implantação de microsserviços, um grande número de aplicativos e serviços exigirá autorização segura e controle de acesso. Uma estrutura de autorização como OAuth 2.0 e OpenID permite que você processe os tokens com segurança e, portanto, proteja seus microsserviços. Consequentemente, isso permite que aplicativos de terceiros acessem outros serviços ou dados dos usuários.

Em uma implantação típica, o aplicativo principal solicitará que o usuário autorize o serviço de terceiros. Ao aceitar isso, o aplicativo gera um token de acesso para a sessão.

Em particular, OAuth é uma das estratégias mais eficazes para identidade do usuário e controle de acesso. Embora existam vários outros protocolos de autorização e você também possa criar o seu próprio, é uma prática recomendada usar o OAuth desde que é mais padrão, estável e amplamente aceito.

  Como verificar quando um título está saindo da Netflix

#6. Criar um gateway de API

Geralmente, os microsserviços consistem em vários componentes distribuídos em diferentes redes e acessíveis a partir de uma ampla gama de sistemas e clientes. A exposição dos microsserviços aumenta as vulnerabilidades e os riscos de segurança. Uma maneira de protegê-los é criar um ponto de entrada único e seguro que o ajude a centralizar todo o acesso de clientes e sistemas externos.

Para conseguir isso, implante um gateway de API para rastrear todas as solicitações recebidas quanto a problemas de segurança antes de encaminhá-las para os microsserviços apropriados. O gateway de API fica entre os aplicativos cliente e os microsserviços. Em seguida, limita a exposição dos microsserviços enquanto fornece funções adicionais de gerenciamento de solicitações, como autenticação, terminação SSL, tradução de protocolo, monitoramento, roteamento de solicitações, armazenamento em cache e muito mais.

Com essa abordagem, o gateway de API roteia todos os serviços externos para os microsserviços, além de oferecer suporte ao princípio de segurança de defesa em profundidade.

Imagem do gateway da API de microsserviços Livebook

Gateways de API típicos incluem NGINXGenericName, kong, Tyk, Embaixador, Gateway de API da AWSe mais.

Para saber mais sobre a segurança da API, consulte nosso guia sobre Por que e como proteger o endpoint da API.

#7. APIs de perfil com base na zona de implantação

Implemente restrições baseadas em função garantindo que os usuários tenham acesso apenas às APIs e serviços de que precisam. Como a maioria dos softwares mal-intencionados geralmente expõe um serviço a mais pessoas, limitar o acesso apenas a usuários autorizados reduz os riscos. Uma técnica para reduzir a exposição é rotular as APIs com base nos usuários que devem ter acesso a elas. Geralmente, as APIs podem ser;

  • APIs Ethernet – Para serviços expostos ao mundo externo fora do data center.
  • APIs de Zona Corporativa – destinam-se ao tráfego privado interno
  • APIs DMZ– para lidar com o tráfego originado na Internet
  • APIs de zona híbrida – para implantações de data centers

#8. Proteja as comunicações serviço a serviço

Práticas eficazes envolvem autenticação e autorização de solicitações quando dois microsserviços estão se comunicando.

Geralmente, existem três técnicas principais que você pode usar para proteger as comunicações entre serviços. Estes são Trust the network, JSON Web Token (JWT) e Mutual Transport Layer Security (mTLS ou Mutual TLS).

Protegendo comunicações entre serviços com JWT Image Livebook

Dos três, o mais popular é o mTLS. Nessa abordagem, cada microsserviço deve carregar um par de chaves pública/privada. O microsserviço cliente então usa o par de chaves para se autenticar no microsserviço receptor por meio do mTLS.

Durante a autenticação, cada microsserviço gera um certificado. Posteriormente, cada microsserviço usará o certificado do outro para se autenticar.

Embora o TLS forneça integridade e confidencialidade para os dados em trânsito, ele também permite que o cliente identifique um microsserviço. O microsserviço cliente geralmente conhece o outro microsserviço. No entanto, como o TLS é unidirecional, um microsserviço receptor não pode verificar o microsserviço cliente – e os invasores podem explorar essa falha. Por outro lado, o mTLS fornece um meio no qual cada um dos microsserviços pode identificar o outro.

#9. Limite de taxa 🚏 tráfego do cliente

Limitar o tráfego externo evita problemas como ataques de negação de serviço (DoS), bem como instâncias em que alguns clientes consomem a maior parte da largura de banda do aplicativo. Uma abordagem é aplicar várias regras que podem monitorar e controlar a taxa de tráfego enviada ou recebida de um cliente com base no IP, horário etc.

  7 melhores aplicativos de mensagens de vídeo para gravar tela e câmera

Configure seus serviços para desacelerar se eles detectarem várias tentativas de login com falha em suas APIs ou qualquer outra atividade suspeita.

Um sistema lento desencorajaria os invasores e provavelmente desistiria de tentar acessar os serviços. Você pode limitar a taxa usando o gateway da API, por meio do código ou qualquer outra técnica. Normalmente, a maioria dos ambientes SaaS possui limitação de taxa de API para minimizar o abuso por parte dos usuários, bem como os ataques.

#10. Usar gerenciadores de orquestração

Os gerenciadores de orquestração permitem automatizar a configuração, coordenação e outras tarefas de gerenciamento de microsserviços, além de aumentar a segurança. Normalmente, as ferramentas permitem gerenciar vários contêineres, limitar o acesso a metadados, segregar cargas de trabalho, coletar logs e muito mais.

Algumas ferramentas de orquestração têm recursos adicionais que permitem aos desenvolvedores armazenar e compartilhar informações confidenciais, como certificados SSL, chaves de criptografia, senhas e tokens de identidade.

Os dois métodos comumente usados ​​para orquestração de microsserviços eficazes são;

  • Codificando a orquestração como um microsserviço
  • Usando os gateways de API para fornecer uma camada de orquestração

A orquestração por meio do gateway de API não é recomendada devido a desafios quando há necessidade de escalar serviços.

Camada de orquestração de microsserviços – Imagem Globallogic

As ferramentas típicas de gerenciamento de orquestração incluem Kubernetes, Ístio, Serviço Azure Kubernetes (AKS)etc

Para saber mais, explore o Container Orchestration for DeOps.

#11. Monitore todos os seus sistemas e serviços

Como os microsserviços dependem de sistemas distribuídos, você precisa ter uma estratégia de monitoramento confiável e eficaz para todos os componentes individuais.

A implantação do monitoramento contínuo permite detectar e lidar com os riscos de segurança em tempo hábil. Para isso, existe uma ampla gama de soluções de monitoramento de microsserviços, incluindo Prometeu, Statsd, InfluxDB, Logstashetc

Monitoramento dentro da arquitetura de microsserviços

Use as ferramentas apropriadas para monitorar sistemas e serviços internos. Algumas práticas recomendadas incluem;

  • Ative o registro na camada de aplicativo. Você pode Splunk, grafana, pilha ELKe outras ferramentas que coletam logs nos níveis de aplicativo, contêiner, rede e infraestrutura.
  • Monitore as métricas de uso
  • Use as tendências em métricas como CPU, memória, tempos de resposta, erros, notificações e outros para detectar atividades incomuns indicativas de um ataque existente ou potencial.
  • Audite os logs em áreas como solicitações de clientes recebidas, registros de banco de dados, contêineres e outros para identificar inconsistências ou atividades incomuns.

#12. Automatize as atividades de segurança

Automatize os processos de segurança, como implantação de atualizações, verificação de vulnerabilidades, monitoramento, aplicação de políticas e outras atividades. Além disso, verifique as atualizações para garantir que sejam seguras e que não introduzam novas vulnerabilidades.

Após as atualizações, o software de segurança deve idealmente realizar testes em todos os contêineres e microsserviços para verificar se pode haver alguma vulnerabilidade ou problema de segurança que aconteceu antes.

#13. Proteja 🛡️ dados em todos os momentos

Proteja os dados em trânsito e em repouso. Idealmente, imponha o uso de HTTPS para todas as comunicações, para proteger os dados em trânsito e criptografia para todos os dados confidenciais em repouso. Evite transmitir e armazenar senhas, chaves, credenciais e dados confidenciais em texto simples que residam fora do código.

A melhor estratégia é usar tecnologias padrão para criptografar todos os dados confidenciais o mais cedo possível. Além disso, descriptografe os dados o mais tarde possível para reduzir a exposição.

Conclusão

Os microsserviços contam com componentes distribuídos para fornecer benefícios como mais flexibilidade e opções de implantação. No entanto, ao usar os microsserviços, as organizações devem ajustar as políticas e estratégias de segurança interna para uma abordagem mais distribuída e nativa da nuvem.

O ideal é reduzir a superfície de ataque, protegendo o ambiente de microsserviços, APIs, aplicativos e dados.