API de metadados
As functions no 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 |
Fingerprints do Servidor
Os metadados de Impressões Digitais do Servidor fornecem informações de fingerprinting TLS para análise de segurança aprimorada.
| Nome | Descrição |
|---|---|
| server_fingerprint | Fingerprint TLS do servidor |
| server_fingerprint_ja4h | Fingerprint JA4H do servidor |
Identificadores
| Identificador | Descrição |
|---|---|
| solution_id | Identificador interno da Solução (conjunto de produtos) que processa a requisição. |
| client_id | Identificador da conta Azion (cliente) proprietária do workload. |
| function_id | Identificador da instância da Function executada para esta requisição. |
| configuration_id | Identificador da configuração da Function (versão / revisão) aplicada. |
| virtualhost_id | Identificador do Virtual Host (domínio da Applications) que recebeu a requisição. |
| edge_connector_id | Identificador do Connector utilizado quando a requisição é roteada por um conector. Um traço (-) é retornado se não houver. |
| request_id | ID globalmente único automaticamente atribuído a cada requisição; útil para rastreamento ponta a ponta. |
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çãoImplementaçã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); } });