Proteja o Azure Functions com Hubs de Eventos
Ao configurar o acesso a recursos no Azure, você deve aplicar um controle refinado sobre as permissões aos recursos. O acesso a esses recursos deve ser baseado na necessidade de conhecer e nos princípios de segurança de privilégios mínimos para garantir que os clientes só possam executar o conjunto limitado de ações concedidas a eles.
Autorizando o acesso a Hubs de Eventos
A autorização de acesso aos recursos dos Hubs de Eventos do Azure pode ser feita usando as seguintes construções de segurança:
Microsoft Entra ID: O Microsoft Entra ID fornece controle de acesso baseado em função (RBAC) para controle granular sobre o acesso de um cliente aos recursos dos Hubs de Eventos. Com base nas funções e permissões concedidas, o Microsoft Entra ID autorizará solicitações usando um token de acesso OAuth 2.0.
Assinatura de acesso compartilhado: uma assinatura de acesso compartilhado (SAS) oferece a capacidade de proteger recursos de Hubs de Eventos com base em regras de autorização. Você define políticas de autorização selecionando uma ou mais regras de política, como a capacidade de enviar mensagens, ouvir mensagens e gerenciar as entidades no namespace.
Considerações sobre assinatura de acesso compartilhado
Ao usar uma assinatura de acesso compartilhado com o Azure Functions e Hubs de Eventos, as seguintes considerações devem ser revisadas:
Evite o direito Gerenciar: além de poder gerenciar as entidades em um namespace de Hubs de Eventos, o direito Gerenciar inclui os direitos Enviar e Ouvir. Idealmente, um aplicativo de função só deve receber uma combinação dos direitos Enviar e Ouvir, com base nas ações que executa.
Não use a regra Gerenciar padrão: evite usar a regra de política padrão chamada RootManageSharedAccessKey, a menos que seja necessária para seu aplicativo de função, o que deve ser um cenário incomum. Outra ressalva a essa regra padrão é que ela é criada no nível do namespace e concede permissões a todos os hubs de eventos subjacentes.
Revisar escopos de política de acesso compartilhado: as políticas de acesso compartilhado podem ser criadas no nível de namespace e por hub de evento. Considere a criação de políticas de acesso granulares adaptadas para cada cliente para limitar seu alcance e permissões.
Identidade gerida
Uma identidade do Ative Directory pode ser atribuída a um recurso gerenciado no Azure, como uma função, aplicativo ou aplicativo Web. Depois que uma identidade é atribuída, ela tem os recursos para trabalhar com outros recursos que usam o Microsoft Entra ID para autorização, como uma entidade de serviço.
Os aplicativos de função podem receber uma identidade gerenciada e aproveitar as conexões baseadas em identidade para um subconjunto de serviços, incluindo Hubs de Eventos. As conexões baseadas em identidade fornecem suporte para as extensões de vinculação de gatilho e saída e devem usar a extensão de Hubs de Eventos 5.x e superior para suporte.
Rede
Por padrão, os namespaces dos Hubs de Eventos podem ser acessados pela Internet, desde que a solicitação seja fornecida com autenticação e autorização válidas. Há três opções para limitar o acesso à rede aos namespaces dos Hubs de Eventos:
- Permitir acesso a partir de endereços IP específicos
- Permitir acesso a partir de redes virtuais específicas (pontos de extremidade de serviço)
- Permitir o acesso através de terminais privados
Em todos os casos, é importante observar que pelo menos uma regra de firewall IP ou regra de rede virtual para o namespace é especificada. Caso contrário, se nenhum endereço IP ou regra de rede virtual for especificado, o namespace poderá ser acessado pela Internet pública (usando a chave de acesso).
O Azure Functions pode ser configurado para consumir eventos ou publicar eventos em hubs de eventos, que são configurados com pontos de extremidade de serviço ou pontos de extremidade privados. A integração de rede virtual regional é necessária para que seu aplicativo de função se conecte a um hub de eventos usando um ponto de extremidade de serviço ou um ponto de extremidade privado.
Quando você integra o Functions com uma rede virtual e habilita vnetRouteAllEnabled
o , todo o tráfego de saída do aplicativo de função é forçado através da rede virtual. Isso é particularmente importante para cenários em que você deseja proteger seu aplicativo de função garantindo que todo o tráfego, incluindo o tráfego para os serviços do Azure, passe pela sua rede virtual para inspeção e controle. Se você quiser bloquear totalmente seu aplicativo de função, também precisará restringir sua conta de armazenamento.
Para acionar (consumir) eventos em um ambiente de rede virtual, o aplicativo de função precisa ser hospedado em um plano Premium, um plano Dedicado (Serviço de Aplicativo) ou um Ambiente de Serviço de Aplicativo (ASE).
Além disso, a execução em um plano do Azure Functions Premium e o consumo de eventos de um Hub de Eventos restrito de rede virtual requer suporte a gatilho de rede virtual, também conhecido como monitoramento de escala de tempo de execução. O monitoramento da escala de tempo de execução pode ser configurado por meio do portal do Azure, da CLI do Azure ou de outras soluções de implantação. O monitoramento da escala de tempo de execução não está disponível quando a função está sendo executada em um plano Dedicado (Serviço de Aplicativo) ou em um ASE.
Contribuidores
Este artigo é mantido pela Microsoft. Foi originalmente escrito pelos seguintes contribuidores.
Autor principal:
- David Barkol - Brasil | Especialista Principal de Soluções GBB
Para ver perfis não públicos do LinkedIn, inicie sessão no LinkedIn.
Próximos passos
Antes de continuar, considere rever estes artigos relacionados: