API de metadados
As edge functions no Edge Firewall têm acesso a um conjunto de metadados que podem ser manipulados para:
- Filtrar e gerenciar o acesso a sua aplicação.
- Aplicar lógicas específicas para diferentes cenários.
Esta documentação de referência descreve os metadados disponíveis e como acessá-los.
GeoIP
Os dados de GeoIP
são sobre a localização geográfica do cliente com base em dados de IP.
Nome | Descrição |
---|---|
geoip_asn | Número de Sistema Autônomo (ASN na sigla em inglês) |
geoip_city | Cidade |
geoip_city_continent_code | Código da cidade |
geoip_city_country_code | Código de cidade e país |
geoip_city_country_name | Nome de cidade e país |
geoip_continent_code | Código do continente |
geoip_country_code | Código do país |
geoip_country_name | Nome do país |
geoip_region | Região |
geoip_region_name | Nome da região |
Remote
Os dados de Remote
fornecem detalhes sobre o endereço IP e a porta TCP.
Nome | Descrição |
---|---|
remote_addr | Endereço de IP do remote (client) |
remote_port | Porta TCP do remote (client) |
remote_user | Usuário informado na URL. Exemplo: usuário em http://user@site.com/ |
Server
Os dados de server
retornam detalhes sobre o protocolo sendo utilizado na requisição.
Nome | Descrição |
---|---|
server_protocol | Protocolo sendo utilizado na requisição. Exemplo: HTTP/1.1 |
TLS
Os dados de TLS
estão disponíveis quando a requisição é feita através de uma conexão TLS segura.
Nome | Descrição |
---|---|
ssl_cipher | Cifra TLS usada |
ssl_protocol | Protocolo TLS usado |
Uso
Você pode acessar os metadados através de event.request.metadata []
, por exemplo:
let ip = event.request.metadata["remote_addr"] // Acessando o remote address da requisição
Implementação
No exemplo de código abaixo:
- O endereço remoto é acessado.
- É verificado se este endereço está listado em uma network list.
- Se estiver na lista, a solicitação será negada.
addEventListener("firewall", (event) => {
let ip = event.request.metadata["remote_addr"]
try { let found = Azion.networkList.contains(String(networkListId), ip); if (found) { event.deny(); } } catch (err) { event.console.error(`Error: `, err.stack); } });
Contribuidores