O uso de software e serviços em nuvem cresceu com as organizações aproveitando a oportunidade de reduzir OPEX e compensar os custos de suporte. Em paralelo, o consumo de serviços em nuvem aumentou com mais pessoas trabalhando remotamente.
Os criminosos perceberam isso e, nos seis primeiros meses de 2022, o Google Project Zero observou um total de 18 vulnerabilidades de dia zero exploradas. E pelo menos metade delas aconteceram porque bugs anteriores não foram resolvidos adequadamente.
Os microsserviços se tornaram um método popular para desenvolver aplicações baseadas em nuvem. Isso porque são simples de implantar e sua capacidade de atualizar componentes sem um tempo de inatividade significativo permite que os provedores ofereçam excelentes acordos de nível de serviço.
Hoje, muitas das aplicações e serviços usados diariamente são desenvolvidas dessa forma. Inclusive, tornaram-se tão confiáveis que até mesmo um momento de interrupção parece inaceitável.
Mas será que os microsserviços são realmente seguros? Há uma maneira melhor de evitar riscos?
O perigo dos microsserviços
Os microsserviços são mais complexos do que as compilações monolíticas. As equipes de DevOps precisam gerenciar várias linguagens e estruturas. Isso sem dizer que as novas dependências de serviço, geralmente, são incompatíveis com as ferramentas existentes.
A consistência dos dados é outro desafio, pois cada serviço tem seu próprio banco de dados e protocolos de gerenciamento de transações.
Além disso, os microsserviços também aumentam os riscos de segurança devido à sua natureza modular. O grande volume de dados trocados entre contêineres expõe mais um sistema à rede, o que fornece uma superfície de ataque mais ampla.
Cada microsserviço precisa expor seu próprio conjunto de APIs, métodos de comunicação e pontos de entrada/saída para ser viável – e cada um deles carrega um nível de risco.
Ademais, por serem altamente replicáveis, os contêineres de microsserviços permitem que os pontos fracos se espalhem rapidamente, geralmente, entre aplicações que contêm código duplicado.
A natureza competitiva e acelerada do desenvolvimento de software pode levar as equipes a adotar soluções que acabam causando mais problemas. A evolução dos testes fica para trás e dificulta o acompanhamento dos riscos causados pela implantação e adoção em massa.
Como tornar os contêineres de microsserviços mais seguros?
É comum que os microsserviços usem contêineres para implantação, mas esse método pode trazer riscos, pois eles são baseados em imagens. Além disso, é possível haver vulnerabilidades.
A questão é que qualquer estrutura baseada em tecnologia é capaz de correr riscos se não for corretamente construída. Dessa maneira, é essencial verificar e resolver os problemas descobertos regularmente, para não virar uma estatística do Google Project Zero.
Como vimos, um contêiner é capaz de conter superfícies de ameaça. Portanto, é essencial reforçar a proteção. E uma maneira de colocar essa proteção em prática é limitar os privilégios de acesso para usuários e recursos:
- Restrinja as permissões ao mínimo exigido por qualquer usuário ou serviço. Nunca use contas privilegiadas ao executar serviços;
- Procure não armazenar dados sigilosos. Qualquer pessoa que tenha (ou obtenha) acesso os verá;
- Considere adotar regras de isolamento para sistemas sensíveis. Deve ser possível atualizar, gerenciar ou modificar um microsserviço sem afetar os microsserviços próximos. Esse nível de isolamento também garante que um invasor que comprometa uma parte do sistema seja impedido de movimentar-se lateralmente no ambiente.
Como garantir que os dados estarão protegidos?
A atitude pode parecer óbvia, mas passar despercebida, principalmente em ambientes internos. É essencial aplicar HTTPS e criptografia para proteger dados em trânsito e dados em repouso na rede.
Para maior segurança, vale a pena habilitar o cabeçalho de resposta 'HTTP Strict Transport Security' para que os dispositivos de endpoint possam acessar apenas via HTTPS.
Essas etapas podem reduzir o risco de um invasor acessar e expor dados. Conheça outros passos importantes a seguir.
Reduza os pontos de acesso com um gateway de API
Os usuários não devem se comunicar diretamente com microsserviços. Logo, deve ser utilizada uma abordagem que reduz o risco de acesso direto ou de quem alguém explore um serviço diretamente. Um gateway de API fornece um ponto de entrada único para todo o tráfego e redireciona para os microsserviços.
Outro benefício de um gateway de API é que ele pode ser configurado para fornecer autenticação baseada em token, reduzindo o risco de usuários não autorizados no sistema. Uma vez que um usuário está conectado à sua rede e tem acesso aos dados, os privilégios são bem controlados.
Limites de taxa de uso
Um método comum que os invasores usam para obter acesso a aplicações ou implantar um ataque de negação de serviço (DDoS) é usar vários conjuntos de credenciais diferentes para acessar um aplicativo em alta velocidade.
Ao tentar e falhar no login repetidamente, a aplicação fica atolada em solicitações e, eventualmente, falha ou fica lenta a ponto de ninguém poder realizar a autenticação com êxito.
Nesse sentido, os limites de taxa podem ser configurados para garantir que um aplicativo possa aceitar apenas um número fixo de solicitações dentro de um determinado período. Ainda, são uma ótima maneira de evitar ataques DDoS.
Adote a defesa em profundidade como estratégia
A maioria das organizações usa várias ferramentas de segurança para proteger sua rede e dados. Ainda assim, cada ferramenta é, muitas vezes, vista como uma medida única, em vez de considerar todas as ferramentas juntas, como um ambiente seguro.
A defesa em profundidade incentiva uma revisão de todas as ferramentas em vigor, definindo uma estratégia para usar tudo o que está disponível. Assim, cria-se uma abordagem de segurança em camadas entre usuários – ou possíveis invasores – e aplicações/microsserviços em uso.
Um exemplo seria garantir que a autenticação baseada em token possa permitir que usuários dentro do firewall acessem serviços corporativos. Ainda assim, o acesso baseado em funções garante que os usuários vejam apenas o que é relevante para eles, e o monitoramento pode alertá-los sobre possíveis desvios ou violações.
Desse modo, a combinação de ferramentas fornece uma defesa em profundidade e uma postura de segurança mais robusta do que um conjunto de ferramentas usadas individualmente.
Monitore e atualize
É essencial monitorar constantemente os microsserviços em busca de possíveis ataques e verificar vulnerabilidades ou ameaças durante os ciclos de desenvolvimento.
No entanto, o monitoramento é apenas um lado da moeda. É importante também adotar as alterações recomendadas pelos sistemas escolhidos para garantir que os microsserviços e as plataformas estejam totalmente atualizados. Isso porque, com muita frequência, as vulnerabilidades são expostas em versões mais antigas do código.
Os microsserviços são o futuro para o desenvolvimento de aplicações baseadas em nuvem. A flexibilidade e a escala permitem que as organizações cresçam sob demanda e garantem que a melhor experiência de usuário de cliente/serviço possível seja sempre fornecida.
Os riscos com microsserviços não são tão diferentes dos perigos de uma aplicação normal. Portanto, considere a segurança em cada estágio do projeto e da implantação para garantir uma postura robusta em todas as fases.
Quer saber mais sobre a tecnologia de contêineres? Então, não deixe de ler nosso post sobre o Red Hat OpenShift.
Deixe um comentário