Edge Functions no Edge Firewall
Edge Functions em JavaScript
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 da rede.
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.
Como funcionam as edge functions no Edge Firewall
Nota: as edge functions em JavaScript no Edge Firewall são executadas na fase de request.
Processo
- As regras configuradas nas Rules Engine do Edge Firewall para a execução da função são acionadas.
- O Azion Cells 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.
Run Function
Veja Como criar e configurar uma edge function em seu Edge Firewall para mais detalhes do processo.
Nota: todas as edge functions utilizadas no Edge Firewall devem ter uma chamada de um evento finalizador, como por exemplo:
event.continue()
,event.deny()
eevent.drop()
.
Possibilidades
Adicionar Header da Requisição
Você pode adicionar headers na requisição que é enviada à origem.
addEventListener("firewall", (event) => {
event.addRequestHeader("X-Custom-Header-1", "1");
event.addRequestHeader("X-Custom-Header-2", "2");
event.continue();
});
Adicionar Header da Resposta
Você pode adicionar headers na resposta que é enviada aos usuários.
addEventListener("firewall", (event) => {
event.addResponseHeader("X-Custom-Header-3", "3");
event.addResponseHeader("X-Custom-Header-4", "4");
event.continue();
});
Deny (403 Forbidden)
Através do evento event.deny()
, você pode finalizar uma requisição retornando HTTP 403 Forbidden.
addEventListener("firewall", (event) => {
event.deny();
});
Drop (Fechar Sem Resposta)
Através do evento event.drop()
, você pode finalizar uma solicitação sem retornar uma resposta ao cliente.
addEventListener("firewall", (event) => {
event.drop();
});
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.
event.respondWith(new Response('{"my_custom_response": true}', {
status: 599,
headers: { "content-type": "application/json" }
}));
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.
Remote
Você pode verificar o endereço de IP e a porta TCP utilizada.
Lista de metadados disponíveis
Nome | Descrição |
---|---|
geoip_asn | Informação de GeoIP |
geoip_city | Informação de GeoIP |
geoip_city_continent_code | Informação de GeoIP |
geoip_city_country_code | Informação de GeoIP |
geoip_city_country_name | Informação de GeoIP |
geoip_continent_code | Informação de GeoIP |
geoip_country_code | Informação de GeoIP |
geoip_country_name | Informação de GeoIP |
geoip_region | Informação de GeoIP |
geoip_region_name | Informação de GeoIP |
remote_addr | Remote (client) endereço IP |
remote_port | Remote (client) porta TCP |
remote_user | Usuario informado na URL. Exemplo: user em http://user@site.com/ |
server_protocol | Protocolo usado na requisição. Exemplo: HTTP/1.1 |
ssl_cipher | TLS/SSL cipher utilizado |
ssl_protocol | Protocolo TLS/SSL used |
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.
Leia também
- Edge Firewall
- Edge Firewall - Edge Functions Instances
- Como executar edge functions dentro de seu edge firewall
- Edge Functions
Não encontrou o que procurava? Abra um ticket.