Entenda as CNAPPs com o nosso guia
Entenda as CNAPPs com o nosso guia
Quais são as práticas recomendadas de segurança para ambientes sem servidor?
A computação sem servidor envolve a alocação e o provisionamento dinâmicos e sob demanda de infraestrutura de aplicações, como poder computacional ou recursos de armazenamento. Ela permite que as equipes de DevOps se concentrem na entrega de aplicações, abstraindo as preocupações com a infraestrutura e transferindo-as para os provedores de nuvem. As arquiteturas sem servidor podem incluir funções que executam trechos de código discretos ou bancos de dados temporários usados por uma ramificação de desenvolvimento de curta duração.
Os recursos sem servidor trazem uma abordagem dinâmica e distribuída para a computação, o que, por sua vez, introduz demandas de segurança exclusivas que requerem uma abordagem também exclusiva.
Neste artigo, abordaremos quatro práticas recomendadas para lidar com problemas de segurança comuns associados à arquitetura sem servidor. A adoção dessas práticas recomendadas ajudará a sua organização a manter uma postura de segurança forte e robusta.
Expert Tip
A nuvem é um termo usado para descrever servidores, bem como quaisquer serviços associados, aplicações de software, bancos de dados, containers e workloads, que são acessados remotamente pela Internet. Os ambientes de nuvem são normalmente divididos em duas categorias: uma nuvem privada, que é um ambiente de nuvem usado exclusivamente por um cliente; ou uma nuvem pública, que é um ambiente compartilhado por mais de um usuário.
Prática recomendada nº 1: adotar o princípio do privilégio mínimo
Ao definir permissões para recursos sem servidor, é essencial compreender o conceito de "privilégio mínimo". O uso de permissões excessivamente amplas para uma função sem servidor pode introduzir o risco de vulnerabilidades de acesso não autorizado caso um ator malicioso comprometa um recurso. Para mitigar esse risco, limite os direitos de acesso de todos os recursos ao mínimo necessário para concluir suas tarefas, e nada além.
Uso do controle de acesso baseado em funções
O RBAC (Role-Based Access Control, Controle de Acesso Baseado em Funções) define funções que têm permissões para acessar recursos. Assim, os usuários ou grupos recebem essas funções somente quando necessário. Essa abordagem garante que as organizações tenham acesso granular e escalável. O RBAC é uma abordagem mais segura do que atribuir permissões diretamente a usuários individuais. Ele facilita a revisão de funções, pois permite restringir recursos acessados com frequência a funções reutilizáveis para aplicações, usuários ou grupos.
Auditorias e ajustes regulares de permissões
É essencial rever e auditar as permissões e funções regularmente para garantir que estejam adequadas à finalidade, especialmente quando as aplicações subjacentes sofrem alterações. Negligenciar essas auditorias e ajustes pode levar à proliferação de permissões para serviços e recursos, criando possíveis vulnerabilidades de segurança em aplicações comprometidas.
Expert Tip
De acordo com esse modelo, o CSP, como o Google Cloud Platform (GCP), a Amazon Web Services (AWS) e o Microsoft Azure (Azure), é responsável por gerenciar e proteger a segurança do hardware subjacente. No entanto, espera-se que os clientes habilitem a segurança na camada de infraestrutura e aplicação. Isso inclui todas as ferramentas, tecnologias, políticas e métodos destinados a proteger os dados da organização e outros ativos baseados na nuvem.
Prática recomendada nº 2: implementar monitoramento e registro robustos
Ambientes sem servidor envolvem implementações rápidas e frequentemente transitórias. Para abordar esses ambientes de forma eficaz, considere os seguintes pontos em sua abordagem de monitoramento de segurança.
Registro detalhado de funções
O registro detalhado pode oferecer visibilidade sobre o comportamento das funções sem servidor no ambiente de execução, permitindo detectar possíveis ameaças ou violações decorrentes de comportamentos inesperados ou da execução antecipada das funções. Para obter capacidades de registro suficientes para as funções sem servidor, utilize ferramentas de registro otimizadas para ambientes sem servidor, capazes de processar e gerar logs de forma eficiente. Esses módulos otimizados fornecem logs de execução detalhados, incluindo IDs de correlação, carimbos de data/hora e dados de diagnóstico.
Monitoramento de logs e alertas
Embora as funções da sua aplicação gerem logs detalhados, atente-se a atividades ou padrões incomuns nelas e aja rapidamente para identificar possíveis problemas. Atividades anômalas se manifestam como valores discrepantes no tempo de execução, na memória consumida ou em erros de tempo de execução. Para as equipes, monitorar esses valores discrepantes nas rotas de acesso à API, fontes de dados ou volumes de solicitações pode ser vital para identificar saídas de código inesperadas ou atores mal-intencionados que sondam um sistema sem servidor em busca de vulnerabilidades.
Utilize um sistema centralizado de gerenciamento e monitoramento de logs para correlacionar a atividade em seus sistemas distribuídos e funções sem servidor. Soluções robustas e modernas possuem capacidades de alerta integradas, permitindo que as equipes tomem medidas de remediação rapidamente.
Armazenamento seguro e revisão de logs
Certifique-se de que os logs sejam transmitidos com segurança de suas aplicações para seus locais de processamento e armazenamento. O armazenamento de logs também deve ser seguro. Analise regularmente esses logs armazenados para obter insights e tendências que permitam identificar vulnerabilidades ou ataques contra suas aplicações.
Prática recomendada nº 3: adotar práticas de codificação segura
É comum que funções sem servidor integrem módulos e serviços de terceiros. Quanto mais o código da sua aplicação depende de módulos de terceiros, maior é a superfície de ataque a vulnerabilidades. Portanto, ao desenvolver aplicações sem servidor nesse ambiente, desenvolva suas funções com a segurança em mente. Mitigue os riscos comuns implementando processos de revisão e varredura para eliminar códigos inseguros.
Validação de entradas
Ao lidar com entradas em funções sem servidor, higienize todas as entradas nas funções sem servidor ou quaisquer dados obtidos de fontes externas, como APIs de terceiros. Essa sanitização impede ameaças de injeção de código, como o envio de código não intencional ou pacotes maliciosos.
Processo de revisão
Conforme mencionado acima, as aplicações sem servidor normalmente integram módulos de terceiros. Os responsáveis pela manutenção atualizam regularmente esses módulos com correções de segurança para evitar a introdução de vulnerabilidades na função. Certifique-se de atualizar regularmente suas dependências de terceiros. As atualizações devem incluir o ambiente de execução da aplicação (como Java, Python ou Node.js) para uma versão com manutenção ativa.
Ao analisar as dependências de uma aplicação, verifique regularmente se há falhas de segurança para remover vulnerabilidades já identificadas e conhecidas. Esse processo pode ser concluído manualmente, de acordo com um cronograma, ou por meio de ferramentas automatizadas de varredura de segurança, para reduzir essa workload. A automação pode criar e recomendar atualizações de versão seguras ou correções de segurança no código.
Segurança shift-left
Ao integrar verificações de segurança em qualquer processo de desenvolvimento, considere uma abordagem "shift-left" para integrar a verificação antecipadamente no ciclo de desenvolvimento, como na fase de desenvolvimento ou inicialização do projeto. Esse processo economiza tempo de desenvolvimento ao identificar possíveis problemas de segurança antes da fase final de testes ou lançamento de um projeto.
Prática recomendada nº 4: fortalecer a segurança da rede
Aplicações distribuídas, que podem ser implementadas por meio de funções sem servidor, geralmente exigem comunicação com serviços externos. Isso aumenta os possíveis pontos de ataque, especialmente se a comunicação entre clientes e serviços externos não for segura. Portanto, você deve proteger os fluxos de dados entre funções sem servidor e serviços externos para evitar interceptação ou adulteração do fluxo de dados.
Protocolos de criptografia
Os desenvolvedores devem implementar protocolos criptografados para proteger a comunicação sempre que uma função sem servidor se comunicar com APIs e serviços externos. Juntamente com o HTTPS, esses protocolos incluiriam o TLS para conexões não HTTP, mitigando efetivamente ataques do tipo "adversary-in-the-middle" e impedindo o envio de dados em texto não criptografado pela rede.
Gateways de API
Suponha que existam funções sem servidor que exponham APIs nas quais terceiros tenham interesse. Nesse caso, utilize uma solução de gateway de API para gerenciar melhor suas APIs, melhorando sua postura de segurança. O gateway fica entre os clientes que chamam suas APIs e sua função sem servidor de backend. Essa centralização garante que as políticas e os requisitos de segurança (como autenticação de aplicações ou políticas de controle de acesso a recursos de API) sejam aplicados de forma uniforme em todos os serviços.
Restrição do acesso à rede
Não é incomum que as organizações executem suas funções sem servidor na nuvem pública. Se essa for a realidade da sua organização, é fundamental restringir o acesso à rede apenas a rotas definidas, provenientes de fontes e serviços confiáveis. Esta é mais uma camada de segurança para aplicações, bloqueando o acesso de qualquer pessoa que não esteja no seu ambiente de rede antes que os dados cheguem à aplicação.
CrowdStrike e segurança sem servidor
As funções sem servidor oferecem às equipes agilidade nos processos de desenvolvimento e escalabilidade dinâmica de acordo com a demanda. No entanto, essa abordagem exige que se priorize a correção das vulnerabilidades mais arriscadas.
Práticas de programação segura e o acesso com privilégios mínimos reduzem significativamente a entrada de vulnerabilidades em ambientes sem servidor. Estabeleça uma trilha de auditoria clara para um monitoramento e registro robustos de aplicações. Esses controles fazem parte da abordagem holística para segurança sem servidor — desde a fase de desenvolvimento até o ambiente de execução da aplicação.
Para implementar, revisar e manter-se a par das práticas recomendadas neste ambiente tecnológico em constante mudança, escolha uma plataforma que incorpore todas essas funcionalidades e muito mais. A plataforma CrowdStrike Falcon® oferece às equipes soluções completas e integradas para proteger seus ambientes de nuvem, incluindo funções sem servidor.
Entre em contato conosco para obter mais informações ou se inscreva para uma avaliação gratuita de 15 dias da plataforma Falcon para saber mais.