Recolha registos do WAF da Imperva
Este documento explica como recolher registos da firewall de aplicações Web (WAF) da Imperva para o Google Security Operations através de uma API (extração) ou do Amazon S3 (envio). O analisador transforma registos dos formatos SYSLOG+KV, JSON, CEF e LEEF num modelo de dados unificado (UDM). Processa várias estruturas de registos, extrai campos relevantes, normaliza-os em atributos da UDM e enriquece os dados com informações contextuais para uma análise de segurança melhorada.
Antes de começar
Certifique-se de que tem os seguintes pré-requisitos:
- Tipo de carregamento (API ou Amazon S3) que melhor se adapta aos seus requisitos de configuração.
- Instância do Google SecOps.
- Acesso privilegiado à AWS.
- Acesso privilegiado ao WAF da Imperva.
Recolha registos do WAF da Imperva através da API
Configure um utilizador só de leitura para o WAF da Imperva
- Inicie sessão na consola do Imperva com uma conta privilegiada.
- Aceda a Definições > Utilizadores e funções.
- Clique em Adicionar utilizador.
- Preencha os campos obrigatórios:
- Nome de utilizador: introduza um nome de utilizador único.
- Palavra-passe: defina uma palavra-passe forte.
- Email: indique o endereço de email do utilizador.
- Na secção Funções, selecione a função Leitor.
- Clique em Guardar para criar o utilizador com acesso só de leitura.
Opcional: configure o utilizador leitor como apenas API
- Na lista Utilizadores, localize o utilizador recém-criado.
- Clique no botão Ações (três pontos) junto ao nome do utilizador.
- Selecione Definir como utilizador apenas de API.
Gere o ID da API e a chave da API
- Na lista Utilizadores, selecione o utilizador recém-criado.
- Selecione Definições e clique em Chaves da API.
- Clique em Adicionar chave da API.
- Preencha os campos obrigatórios:
- Nome: introduza um nome descritivo para a chave da API.
- Opcional: Descrição: introduza uma descrição opcional.
- Na lista A chave de API expira em, selecione Nunca.
- Para ativar, selecione Estado.
- Clique em Guardar.
O sistema apresenta o ID da API e a chave da API. Copie e guarde estas credenciais, uma vez que não vão ser apresentadas novamente.
Configure feeds
Para configurar um feed, siga estes passos:
- Aceda a Definições do SIEM > Feeds.
- Clique em Adicionar novo feed.
- Na página seguinte, clique em Configurar um único feed.
- No campo Nome do feed, introduza um nome para o feed; por exemplo, Registos do WAF do Imperva Incapsula.
- Selecione API de terceiros como o Tipo de origem.
- Selecione Imperva como o Tipo de registo.
- Clicar em Seguinte.
- Especifique valores para os seguintes parâmetros de entrada:
- Cabeçalho HTTP de autenticação: introduza o ID e a chave da API Imperva em duas linhas:
apiId:<YOUR_API_ID>
eapiKey:<YOUR_API_KEY>
.
- Cabeçalho HTTP de autenticação: introduza o ID e a chave da API Imperva em duas linhas:
- Clicar em Seguinte.
- Reveja a configuração do feed no ecrã Finalizar e, de seguida, clique em Enviar.
Recolha registos do WAF da Imperva através do Amazon S3
Configure o AWS IAM e o S3
- Crie um contentor do Amazon S3 seguindo este manual do utilizador: Criar um contentor
- Guarde o Nome e a Região do contentor para utilização posterior.
- Crie um utilizador seguindo este guia do utilizador: criar um utilizador do IAM.
- Selecione o utilizador criado.
- Selecione o separador Credenciais de segurança.
- Clique em Criar chave de acesso na secção Chaves de acesso.
- Selecione Serviço de terceiros como o Exemplo de utilização.
- Clicar em Seguinte.
- Opcional: adicione uma etiqueta de descrição.
- Clique em Criar chave de acesso.
- Clique em Transferir ficheiro .csv e guarde a chave de acesso e a chave de acesso secreta para utilização posterior.
- Clique em Concluído.
- Selecione o separador Autorizações.
- Clique em Adicionar autorizações na secção Políticas de autorizações.
- Selecione Adicionar autorizações.
- Selecione Anexar políticas diretamente.
- Pesquise e selecione a política AmazonS3FullAccess.
- Clicar em Seguinte.
- Clique em Adicionar autorizações.
Configure a ligação do Imperva WAF ao Amazon S3
- Inicie sessão na consola do Imperva com uma conta privilegiada.
- Aceda a Registos > Configuração de registos.
- Selecione Amazon S3.
- Preencha os campos obrigatórios:
- Chave de acesso
- Chave secreta
- Caminho: introduza o caminho no seguinte formato:
<Amazon S3 bucket name>/<log folder>
; por exemplo:MyBucket/MyIncapsulaLogFolder
.
- Clique em Testar ligação para executar um ciclo de testes completo no qual um ficheiro de teste é transferido para a pasta designada.
- Selecione o formato dos ficheiros de registo como CEF.
- Por predefinição, os ficheiros de registo são comprimidos. Defina a opção para não comprimir ficheiros.
Configure um feed no Google SecOps para carregar registos do Imperva WAF a partir do Amazon S3
- Aceda a Definições do SIEM > Feeds.
- Clique em Adicionar novo.
- No campo Nome do feed, introduza um nome para o feed; por exemplo,
Imperva WAF Logs
. - Selecione Amazon S3 como o Tipo de origem.
- Selecione Imperva como o Tipo de registo.
- Clicar em Seguinte.
Especifique valores para os seguintes parâmetros de entrada:
URI do S3: o URI do contentor.
s3://your-log-bucket-name/
- Substitua
your-log-bucket-name
pelo nome real do contentor.
Opções de eliminação da origem: selecione a opção de eliminação de acordo com a sua preferência.
Clicar em Seguinte.
Reveja a nova configuração do feed no ecrã Finalizar e, de seguida, clique em Enviar.
Tabela de mapeamento da UDM
Campo de registo | Mapeamento do UDM | Lógica |
---|---|---|
account_id | target.user.userid | O ID da conta do objeto JSON |
agir | security_result.action | Se act for allowed , alert , começar por REQ_PASSED ou começar por REQ_CACHED , defina como ALLOW . Se act for deny , blocked , começar por REQ_BLOCKED ou começar por REQ_CHALLENGE , defina como BLOCK . Se act corresponder à regex (?i)REQ_BAD , defina como FAIL . Caso contrário, defina como UNKNOWN_ACTION . |
app | network.application_protocol | Nome mudado de kv.app . Convertido em maiúsculas. |
calCountryOrRegion | principal.location.country_or_region | Nome mudado de calCountryOrRegion . |
gato | security_result.action_details | Se cat começar por REQ_PASSED ou REQ_CACHED , defina action como ALLOW e defina action_details como uma descrição baseada no valor de cat . Se cat começar por REQ_BAD , defina action como FAIL e defina action_details como uma descrição baseada no valor de cat . Se cat começar por REQ_BLOCKED ou REQ_CHALLENGE , defina action como BLOCK e defina action_details como uma descrição baseada no valor de cat . |
cicode | principal.location.city | Nome mudado de cicode . |
classified_client | security_result.detection_fields | Se classified_client não estiver vazio, crie uma nova entrada detection_fields com a chave classified_client e o valor classified_client . |
client.domain | principal.hostname, principal.asset.hostname | Nome mudado de client.domain . |
client.geo.country_iso_code | principal.location.country_or_region | Nome mudado de client.geo.country_iso_code . |
client.ip | principal.ip, principal.asset.ip | Unido a principal.ip e principal.asset.ip . |
cn1 | network.http.response_code | Nome mudado de cn1 . Convertido em número inteiro. |
context_key | target.resource.name | Nome mudado de context_key . |
country | principal.location.country_or_region | Nome mudado de country . |
credentials_leaked | security_result.detection_fields | Convertido em string. Se não estiver vazio, crie uma nova entrada detection_fields com a chave credentials_leaked e o valor credentials_leaked . |
cs1 | security_result.detection_fields | Se cs1 não estiver vazio, NA ou `, create a new detection_fieldsentry with key cs1Labeland value cs1`. |
cs1Label | security_result.detection_fields | Usado como chave para a entrada detection_fields criada a partir de cs1 . |
cs2 | security_result.detection_fields | Se cs2 não estiver vazio, crie uma nova entrada detection_fields com a chave cs2Label e o valor cs2 . |
cs2Label | security_result.detection_fields | Usado como chave para a entrada detection_fields criada a partir de cs2 . |
cs3 | security_result.detection_fields | Se cs3 não estiver vazio, - ou `, create a new detection_fieldsentry with key cs3Labeland value cs3`. |
cs3Label | security_result.detection_fields | Usado como chave para a entrada detection_fields criada a partir de cs3 . |
cs4 | security_result.detection_fields | Se cs4 não estiver vazio, crie uma nova entrada detection_fields com a chave cs4Label e o valor cs4 . |
cs4Label | security_result.detection_fields | Usado como chave para a entrada detection_fields criada a partir de cs4 . |
cs5 | security_result.detection_fields | Se cs5 não estiver vazio, crie uma nova entrada detection_fields com a chave cs5Label e o valor cs5 . |
cs5Label | security_result.detection_fields | Usado como chave para a entrada detection_fields criada a partir de cs5 . |
cs6 | principal.application | Nome mudado de cs6 . |
cs7 | principal.location.region_latitude | Se cs7Label for latitude , o nome é alterado para principal.location.region_latitude . Convertido em flutuante. |
cs7Label | Se cs7Label for latitude , é usado para determinar o mapeamento de cs7 . |
|
cs8 | principal.location.region_longitude | Se cs8Label for longitude , o nome é alterado para principal.location.region_longitude . Convertido em flutuante. |
cs8Label | Se cs8Label for longitude , é usado para determinar o mapeamento de cs8 . |
|
cs9 | security_result.rule_name, extensions.vulns.vulnerabilities.name | Se cs9 não estiver vazio, defina como security_result.rule_name e crie uma nova entrada vulnerabilities com o nome cs9 . |
Cliente | target.user.user_display_name | Nome mudado de Customer . |
declared_client | security_result.detection_fields | Se declared_client não estiver vazio, crie uma nova entrada detection_fields com a chave declared_client e o valor declared_client . |
descrição | security_result.threat_name | Nome mudado de description . |
deviceExternalId | network.community_id | Nome mudado de deviceExternalId . |
deviceReceiptTime | metadata.event_timestamp | Analisado como uma data e definido como metadata.event_timestamp . Se estiver vazio, é usado log_timestamp ou kv.start . |
dhost | target.hostname | Nome mudado de kv.dhost . |
dproc | security_result.category_details | Nome mudado de dproc . |
dpt | target.port | Nome mudado de kv.dpt . Convertido em número inteiro. |
dst | target.ip, target.asset.ip | Se dst não estiver vazio, é unida em target.ip e target.asset.ip . |
dstPort | target.port | Nome mudado de dstPort . Convertido em número inteiro. |
duser | target.user.userid | Se duser não corresponder à regex .*?Alert.* e não estiver vazio, o nome é alterado para target.user.userid . |
fim | security_result.detection_fields | Se end não estiver vazio, crie uma nova entrada detection_fields com a chave event_end_time e o valor end . |
event.id | O ID do evento do objeto JSON | |
event.provider | principal.user.user_display_name | Nome mudado de event.provider . |
failed_logins_last_24h | security_result.detection_fields | Convertido em string. Se não estiver vazio, crie uma nova entrada detection_fields com a chave failed_logins_last_24h e o valor failed_logins_last_24h . |
fileId | network.session_id | Nome mudado de fileId . |
filePermission | security_result.detection_fields | Se filePermission não estiver vazio, crie uma nova entrada detection_fields com a chave filePermission e o valor filePermission . |
fileType | security_result.detection_fields | Se fileType não estiver vazio, crie uma nova entrada detection_fields com a chave fileType e o valor fileType . |
impressão digital | security_result.detection_fields | Se fingerprint não estiver vazio, crie uma nova entrada detection_fields com a chave log_imperva_fingerprint e o valor fingerprint . |
flexString1 | network.http.response_code | Nome mudado de kv.flexString1 . Convertido em número inteiro. |
http.request.body.bytes | network.sent_bytes | Convertido em número inteiro sem sinal. Nome mudado de http.request.body.bytes . |
http.request.method | network.http.method | Nome mudado de http.request.method . |
imperva.abp.apollo_rule_versions | security_result.detection_fields | Para cada entrada em imperva.abp.apollo_rule_versions , crie uma nova entrada detection_fields com a chave apollo_rule_versions_{index} e o valor igual à entrada. |
imperva.abp.bot_behaviors | security_result.detection_fields | Para cada entrada em imperva.abp.bot_behaviors , crie uma nova entrada detection_fields com a chave bot_behaviors_{index} e o valor igual à entrada. |
imperva.abp.bot_deciding_condition_ids | security_result.detection_fields | Para cada entrada em imperva.abp.bot_deciding_condition_ids , crie uma nova entrada detection_fields com a chave bot_deciding_condition_ids_{index} e o valor igual à entrada. |
imperva.abp.bot_deciding_condition_names | security_result.detection_fields | Para cada entrada em imperva.abp.bot_deciding_condition_names , crie uma nova entrada detection_fields com a chave bot_deciding_condition_names_{index} e o valor igual à entrada. |
imperva.abp.bot_triggered_condition_ids | security_result.detection_fields | Para cada entrada em imperva.abp.bot_triggered_condition_ids , crie uma nova entrada detection_fields com a chave bot_triggered_condition_ids_{index} e o valor igual à entrada. |
imperva.abp.bot_triggered_condition_names | security_result.detection_fields | Para cada entrada em imperva.abp.bot_triggered_condition_names , crie uma nova entrada detection_fields com a chave bot_triggered_condition_names_{index} e o valor igual à entrada. |
imperva.abp.bot_violations | security_result.detection_fields | Para cada entrada em imperva.abp.bot_violations , crie uma nova entrada detection_fields com a chave bot_violations_{index} e o valor igual à entrada. |
imperva.abp.customer_request_id | network.session_id | Nome mudado de imperva.abp.customer_request_id . |
imperva.abp.headers_accept_encoding | security_result.detection_fields | Se imperva.abp.headers_accept_encoding não estiver vazio, crie uma nova entrada detection_fields com a chave Accept Encoding e o valor imperva.abp.headers_accept_encoding . |
imperva.abp.headers_accept_language | security_result.detection_fields | Se imperva.abp.headers_accept_language não estiver vazio, crie uma nova entrada detection_fields com a chave Accept Language e o valor imperva.abp.headers_accept_language . |
imperva.abp.headers_connection | security_result.detection_fields | Se imperva.abp.headers_connection não estiver vazio, crie uma nova entrada detection_fields com a chave headers_connection e o valor imperva.abp.headers_connection . |
imperva.abp.headers_referer | network.http.referral_url | Nome mudado de imperva.abp.headers_referer . |
imperva.abp.hsig | security_result.detection_fields | Se imperva.abp.hsig não estiver vazio, crie uma nova entrada detection_fields com a chave hsig e o valor imperva.abp.hsig . |
imperva.abp.monitor_action | security_result.action, security_result.severity | Se imperva.abp.monitor_action corresponder à regex (?i)allow , defina security_action como ALLOW e severity como INFORMATIONAL . Se imperva.abp.monitor_action corresponder à regex (?i)captcha ou (?i)block , defina security_action como BLOCK . |
imperva.abp.pid | principal.process.pid | Nome mudado de imperva.abp.pid . |
imperva.abp.policy_id | security_result.detection_fields | Se imperva.abp.policy_id não estiver vazio, crie uma nova entrada detection_fields com a chave Policy Id e o valor imperva.abp.policy_id . |
imperva.abp.policy_name | security_result.detection_fields | Se imperva.abp.policy_name não estiver vazio, crie uma nova entrada detection_fields com a chave Policy Name e o valor imperva.abp.policy_name . |
imperva.abp.random_id | additional.fields | Se imperva.abp.random_id não estiver vazio, crie uma nova entrada additional.fields com a chave Random Id e o valor imperva.abp.random_id . |
imperva.abp.request_type | principal.labels | Se imperva.abp.request_type não estiver vazio, crie uma nova entrada principal.labels com a chave request_type e o valor imperva.abp.request_type . |
imperva.abp.selector | security_result.detection_fields | Se imperva.abp.selector não estiver vazio, crie uma nova entrada detection_fields com a chave selector e o valor imperva.abp.selector . |
imperva.abp.selector_derived_id | security_result.detection_fields | Se imperva.abp.selector_derived_id não estiver vazio, crie uma nova entrada detection_fields com a chave selector_derived_id e o valor imperva.abp.selector_derived_id . |
imperva.abp.tls_fingerprint | security_result.description | Nome mudado de imperva.abp.tls_fingerprint . |
imperva.abp.token_id | target.resource.product_object_id | Nome mudado de imperva.abp.token_id . |
imperva.abp.zuid | additional.fields | Se imperva.abp.zuid não estiver vazio, crie uma nova entrada additional.fields com a chave zuid e o valor imperva.abp.zuid . |
imperva.additional_factors | additional.fields | Para cada entrada em imperva.additional_factors , crie uma nova entrada additional.fields com a chave additional_factors_{index} e o valor igual à entrada. |
imperva.audit_trail.event_action | security_result.detection_fields | Se imperva.audit_trail.event_action não estiver vazio, crie uma nova entrada detection_fields com a chave imperva.audit_trail.event_action e o valor imperva.audit_trail.event_action_description . |
imperva.audit_trail.event_action_description | security_result.detection_fields | Usado como o valor da entrada detection_fields criada a partir de imperva.audit_trail.event_action . |
imperva.audit_trail.event_context | security_result.detection_fields | Se imperva.audit_trail.event_context não estiver vazio, crie uma nova entrada detection_fields com a chave imperva.audit_trail.event_context e o valor imperva.audit_trail.event_context_description . |
imperva.audit_trail.event_context_description | security_result.detection_fields | Usado como o valor da entrada detection_fields criada a partir de imperva.audit_trail.event_context . |
imperva.country | principal.location.country_or_region | Nome mudado de imperva.country . |
imperva.declared_client | security_result.detection_fields | Se imperva.declared_client não estiver vazio, crie uma nova entrada detection_fields com a chave declared_client e o valor imperva.declared_client . |
imperva.device_reputation | additional.fields | Para cada entrada em imperva.device_reputation , crie uma nova entrada additional.fields com a chave device_reputation e um valor de lista que contenha a entrada. |
imperva.domain_risk | security_result.detection_fields | Se imperva.domain_risk não estiver vazio, crie uma nova entrada detection_fields com a chave domain_risk e o valor imperva.domain_risk . |
imperva.failed_logins_last_24h | security_result.detection_fields | Convertido em string. Se não estiver vazio, crie uma nova entrada detection_fields com a chave failed_logins_last_24h e o valor failed_logins_last_24h . |
imperva.fingerprint | security_result.detection_fields | Se imperva.fingerprint não estiver vazio, crie uma nova entrada detection_fields com a chave log_imperva_fingerprint e o valor imperva.fingerprint . |
imperva.ids.account_id | metadata.product_log_id | Nome mudado de imperva.ids.account_id . |
imperva.ids.account_name | metadata.product_event_type | Nome mudado de imperva.ids.account_name . |
imperva.ids.site_id | additional.fields | Se imperva.ids.site_id não estiver vazio, crie uma nova entrada additional.fields com a chave site_id e o valor imperva.ids.site_id . |
imperva.ids.site_name | additional.fields | Se imperva.ids.site_name não estiver vazio, crie uma nova entrada additional.fields com a chave site_name e o valor imperva.ids.site_name . |
imperva.referrer | network.http.referral_url | Nome mudado de imperva.referrer . |
imperva.request_session_id | network.session_id | Nome mudado de imperva.request_session_id . |
imperva.request_user | security_result.detection_fields | Se imperva.request_user não estiver vazio, crie uma nova entrada detection_fields com a chave request_user e o valor imperva.request_user . |
imperva.risk_level | security_result.severity_details | Nome mudado de imperva.risk_level . |
imperva.risk_reason | security_result.description | Nome mudado de imperva.risk_reason . |
imperva.significant_domain_name | security_result.detection_fields | Se imperva.significant_domain_name não estiver vazio, crie uma nova entrada detection_fields com a chave significant_domain_name e o valor imperva.significant_domain_name . |
imperva.violated_directives | security_result.detection_fields | Para cada entrada em imperva.violated_directives , crie uma nova entrada detection_fields com a chave violated_directives e o valor igual à entrada. |
em | network.received_bytes | Nome mudado de in . Convertido em número inteiro sem sinal. |
log_timestamp | metadata.event_timestamp | Se deviceReceiptTime estiver vazio e kv.start estiver vazio, defina como metadata.event_timestamp . |
mensagem | metadata.description | Se message não estiver vazio e event.provider , imperva.ids.account_name e client.ip estiverem todos vazios, defina como metadata.description . |
postbody | security_result.detection_fields | Se postbody não estiver vazio, crie uma nova entrada detection_fields com a chave post_body_info e o valor postbody . |
proto | network.application_protocol | Nome mudado de proto . |
protoVer | network.tls.version, network.tls.cipher | Se protoVer não estiver vazio, é analisado para extrair tls_version e tls_cipher , que são, em seguida, renomeados para network.tls.version e network.tls.cipher , respetivamente. |
pedido | target.url | Nome mudado de kv.request . |
requestClientApplication | network.http.user_agent | Nome mudado de requestClientApplication . |
requestMethod | network.http.method | Nome mudado de requestMethod . Convertido em maiúsculas. |
resource_id | target.resource.id | Nome mudado de resource_id . |
resource_type_key | target.resource.type | Nome mudado de resource_type_key . |
rt | metadata.event_timestamp | Analisado para extrair deviceReceiptTime , que é então analisado como uma data e definido como metadata.event_timestamp . |
security_result.action | security_result.action | Unido ao valor do campo _action . |
security_result.severity | security_result.severity | Se sevs for error ou warning , defina como HIGH . Se sevs for critical , defina como CRITICAL . Se sevs for medium ou notice , defina como MEDIUM . Se sevs for information ou info , defina como LOW . |
server.domain | target.hostname, target.asset.hostname | Nome mudado de server.domain . |
server.geo.name | target.location.name | Nome mudado de server.geo.name . |
gravidade | security_result.threat_id | Nome mudado de severity . |
siteid | security_result.detection_fields | Se siteid não estiver vazio, crie uma nova entrada detection_fields com a chave siteid e o valor siteid . |
sourceServiceName | target.hostname | Nome mudado de kv.sourceServiceName . |
spt | principal.port | Nome mudado de kv.spt . Convertido em número inteiro. |
src | principal.ip, principal.asset.ip | Se src não estiver vazio, é unida em principal.ip e principal.asset.ip . |
srcPort | principal.port | Nome mudado de srcPort . Convertido em número inteiro. |
iniciar | security_result.detection_fields, metadata.event_timestamp | Se start não estiver vazio, crie uma nova entrada detection_fields com a chave event_start_time e o valor start . Também é analisado como uma data e definido como metadata.event_timestamp se deviceReceiptTime estiver vazio. |
successful_logins_last_24h | security_result.detection_fields | Convertido em string. Se não estiver vazio, crie uma nova entrada detection_fields com a chave successful_logins_last_24h e o valor successful_logins_last_24h . |
suid | target.user.userid | Nome mudado de suid . |
tempo | metadata.event_timestamp | Convertido em string. Analisado como uma data e definido como metadata.event_timestamp . |
type_key | metadata.product_event_type | Nome mudado de type_key . |
url | target.process.file.full_path | Se url.path não estiver vazio ou for / , defina como target.process.file.full_path . |
url | target.url | Nome mudado de url . Se qstr não estiver vazio, é anexado a url com um separador ? . |
user.email | principal.user.email_addresses | Se user.email não estiver vazio e corresponder à regex ^.+@.+$ , é unido em principal.user.email_addresses . |
user_agent | network.http.user_agent | Nome mudado de user_agent . |
user_agent.original | network.http.parsed_user_agent | Se user_agent.original não estiver vazio ou * , é convertido em parseduseragent e mudado o nome para network.http.parsed_user_agent . |
user_details | principal.user.email_addresses | Se user_details não estiver vazio e corresponder à regex ^.+@.+$ , é unido em principal.user.email_addresses . |
user_id | principal.user.userid | Nome mudado de user_id . |
ver | network.tls.version, network.tls.cipher | Se ver não estiver vazio, é analisado para extrair tls_version e tls_cipher , que são, em seguida, renomeados para network.tls.version e network.tls.cipher , respetivamente. |
xff | intermediary.ip, intermediary.asset.ip, intermediary.hostname, intermediary.asset.hostname | Se xff não estiver vazio, é processado para extrair endereços IP e nomes de anfitriões. Os endereços IP são unidos em intermediary.ip e intermediary.asset.ip . Os nomes de anfitrião estão definidos como intermediary.hostname e intermediary.asset.hostname . |
Precisa de mais ajuda? Receba respostas de membros da comunidade e profissionais da Google SecOps.