Segurança de funções sem servidor

Este artigo descreve os serviços e atividades do Azure que o pessoal de segurança pode implementar para funções sem servidor. Essas diretrizes e recursos ajudam a desenvolver código seguro e implantar aplicativos seguros na nuvem.

Planeamento

Os principais objetivos de um ambiente de aplicativo seguro do Azure Functions sem servidor são proteger aplicativos em execução, identificar e resolver rapidamente problemas de segurança e evitar futuros problemas semelhantes.

O OWASP Serverless Top 10 descreve as vulnerabilidades de segurança de aplicativos sem servidor mais comuns e fornece técnicas básicas para identificar e proteger contra elas.

De muitas maneiras, o planejamento para desenvolvimento, implantação e operação seguros de funções sem servidor é muito semelhante ao de qualquer aplicativo baseado na Web ou hospedado na nuvem. O Serviço de Aplicativo do Azure fornece a infraestrutura de hospedagem para seus aplicativos funcionais. O artigo Protegendo o Azure Functions fornece estratégias de segurança para executar seu código de função e como o Serviço de Aplicativo pode ajudá-lo a proteger suas funções.

Para obter mais informações sobre segurança do Azure, práticas recomendadas e responsabilidades compartilhadas, consulte:

Implementação

Para preparar aplicativos do Serverless Functions para produção, o pessoal de segurança deve:

  • Realize revisões regulares de código para identificar vulnerabilidades de código e biblioteca.
  • Defina as permissões de recursos que o Functions precisa executar.
  • Configure regras de segurança de rede para comunicação de entrada e saída.
  • Identificar e classificar o acesso a dados confidenciais.

O artigo Linha de base de segurança do Azure para Azure Functions contém mais recomendações que ajudarão você a melhorar a postura de segurança de sua implantação.

Mantenha o código seguro

Encontre vulnerabilidades e erros de segurança no código e gerencie vulnerabilidades de segurança em projetos e dependências.

Para obter mais informações, consulte:

Executar validação de entrada

Diferentes fontes de eventos, como armazenamento de Blob, bancos de dados NoSQL do Azure Cosmos DB, hubs de eventos, filas ou eventos do Graph, podem acionar funções sem servidor. As injeções não se limitam estritamente às entradas provenientes diretamente das chamadas de API. As funções podem consumir outras entradas das possíveis fontes de eventos.

Em geral, não confie na entrada ou faça suposições sobre sua validade. Use sempre APIs seguras que limpem ou validem a entrada. Se possível, use APIs que vinculam ou parametrizam variáveis, como usar instruções preparadas para consultas SQL.

Para obter mais informações, consulte:

Pontos de extremidade HTTP seguros para desenvolvimento, teste e produção

O Azure Functions permite que você use chaves para dificultar o acesso aos pontos de extremidade da função HTTP. Para proteger totalmente seus pontos de extremidade de função em produção, considere implementar uma das seguintes opções de segurança no nível do aplicativo Function:

Para obter mais informações, consulte Proteger um ponto de extremidade HTTP em produção.

Configurar o controle de acesso baseado em função do Azure (Azure RBAC)

O controle de acesso baseado em função do Azure (Azure RBAC) tem várias funções internas do Azure que você pode atribuir a usuários, grupos, entidades de serviço e identidades gerenciadas para controlar o acesso aos recursos do Azure. Se as funções internas não atenderem às necessidades da sua organização, você poderá criar suas próprias funções personalizadas do Azure.

Analise cada aplicativo do Functions antes da implantação para identificar permissões excessivas. Examine cuidadosamente as funções para aplicar permissões de "menor privilégio", dando a cada função apenas o que ela precisa para ser executada com êxito.

Use o RBAC do Azure para atribuir permissões a usuários, grupos e aplicativos em um determinado escopo. O âmbito da atribuição de uma função pode ser uma subscrição, um grupo de recursos ou um único recurso. Evite usar curingas sempre que possível.

Para obter mais informações sobre o Azure RBAC, consulte:

Usar identidades gerenciadas e cofres de chaves

Um desafio comum ao criar aplicativos em nuvem é como gerenciar credenciais para autenticação em serviços de nuvem em seu código. As credenciais nunca devem aparecer no código do aplicativo, nas estações de trabalho do desenvolvedor ou no controle do código-fonte. Em vez disso, use um cofre de chaves para armazenar e recuperar chaves e credenciais. O Azure Key Vault fornece uma maneira de armazenar credenciais, segredos e outras chaves com segurança. O código é autenticado no Cofre da Chave para recuperar as credenciais.

Para obter mais informações, consulte Usar referências do Cofre da Chave para o Serviço de Aplicativo e o Azure Functions.

As identidades gerenciadas permitem que os aplicativos do Functions acessem recursos como cofres de chaves e contas de armazenamento sem exigir chaves de acesso ou cadeias de conexão específicas. Uma trilha de auditoria completa nos logs exibe quais identidades executam solicitações para recursos. Use o RBAC do Azure e identidades gerenciadas para controlar granularmente exatamente quais recursos os aplicativos do Azure Functions podem acessar.

Para obter mais informações, consulte:

Usar tokens de assinatura de acesso compartilhado (SAS) para limitar o acesso a recursos

Uma assinatura de acesso compartilhado (SAS) fornece acesso delegado seguro aos recursos em sua conta de armazenamento, sem comprometer a segurança de seus dados. Com uma SAS, você tem controle granular sobre como um cliente pode acessar seus dados. Você pode controlar quais recursos o cliente pode acessar, quais permissões eles têm nesses recursos e por quanto tempo o SAS é válido, entre outros parâmetros.

Para obter mais informações, consulte Conceder acesso limitado aos recursos do Armazenamento do Azure usando assinaturas de acesso compartilhado (SAS).

Armazenamento seguro de Blob

Identifique e classifique dados confidenciais e minimize o armazenamento de dados confidenciais apenas para o necessário. Para armazenamento de dados confidenciais, adicione autenticação multifator e criptografia de dados em trânsito e em repouso. Conceda acesso limitado aos recursos do Armazenamento do Azure usando tokens SAS.

Para obter mais informações, consulte Recomendações de segurança para armazenamento de Blob.

Otimização

Quando um aplicativo está em produção, a equipe de segurança pode ajudar a otimizar o fluxo de trabalho e se preparar para o dimensionamento.

Use o Microsoft Defender for Cloud e aplique recomendações de segurança

O Microsoft Defender for Cloud é uma solução de verificação de segurança para seu aplicativo que identifica possíveis vulnerabilidades de segurança e cria recomendações. As recomendações orientam você a configurar os controles necessários para fortalecer e proteger seus recursos.

Para obter mais informações, consulte:

Aplicar políticas de governança de aplicativos

Aplique imposições e proteções centralizadas e consistentes ao seu aplicativo em escala. Para obter mais informações, consulte Definições de política interna da Política do Azure.

Próximos passos