Desde sua concepção, o modelo serverless revolucionou a computação – mas como ele mudou a segurança? As plataformas de computação serverless permitem que os desenvolvedores criem e executem aplicações gerenciadas pelo provedor serverless, com escalabilidade automática e recursos cobrados conforme o uso. Isso significa que a infraestrutura subjacente não é apenas provisionada e gerenciada, mas protegida pelo provedor serverless, de modo que os desenvolvedores não precisam se preocupar com alguns dos maiores riscos de segurança, tais como as vulnerabilidades conhecidas em servidores sem patch.
Em vez disso, eles podem se concentrar em proteger os dados dos usuários, serviços de terceiros e escrever um código de camada de aplicação seguro. Este post será um guia para entender a segurança serverless, assim como os produtos e melhores práticas que os desenvolvedores podem usar para se protegerem contra ameaças a suas aplicações serverless.
Modelo de responsabilidade compartilhada
De acordo com um whitepaper recente da Trend Micro, “O modelo serverless é considerado relativamente mais seguro do que outros modelos de cloud porque [o provedor] cuida da infraestrutura subjacente, do sistema operacional e da plataforma de aplicação”. Entretanto, embora o serverless reduza significativamente as responsabilidades de segurança para os desenvolvedores, isso não significa que os desenvolvedores possam desconsiderá-lo completamente. O serverless usa um modelo de responsabilidade compartilhada onde os provedores serverless cuidam da proteção de muitos componentes de back-end, como o sistema operacional e a infraestrutura, enquanto os clientes serverless são responsáveis por proteger os componentes de front-end.
É algo parecido com cloud computing, mas com ainda mais responsabilidades de segurança transferidas para o provedor, já que os clientes da cloud precisam gerenciar os contêineres de suas aplicações e – no caso da infraestrutura como serviço – seu sistema operacional.
Como serverless muda a segurança
Arquitetura serverless
Além de mudar a forma como os recursos da aplicação são gerenciados e pagos, o modelo serverless permite uma nova forma de construir aplicações através do uso de funções serverless, que permitem aos desenvolvedores criar funções orientadas a eventos para executar partes distintas de lógica de negócio que são conectadas por APIs. As funções serverless são stateless (sem estado), de curta duração e efêmeras, o que significa que elas são executadas quando são chamadas e os dados não são armazenados em servidores entre instâncias.
Essa arquitetura de aplicação apresenta tanto oportunidades quanto desafios para os desenvolvedores. Conforme observado por pesquisadores sobre a proteção de funções serverless, “serverless impõe limites estritos ao tempo disponível para o adversário recuperar dados confidenciais de funções ou mover-se lateralmente para executar ataques mais sofisticados”. Em outras palavras, novas instâncias são criadas constantemente quando as funções são chamadas e eliminadas após um período de inatividade. Isso significa que os ambientes de execução comprometidos não permanecem comprometidos por muito tempo, dando aos invasores muito menos vantagem para atacar, e às equipes de segurança muito mais oportunidades de detectá-los. No entanto, sua natureza efêmera e stateless pode tornar as funções serverless difíceis de monitorar, e a maior dependência de serviços de terceiros pode criar novas ameaças se as APIs não forem inspecionadas quanto a vulnerabilidades e integradas com segurança.
Protegendo servidores e dados
Provavelmente, o grande diferencial da segurança serverless é reduzir o número de tarefas com as quais os desenvolvedores precisam se preocupar. Não precisar gerenciar patches de OS é um grande golpe para clientes serverless, já que as vulnerabilidades mais antigas nos servidores continuam sendo um fator importante em ataques cibernéticos, como observado no Relatório de Incidentes de Quebra de Dados de 2021 da Verizon. Com os provedores serverless gerenciando esta tarefa, o risco de servidores sem patches é baixo. Entretanto, a eliminação dessa ameaça não significa que os cibercriminosos irão desistir. Menos vulnerabilidades nos servidores incentivam os invasores a buscar configurações erradas e vulnerabilidades em aplicações e seus códigos.
Além disso, como explica um artigo no site de arquitetura de aplicação InfoQ, só porque as funções são stateless não significa que os dados sejam completamente seguros. Ao contrário, os dados sensíveis podem ser armazenados fora do servidor, mudando a forma como os mesmos devem ser protegidos: “Os dados estão em risco quando transferidos, é provável que persistam por mais tempo e sejam acessíveis a mais máquinas, e se o armazenamento de dados for comprometido, mais usuários serão impactados de uma só vez”.
Negação de serviço
Finalmente, a computação serverless muda a maneira como as empresas enfrentam os ataques de negação de serviço (DoS). Esses ataques têm como objetivo deixar os servidores fora do ar, bombardeando-os com tráfego intenso de computação ou memória. Com o serverless, há um grau de resistência a ataques de DoS, uma vez que as aplicações escalam automaticamente para acomodar tráfego adicional. Entretanto, ataques de negação de serviço (DDoS) distribuídos e em larga escala ainda podem gerar tráfego suficiente para sobrecarregar a capacidade, direcionar o DNS ou a rede, ou criar um faturamento significativamente maior devido ao aumento do uso de recursos. A fim de se protegerem contra essas ameaças, clientes serverless podem considerar medidas de segurança adicionais, tais como rate limiting e planos de proteção DDoS.
Melhores práticas para segurança serverless
Aplicações
Com um claro entendimento de como a solução serverless transforma a segurança, podemos considerar as melhores práticas para proteger as aplicações serverless. Para começar, mudar o foco dos invasores de servidores para aplicações e seu código subjacente requer proteções rigorosas para aplicações, tais como um web application firewall (WAF), que pode proteger contra ataques de camada de aplicação, incluindo as vulnerabilidades do OWASP Top 10.
E como o serverless permite que os desenvolvedores gastem mais tempo concentrando-se em seu código, é ainda mais importante priorizar boas práticas de codificação, como escrever funções “puras” que não causarão nenhum efeito colateral, o que muda as variáveis, tornando os testes e a depuração muito mais difíceis. Além disso, os desenvolvedores devem colocar a segurança em primeiro plano no início do processo de CI/CD, incorporando um forte processo de revisão de código com inspeção automática de vulnerabilidades conhecidas.
Soluções de terceiros e APIs
Embora soluções de terceiros facilitem a implementação do código, não inspecioná-los cuidadosamente pode permitir que os invasores tenham uma base de apoio em sua aplicação. O especialista em serverless Jeremy Daly recomenda as seguintes precauções para a integração segura de serviços de terceiros:
- verifique todas as cadeias de dependências para soluções de terceiros;
- evite soluções com muitas dependências;
- use um método de autenticação para cada endpoint;
- não dependa exclusivamente de chaves de API se você permitir que os usuários modifiquem os dados;
- crie listas de controle de acesso para limitar o que usuários comuns podem fazer com suas APIs.
Acesso e autenticação
Quando se trata de garantir o acesso às aplicações, uma das das mais importantes políticas que as equipes de segurança serverless podem adotar é o princípio do menor privilégio. Isso significa que cada processo, programa ou usuário deve ter acesso apenas às informações e recursos necessários para atingir seu propósito específico. Assim, o menor privilégio limita os danos que agentes maliciosos podem causar se obtiverem acesso ao seu sistema. Com isso, melhora a estabilidade do sistema e simplifica a solução de problemas, pois limita as possíveis interações entre as diferentes funções ou módulos.
Além disso, ferramentas de autenticação devem ser usadas para verificar usuários autorizados, e práticas de registro devem ser colocadas em prática para permitir o monitoramento de funções stateless. Não só é importante que os desenvolvedores utilizem o console.log para itens como logins falhos, modificações de conta e interações de banco de dados onde os registros são inseridos, alterados ou excluídos, mas eles devem tomar cuidado para garantir que seus registros e alertas não estejam expondo informações confidenciais, tais como senhas de texto simples, que poderiam ser usadas por invasores para obter acesso não autorizado.
Segurança de dados
Como já mencionamos anteriormente, as aplicações serverless que armazenam dados fora do servidor devem ser particularmente cautelosas quanto à segurança dos dados, pois eles são vulneráveis em trânsito e serão acessados por mais máquinas. Como resultado, é muito importante que os desenvolvedores serverless tomem medidas para criptografar os dados em trânsito. Além disso, o post no blog do site de engenharia Distillery.com observa que os desenvolvedores devem proteger os dados em aplicações serverless, tomando medidas como:
- criptografar dados sensíveis e persistentes;
- criptografar dados sensíveis de estado off-box;
- manter ao mínimo as funções que podem acessar cada armazenamento de dados;
- implementar permissões de acesso granulares para acesso a repositórios de dados;
- usar ferramentas analíticas para monitorar quais funções estão acessando quais dados.
Segurança serverless com a Azion
A plataforma Edge Computing da Azion oferece segurança integrada e completa para ajudar os desenvolvedores a construir e proteger aplicações serverless. Nosso produto de computação serverless, Edge Functions, fornece segurança integrada usando os recursos de sandbox do V8 para manter cada função protegida e isolada.
Além disso, nossa solução de segurança, Edge Firewall, possibilita a criação de políticas de segurança zero-trust, projetadas para aplicações e infraestrutura modernas. Seus benefícios incluem:
- Proteção robusta e de alto desempenho contra ataques na camada de aplicação por meio de algoritmos baseados em scoring do Web Application Firewall.
- Conjuntos de regras inteligentes que permitem bloquear, limitar ou autorizar requisições com base nas necessidades personalizadas de sua empresa.
- Integração em seu SIEM, Big Data ou solução analítica para inteligência e monitoramento de ameaças em tempo real.
- Proteção DDoS de até 5 Gbps para todos os usuários Azion sem custo adicional, com planos de 20 Gbps, 50 Gbps e ilimitados disponíveis para proteção contra os maiores ataques.
- Permissões sofisticadas para autorização e autenticação usando nosso painel de controle do Real Time Manager.
- Certificados SSL sem custo adicional para transferência segura de dados por HTTPS.
Para descobrir como o Edge Firewall pode melhorar a segurança de sua aplicação serverless, entre em contato com nossa equipe de vendas ou crie uma conta grátis e comece a construir regras de segurança personalizadas agora mesmo.