Getty Images

Crie um ponto final privado para proteger aplicações Azure Functions

Não negligencie a segurança e deixe suas funções expostas. Saiba como os pontos finais privados podem adicionar uma camada extra de proteção às suas aplicações Azure Function.

O Azure Functions permite que os desenvolvedores executem pequenos pedaços de código, ou funções, em resposta a vários eventos sem a necessidade de gerenciar a infraestrutura subjacente. Múltiplas fontes, como solicitações HTTP, operações de banco de dados e eventos de timer, podem acionar essas funções.

Com o Azure Functions, os desenvolvedores podem se concentrar apenas no código, enquanto o Azure cuida do dimensionamento, da manutenção e da execução. Essa arquitetura sem servidor é ideal para criar microsserviços, aplicativos orientados a eventos e tarefas automatizadas. Ele oferece uma solução econômica que cobra apenas pelo tempo de computação real utilizado.

Embora existam inúmeros benefícios, as empresas precisam ser proativas em relação à segurança. Segurança é essencial para Funções do Azure para diversos razões:

  • Proteção de dados. O Azure Functions interage frequentemente com dados confidenciais, sejam informações do usuário, dados transacionais ou informações comerciais proprietárias. As empresas precisam proteger os dados para evitar acesso não autorizado e violações de dados.
  • Confiabilidade. Para empresas e desenvolvedores, a confiabilidade de um aplicativo ou serviço é crucial. Atores maliciosos podem explorar Azure Functions inseguras, minando a confiança entre usuários e partes interessadas.
  • Conformidade. Muitas indústrias têm requisitos regulatórios rígidos em relação ao manuseio e processamento de dados. O Secure Azure Functions ajuda as empresas a manter a conformidade e evitar repercussões legais e possíveis multas.
  • Implicações financeiras. Uma violação de segurança pode levar a perdas financeiras, tanto diretamente através de roubo como indiretamente através de danos à reputação, perda de clientes e custos de reparação.
  • Preocupações com a integração. O Azure Functions geralmente se integra a outros serviços e aplicativos. Uma vulnerabilidade de segurança numa função pode expor ou comprometer estes sistemas conectados.

Nesta dica, aprenda os fundamentos de um endpoint privado, práticas recomendadas, erros comuns a serem evitados e como criar um endpoint privado.

O que é um endpoint privado?

Proteger o Azure Functions não se trata apenas de proteger uma única função, mas também de salvaguardar todo o ecossistema com o qual interage, garantindo a integridade dos dados e mantendo a confiança.

Um recurso que ajuda a proteger o Azure Functions é um ponto final privado. Esta é uma interface de rede que se conecta a um serviço específico do Azure, como o Azure Functions, através de um link privado. Significa que o tráfego entre uma rede virtual e o serviço Azure está isolado da Internet pública.

Existem vários benefícios na utilização de um ponto final privado para Funções Azure:

  • Maior segurança. Isolar o tráfego entre uma rede virtual e o Azure Functions ajuda a proteger os dados contra acesso não autorizado.
  • Performance melhorada. Os pontos finais privados utilizam o Azure Private Link para encaminhar o tráfego diretamente entre uma rede virtual e as Funções do Azure, o que pode melhorar o desempenho.
  • Custos reduzidos. Com um endpoint privado, as empresas podem evitar pagar pelo tráfego de saída da internet pública.

Práticas recomendadas para endpoints privados

A chave para usar pontos finais privados é garantir que a configuração de rede subjacente exista conforme necessário. Algumas abordagens e práticas podem ajudar a manter um endpoint privado seguro, controlado e fácil de gerenciar. Confira alguns de estes:

  • Utilize uma sub-rede dedicada para pontos finais privados. Isto ajuda a isolar pontos finais privados de outro tráfego numa rede virtual.
  • Habilite o Link Privado no aplicativo Azure Functions. O Private Link deve ser habilitado no aplicativo Azure Functions para se conectar ao ponto final privado.
  • Utilize uma etiqueta de serviço para controlar o acesso a pontos finais privados. Ajuda a garantir que apenas usuários autorizados possam acessar terminais privados.
  • Monitore endpoints privados. Monitorize pontos finais privados utilizando o Azure Monitor para garantir que estão a funcionar corretamente.
  • Atualize os pontos finais privados regularmente. Atualize os pontos finais privados regularmente para garantir que utilizam os recursos de segurança mais recentes.

Algumas opções adicionais são as seguintes:

  • Utilize uma zona DNS privada para resolver o endereço IP do ponto final privado.
  • Utilize um equilibrador de carga para distribuir o tráfego para a sua aplicação Azure Functions.
  • Utilize uma firewall para controlar o acesso à sua aplicação Azure Functions.

Etapas para criar um endpoint privado

Para criar um ponto final privado para Azure Functions, você precisa do seguinte:

  • Assinatura do Azure
  • Recurso Azure grupo
  • Rede virtual
  • Sub-rede na rede virtual
  • Azure Functions

Passo 1. Selecione uma função modelo

Crie uma função do Azure com um dos modelos pré-criados ou use um código personalizado. Para fazer isso, abra o Visual Studio, selecione New Project, escolha Azure Function e selecione o modelo necessário.

Figura 1. Escolha o modelo de projeto do Visual Studio Azure Functions.

