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:
- Segurança no Serviço de Aplicações do Azure
- Controlos de segurança incorporados
- Proteja as práticas recomendadas de desenvolvimento no Azure.
- Práticas recomendadas de segurança para soluções do Azure (relatório PDF)
- Responsabilidades partilhadas em matéria de computação em nuvem
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:
- GitHub - Encontrando vulnerabilidades de segurança e erros em seu código
- GitHub - Gerenciando vulnerabilidades de segurança em seu projeto
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:
- Validação de entrada do Azure Functions com FluentValidation
- Quadro de segurança: Mitigações de validação de entrada
- Validação de solicitação de função de gatilho HTTP
- Como validar a solicitação para o Azure Functions
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:
- Ative a autenticação e a autorização do Serviço de Aplicativo para seu aplicativo Funções. Consulte Chaves de autorização.
- Use o Azure API Management (APIM) para autenticar solicitações. Consulte Importar um aplicativo de função do Azure como uma API no Gerenciamento de API do Azure.
- Implante seu aplicativo Functions em um Ambiente do Serviço de Aplicativo (ASE) do Azure.
- Use um Plano do Serviço de Aplicativo que restrinja o acesso e implemente o Azure Front Door + WAF para lidar com suas solicitações de entrada. Consulte Criar uma porta frontal para um aplicativo Web global altamente disponível.
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:
- O que é o controlo de acesso baseado em funções do Azure (Azure RBAC)?
- Funções incorporadas do Azure
- Funções personalizadas do Azure
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:
- O que são identidades geridas para recursos do Azure?
- Como usar identidades gerenciadas para o Serviço de Aplicativo e o Azure Functions
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:
- Proteja seus aplicativos com o Microsoft Defender for Cloud
- Recomendações do aplicativo Defender for Cloud
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
Comentários
https://aka.ms/ContentUserFeedback.
Brevemente: Ao longo de 2024, vamos descontinuar progressivamente o GitHub Issues como mecanismo de feedback para conteúdos e substituí-lo por um novo sistema de feedback. Para obter mais informações, veja:Submeter e ver comentários