Edge Functions no Edge Firewall
Edge Functions são funções executadas na plataforma de Edge da Azion, com a latência baixa, levando a capacidade operacional para mais perto do usuário final.
Edge Firewall suporta edge functions. Através delas, você pode escrever seu próprio código de segurança em JavaScript e realizar deploy no edge.
Com edge functions nos Edge Firewall, você pode:
- Melhorar sua proteção.
- Ter mais dinamismo.
- Implementar a lógica necessária para o funcionamento do seu negócio.
- Fazer uso de APIs que possibilitam a manipulação dos headers de request e response.
Implementação
Escopo | Guia |
---|---|
Como criar e configurar uma edge function em seu Edge Firewall | Como criar e configurar uma edge function no seu Edge Firewall |
Exemplos | Exemplos de functions para firewall |
Exemplos no GitHub | Repositório do GitHub |
Como funcionam as edge functions no Edge Firewall
Processo
- As regras configuradas nas Rules Engine do Edge Firewall para a execução da função são acionadas.
- O Azion Runtime processa a função, retornando um resultado.
- O Edge Firewall Rules Engine prossegue com o processamento, baseado no resultado recebido, a partir do ponto que o comportamento foi acionado.
Adicionar Header da Requisição
Você pode adicionar headers na requisição que é enviada à origem.
Adicionar Header da Resposta
Você pode adicionar headers na resposta que é enviada aos usuários.
Deny (403 Forbidden)
Através do evento event.deny()
, você pode finalizar uma requisição retornando HTTP 403 Forbidden.
Drop (Fechar Sem Resposta)
Através do evento event.drop()
, você pode finalizar uma solicitação sem retornar uma resposta ao cliente.
Respond with
Através do evento event.respondWith()
, você pode interceptar requisições e retornar respostas customizadas, além de modificar os headers da resposta ou o conteúdo.
Metadados
As edge functions no Edge Firewall possibilitam a manipulação de metadados.
Utilizando esses metadados, você pode filtrar e gerenciar o acesso às suas aplicações e implementar a lógica específica em diferente cenários, como por exemplo:
Informação de GeoIP
Você pode negar acesso quando a requisição vem de lugares específicos.
Leia mais sobre a lista de metadados de GeoIP.
Remote
Você pode verificar o endereço de IP e a porta TCP utilizada.
Leia mais sobre a lista de metadados de Remote.
Server
Você pode verificar o protocolo sendo usado na requisição.
Leia mais sobre a lista de metadados de Server.
TLS
Os metadados relacionados a TLS estarão disponíveis quando a requisição for feita de uma conexão segura.
Leia mais sobre a lista de metadados de TLS.
Repositório Azion Samples
Acesse o repositório Azion Samples no GitHub e analise os code samples que podem ajudar no desenvolvimento de suas edge functions.
Práticas recomendadas
Conditionals
Ao trabalhar com condicionais e event.method
, use if else
. Caso a implementação seja semelhante a:
Ela pode acabar com comportamentos inesperados.
É altamente recomendável utilizar da seguinte forma:
Sync x async
Como o eventHandler
é síncrono, é necessário escrever uma function assíncrona quando await
é implementado.
Recomenda-se usar event.waitUntil
. Caso contrário, a promise
pode acabar em exceções inesperadas.