Para este exemplo, use o modelo de gatilho HTTP padrão (HTTP trigger), incluindo todo o código de amostra que o modelo cria.

Figura 2. Selecione o gatilho HTTP como modelo.

Conclua as propriedades e crie o projeto. O código de exemplo a seguir é criado por padrão ao usar o modelo de gatilho Microsoft Http —o nome da função é diferente:

classe estática pública funcAWZI0LK5

{

[ FunçãoNome ("funcAWZI0LK5")]

tarefa assíncrona estática pública< IActionResult > Run( [ HttpTrigger ( AuthorizationLevel.Anonymous , "get", "post", Route = null)] HttpRequest requerimento ,

Registro do ILogger )

{

log.LogInformation ("A função de gatilho HTTP C# processou uma solicitação.");

string nome = req.Query ["nome"];

string requestBody = aguarda novo StreamReader ( req.Body ). ReadToEndAsync ();

dados dinâmicos = JsonConvert.DeserializeObject ( requestBody );

nome = nome ?? dados?.nome;

string respostaMessage = string.IsNullOrEmpty (nome)? "Esta função acionada por HTTP foi executada com sucesso. Passe um nome na string de consulta ou no corpo da solicitação para uma resposta personalizada.": $"Olá, {nome}. Esta função acionada por HTTP foi executada com sucesso. ";

retornar novo OkObjectResult ( responseMessage );

}

}

Passo 2. Teste a função

Para testar a função, navegue até a página de visão geral para obter o URL.

Figura 3. Recuperar a URL do Azure Functions.

Navegar até a URL exibe uma página do Azure informando que a função funciona. Para usar o código da função, anexe o URL com /API/nome-da-função -- no código de exemplo, ou seja, /API/HttpAWZI0LK5. Ou, se quiser passar dados para ele, você pode usar algo como /API/HttpAWZI0LK5?name=Liam Cleary.

A configuração padrão permite que qualquer pessoa chame a função porque torna o método de autorização anônimo. É melhor mudar para uma opção mais segura, a menos que você precise de acesso anônimo à função. Modifique o código para a configuração desejada, adicione qualquer configuração específica à função e publique novamente no Azure.

Etapa 3. Adicione um endpoint privado

Para utilizar o ponto final privado para a função Azure, navegue até à função no Portal Azure e escolha Networking na secção de definições.

Figura 4. Escolha a opção de rede nas configurações do Azure Functions.

Existem várias opções disponíveis para networking dentro de uma função do Azure. Todas essas opções estão desabilitadas, então você precisa selecionar a opção necessária:

  • Restrição de acesso. Isto fornece restrições, permitindo ou negando acesso a endereços IP ou sub-redes específicos.
  • Endereço atribuído ao aplicativo. Pode ser útil se você precisar que o aplicativo esteja acessível online.
  • Ponto final privado. Isto garante que o tráfego entre a rede virtual e o serviço Azure está isolado da Internet pública.

Para utilizar a opção de endpoint privado, clique no link que leva às opções de configuração.

Figura 5. Visualize conexões de endpoint privado.

Clique na opção Adicionar para adicionar o endpoint privado e escolha Express ou Advanced. As opções expressas requerem alguns valores e depois criam o ponto final privado.

Figura 6. Adicione um endpoint privado expresso.

Depois que o ponto final privado for criado na configuração, as opções de ponto final privado e de restrições de acesso serão habilitadas. Ao navegar até o URL do endpoint original, você não recebe uma mensagem proibida.

Figura 7. Habilite restrições após criar um endpoint privado.

Agora bloqueia o acesso externo regular em favor do novo link de endpoint privado. Dentro da configuração de restrição de acesso, a caixa de seleção Permitir acesso público agora está desmarcada, o que bloqueia o acesso ao endpoint público para os sites de ferramentas principais e avançados. Adicione uma entrada DNS local que saiba como chegar ao endereço IP atribuído ao ponto final privado.

Para proteger ainda mais a função com o ponto final privado, adicione um gateway de aplicação que controle o encaminhamento externo de volta ao ponto final privado. Ou certifique-se de ter um link privado para o locatário do Azure direto da rede que chama a função.

Erros comuns a serem evitados com endpoints privados

Existem alguns erros comuns a evitar ao criar pontos finais privados para Funções Azure:

  • Assinatura ou grupo de recursos errado. Utilize a subscrição e o grupo de recursos corretos ao criar o ponto final privado. O ponto final privado não pode ligar-se à sua aplicação Azure Functions sem as seleções corretas.
  • Endpoint privado criado na sub-rede errada. O ponto final privado deve ser criado na mesma sub-rede que a sua aplicação Azure Functions. Se criar o ponto final privado na sub-rede errada, o ponto final privado não conseguirá ligar-se à sua aplicação Azure Functions.
  • Não habilitando o Private Link no aplicativo Azure Functions. As empresas precisam ativar o Private Link no aplicativo Azure Functions para se conectarem ao ponto final privado. Se o Private Link não estiver ativado, a aplicação Azure Functions não poderá ligar-se ao ponto final privado.
  • Não utilizar uma sub-rede dedicada para os seus pontos finais privados. A utilização de uma sub-rede dedicada ajuda a isolar pontos finais privados de outro tráfego numa rede virtual.

 

Saiba mais sobre Software Office e Microsoft