1 of 20
2 of 20
3 of 20
4 of 20
5 of 20
6 of 20
7 of 20
8 of 20
9 of 20
10 of 20
11 of 20
12 of 20
13 of 20
14 of 20
15 of 20
16 of 20
17 of 20
18 of 20
19 of 20
20 of 20

doc

Edge Functions no Edge Firewall

  1. Edge Functions em JavaScript
  2. Como funcionam as Edge Functions no Edge Firewall
  3. Possibilidades
  4. Executar a função

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() e event.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


Não encontrou o que procurava? Abra um ticket.