Coletar registros de auditoria do HashiCorp
Esse analisador processa registros de auditoria do HashiCorp nos formatos JSON, Syslog ou combinados. Ele extrai campos, realiza a análise de Grok e KV para mensagens padrão e do tipo "runner", processa payloads JSON e mapeia os dados extraídos para o UDM. O analisador também inclui o tratamento de erros e a exclusão de registros com formato incorreto.
Antes de começar
- Verifique se você tem uma instância do Google Security Operations.
- Verifique se você tem um Windows 2016 ou mais recente ou um host Linux com systemd.
- Se estiver executando por trás de um proxy, verifique se as portas do firewall estão abertas.
- Verifique se você tem acesso privilegiado ao HCP.
Receber o arquivo de autenticação de ingestão do Google SecOps
- Faça login no console do Google SecOps.
- Acesse Configurações do SIEM > Agentes de coleta.
- Faça o download do arquivo de autenticação de transferência.
Receber o ID de cliente do Google SecOps
- Faça login no console do Google SecOps.
- Acesse Configurações do SIEM > Perfil.
- Copie e salve o ID do cliente na seção Detalhes da organização.
Instalar o agente do BindPlane
- Para a instalação do Windows, execute o seguinte script:
msiexec /i "https://github.com/observIQ/bindplane-agent/releases/latest/download/observiq-otel-collector.msi" /quiet
- Para a instalação do Linux, execute o seguinte script:
sudo sh -c "$(curl -fsSlL https://github.com/observiq/bindplane-agent/releases/latest/download/install_unix.sh)" install_unix.sh
- Outras opções de instalação podem ser encontradas neste guia de instalação.
Configurar o agente BindPlane para ingerir o Syslog e enviar ao Google SecOps
- Acesse a máquina em que o BindPlane está instalado.
Edite o arquivo
config.yaml
da seguinte forma:receivers: udplog: # Replace the below port <54525> and IP <0.0.0.0> with your specific values listen_address: "0.0.0.0:54525" exporters: chronicle/chronicle_w_labels: compression: gzip # Adjust the creds location below according the placement of the credentials file you downloaded creds: '{ json file for creds }' # Replace <customer_id> below with your actual ID that you copied customer_id: <customer_id> endpoint: malachiteingestion-pa.googleapis.com # You can apply ingestion labels below as preferred ingestion_labels: log_type: SYSLOG namespace: auditd raw_log_field: body service: pipelines: logs/source0__chronicle_w_labels-0: receivers: - udplog exporters: - chronicle/chronicle_w_labels
Reinicie o agente do BindPlane para aplicar as mudanças:
sudo systemctl restart bindplane
Ativar o Syslog para o HCP Vault
- Faça login no Portal do HCP.
- Acesse Clusters do Vault.
- Selecione o cluster do Vault na lista de clusters implantados.
- Na Visão geral do cluster, localize e copie o endereço do Vault (por exemplo, https://vault-cluster-name.hashicorpcloud.com:8200).
- Acesse a seção Detalhes de acesso e copie o Token raiz.
Instalar a CLI do Vault
Para Linux:
curl -fsSL https://apt.releases.hashicorp.com/gpg | sudo gpg --dearmor -o /usr/share/keyrings/hashicorp-archive-keyring.gpg echo "deb [signed-by=/usr/share/keyrings/hashicorp-archive-keyring.gpg] https://apt.releases.hashicorp.com $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/hashicorp.list sudo apt update && sudo apt install vault
No macOS (usando o Homebrew):
brew tap hashicorp/tap brew install hashicorp/tap/vault
Para Windows:
Download the executable file. Extract it and add the Vault binary to your system's PATH.
Verifique a instalação da CLI do Vault executando o seguinte comando:
vault --version
Configurar o HCP Vault usando a CLI para enviar registros de auditoria ao BindPlane
- Abra o terminal ou o prompt de comando.
Defina o endereço do servidor do Vault usando a variável de ambiente:
export VAULT_ADDR="https://vault-cluster-name.hashicorpcloud.com:8200"
Faça login no Vault usando o token raiz:
vault login <root-token>
Configurar o caminho do syslog para um socket externo
Execute o comando a seguir para ativar o syslog e enviar para o BindPlane:
vault audit enable socket address="udp://<bindplane-ip>:<bindplane-port>" socket_type="udp" tag="vault"
Confirme a nova configuração:
vault audit list
A saída vai mostrar a nova configuração do socket.
Opcional: automatize a configuração usando o Terraform:
- Crie um arquivo de configuração do Terraform (audit.tf):
resource "vault_audit" "syslog" { type = "syslog" description = "Syslog audit logs" options = { tag = "vault" facility = "LOCAL0" } } resource "vault_audit" "socket" { type = "socket" description = "Remote syslog socket" options = { address = "udp://<syslog-server-ip>:514" socket_type = "udp" tag = "vault" } }
- Aplique a configuração:
terraform init terraform apply
Solução de problemas de registros não recebidos
Verifique se o servidor syslog está acessível:
ping <syslog-server-ip>
Tabela de mapeamento do UDM
Campo de registro | Mapeamento do UDM | Lógica |
---|---|---|
auth.accessor |
security_result.about.resource.attribute.labels.value |
O valor de auth.accessor do registro bruto é mapeado para um rótulo com a chave "auth_accessor" em security_result.about.resource.attribute.labels no UDM. |
auth.client_token |
security_result.about.resource.attribute.labels.value |
O valor de auth.client_token do registro bruto é mapeado para um rótulo com a chave "auth_client_token" em security_result.about.resource.attribute.labels no UDM. |
auth.display_name |
target.user.user_display_name |
O valor de auth.display_name do registro bruto é mapeado para target.user.user_display_name no UDM. |
auth.entity_id |
target.resource.product_object_id |
O valor de auth.entity_id do registro bruto é mapeado para target.resource.product_object_id no UDM. |
auth.metadata.account_id |
target.user.userid |
O valor de auth.metadata.account_id do registro bruto é mapeado para target.user.userid no UDM. |
auth.metadata.auth_type |
security_result.about.resource.attribute.labels.value |
O valor de auth.metadata.auth_type do registro bruto é mapeado para um rótulo com a chave "auth_type" em security_result.about.resource.attribute.labels no UDM. |
auth.metadata.role_id |
security_result.about.resource.attribute.labels.value |
O valor de auth.metadata.role_id do registro bruto é mapeado para um rótulo com a chave "role_id" em security_result.about.resource.attribute.labels no UDM. |
auth.metadata.role_name |
target.resource.attribute.roles.name |
O valor de auth.metadata.role_name do registro bruto é mapeado para target.resource.attribute.roles.name no UDM. |
auth.token_ttl |
security_result.about.resource.attribute.labels.value |
O valor de auth.token_ttl do registro bruto é mapeado para um rótulo com a chave "auth_token_ttl" em security_result.about.resource.attribute.labels no UDM. |
auth.token_type |
security_result.about.resource.attribute.labels.value |
O valor de auth.token_type do registro bruto é mapeado para um rótulo com a chave "auth_token_type" em security_result.about.resource.attribute.labels no UDM. |
cluster |
observer.resource.name |
O valor de cluster do registro bruto é mapeado para observer.resource.name no UDM. |
error |
security_result.description |
O valor de error do registro bruto é mapeado para security_result.description no UDM. |
headers.accept |
security_result.about.resource.attribute.labels.value |
O valor de headers.accept do registro bruto é mapeado para um rótulo com a chave "httpHeaders accept" em security_result.about.resource.attribute.labels no UDM. |
headers.httpHeaders.cache-control |
additional.fields.value.string_value |
O valor de headers.httpHeaders.cache-control do registro bruto é mapeado para um campo com a chave "httpHeaders cache control" em additional.fields no UDM. |
headers.snyk-acting-org-public-id |
principal.resource.attribute.labels.value |
O valor de headers.snyk-acting-org-public-id do registro bruto é mapeado para um rótulo com a chave "snyk-acting-org-public-id" em principal.resource.attribute.labels no UDM. |
headers.snyk-flow-name |
principal.resource.attribute.labels.value |
O valor de headers.snyk-flow-name do registro bruto é mapeado para um identificador com a chave "snyk-flow-name" em principal.resource.attribute.labels no UDM. |
headers.snyk-request-id |
principal.resource.attribute.labels.value |
O valor de headers.snyk-request-id do registro bruto é mapeado para um rótulo com a chave "snyk-request-id" em principal.resource.attribute.labels no UDM. |
headers.user-agent |
network.http.parsed_user_agent |
O valor de headers.user-agent do registro bruto é analisado como um user agent e mapeado para network.http.parsed_user_agent no UDM. |
headers.x-forwarded-host |
principal.hostname |
O valor de headers.x-forwarded-host do registro bruto é mapeado para principal.hostname no UDM. |
headers.x-forwarded-port |
principal.port |
O valor de headers.x-forwarded-port do registro bruto é mapeado para principal.port no UDM. |
headers.x-real-ip |
principal.ip |
O valor de headers.x-real-ip do registro bruto é mapeado para principal.ip no UDM. |
hostname |
observer.hostname |
O valor de hostname do registro bruto é mapeado para observer.hostname no UDM. |
httpHeaders.cf-cache-status |
target.resource.attribute.labels.value |
O valor de httpHeaders.cf-cache-status do registro bruto é mapeado para um rótulo com a chave "cf-cache-status" em target.resource.attribute.labels no UDM. |
httpHeaders.cf-ray |
target.resource.attribute.labels.value |
O valor de httpHeaders.cf-ray do registro bruto é mapeado para um rótulo com a chave "cf-ray" em target.resource.attribute.labels no UDM. |
httpHeaders.content-length |
security_result.about.resource.attribute.labels.value |
O valor de httpHeaders.content-length do registro bruto é mapeado para um rótulo com a chave "httpHeaders Content-Length" em security_result.about.resource.attribute.labels no UDM. |
httpHeaders.content-type |
security_result.about.resource.attribute.labels.value |
O valor de httpHeaders.content-type do registro bruto é mapeado para um rótulo com a chave "httpHeaders Content-Type" em security_result.about.resource.attribute.labels no UDM. |
httpHeaders.gitlab-lb |
target.resource.attribute.labels.value |
O valor de httpHeaders.gitlab-lb do registro bruto é associado a um rótulo com a chave "gitlab-lb" em target.resource.attribute.labels no UDM. |
httpHeaders.gitlab-sv |
target.resource.attribute.labels.value |
O valor de httpHeaders.gitlab-sv do registro bruto é mapeado para um rótulo com a chave "gitlab-sv" em target.resource.attribute.labels no UDM. |
httpHeaders.ratelimit-limit |
target.resource.attribute.labels.value |
O valor de httpHeaders.ratelimit-limit do registro bruto é mapeado para um rótulo com a chave "ratelimit-limit" em target.resource.attribute.labels no UDM. |
httpHeaders.ratelimit-observed |
target.resource.attribute.labels.value |
O valor de httpHeaders.ratelimit-observed do registro bruto é mapeado para um rótulo com a chave "ratelimit-observed" em target.resource.attribute.labels no UDM. |
httpHeaders.ratelimit-remaining |
target.resource.attribute.labels.value |
O valor de httpHeaders.ratelimit-remaining do registro bruto é mapeado para um rótulo com a chave "ratelimit-remaining" em target.resource.attribute.labels no UDM. |
httpHeaders.ratelimit-reset |
target.resource.attribute.labels.value |
O valor de httpHeaders.ratelimit-reset do registro bruto é mapeado para um rótulo com a chave "ratelimit-reset" em target.resource.attribute.labels no UDM. |
httpHeaders.ratelimit-resettime |
target.resource.attribute.labels.value |
O valor de httpHeaders.ratelimit-resettime do registro bruto é mapeado para um rótulo com a chave "ratelimit-resettime" em target.resource.attribute.labels no UDM. |
httpHeaders.referrer-policy |
target.resource.attribute.labels.value |
O valor de httpHeaders.referrer-policy do registro bruto é mapeado para um rótulo com a chave "referrer-policy" em target.resource.attribute.labels no UDM. |
httpHeaders.server |
target.resource.attribute.labels.value |
O valor de httpHeaders.server do registro bruto é mapeado para um rótulo com a chave "server" em target.resource.attribute.labels no UDM. |
httpHeaders.x-content-type-options |
target.resource.attribute.labels.value |
O valor de httpHeaders.x-content-type-options do registro bruto é mapeado para um rótulo com a chave "x-content-type-options" em target.resource.attribute.labels no UDM. |
httpHeaders.x-frame-options |
target.resource.attribute.labels.value |
O valor de httpHeaders.x-frame-options do registro bruto é mapeado para um rótulo com a chave "x-frame-options" em target.resource.attribute.labels no UDM. |
httpHeaders.x-request-id |
target.resource.attribute.labels.value |
O valor de httpHeaders.x-request-id do registro bruto é mapeado para um identificador com a chave "x-request-id" em target.resource.attribute.labels no UDM. |
httpStatus |
network.http.response_code |
O valor de httpStatus do registro bruto é mapeado para network.http.response_code no UDM. |
httpUrl |
target.url |
O valor de httpUrl do registro bruto é mapeado para target.url no UDM. |
insertId |
metadata.product_log_id |
O valor de insertId do registro bruto é mapeado para metadata.product_log_id no UDM. |
job |
additional.fields.value.string_value |
O valor de job do registro bruto é associado a um campo com a chave "job id" em additional.fields no UDM. |
job_status |
additional.fields.value.string_value |
O valor de job_status do registro bruto é mapeado para um campo com a chave "job_status" em additional.fields no UDM. |
labels.compute.googleapis.com/resource_name |
target.resource.name |
O valor de labels.compute.googleapis.com/resource_name do registro bruto é mapeado para target.resource.name no UDM. |
labels.k8s-pod/app_kubernetes_io/instance |
target.resource.attribute.labels.value |
O valor de labels.k8s-pod/app_kubernetes_io/instance do registro bruto é mapeado para um rótulo com a chave "Instância de I/O do Kubernetes" em target.resource.attribute.labels no UDM. |
labels.k8s-pod/app_kubernetes_io/name |
target.resource.attribute.labels.value |
O valor de labels.k8s-pod/app_kubernetes_io/name do registro bruto é mapeado para um rótulo com a chave "Kubernetes IO Instance Name" em target.resource.attribute.labels no UDM. |
labels.k8s-pod/component |
target.resource.attribute.labels.value |
O valor de labels.k8s-pod/component do registro bruto é mapeado para um rótulo com a chave "component" em target.resource.attribute.labels no UDM. |
labels.k8s-pod/controller-revision-hash |
target.resource.attribute.labels.value |
O valor de labels.k8s-pod/controller-revision-hash do registro bruto é mapeado para um rótulo com a chave "Hash de revisão do controlador" em target.resource.attribute.labels no UDM. |
labels.k8s-pod/helm_sh/chart |
target.resource.attribute.labels.value |
O valor de labels.k8s-pod/helm_sh/chart do registro bruto é mapeado para um rótulo com a chave "Kubernetes IO Instance Manager SH" em target.resource.attribute.labels no UDM. |
labels.k8s-pod/vault-active |
target.resource.attribute.labels.value |
O valor de labels.k8s-pod/vault-active do registro bruto é mapeado para um rótulo com a chave "Vault ativo" em target.resource.attribute.labels no UDM. |
labels.k8s-pod/vault-initialized |
target.resource.attribute.labels.value |
O valor de labels.k8s-pod/vault-initialized do registro bruto é mapeado para um rótulo com a chave "Vault initialized" em target.resource.attribute.labels no UDM. |
labels.k8s-pod/vault-perf-standby |
target.resource.attribute.labels.value |
O valor de labels.k8s-pod/vault-perf-standby do registro bruto é mapeado para um rótulo com a chave "vault perf standby" em target.resource.attribute.labels no UDM. |
labels.k8s-pod/vault-sealed |
target.resource.attribute.labels.value |
O valor de labels.k8s-pod/vault-sealed do registro bruto é mapeado para um rótulo com a chave "Vault sealed" em target.resource.attribute.labels no UDM. |
labels.k8s-pod/vault-version |
target.resource.attribute.labels.value |
O valor de labels.k8s-pod/vault-version do registro bruto é mapeado para um rótulo com a chave "Versão do Vault" em target.resource.attribute.labels no UDM. |
maskedToken |
security_result.about.resource.attribute.labels.value |
O valor de maskedToken do registro bruto é mapeado para um rótulo com a chave "maskedToken" em security_result.about.resource.attribute.labels no UDM. |
method |
network.http.method , operation |
O valor de method do registro bruto é mapeado para operation . Se operation não estiver vazio, network.application_protocol será definido como "HTTP". Com base no valor de operation , network.http.method é derivado. |
msg |
metadata.description |
O valor de msg do registro bruto é mapeado para metadata.description no UDM. |
pid |
target.process.pid |
O valor de pid do registro bruto é mapeado para target.process.pid no UDM. |
request.client_token |
target.resource.attribute.labels.value |
O valor de request.client_token do registro bruto é mapeado para um rótulo com a chave "request_client_token" em target.resource.attribute.labels no UDM. |
request.client_token_accessor |
target.resource.attribute.labels.value |
O valor de request.client_token_accessor do registro bruto é mapeado para um rótulo com a chave "request_client_token_accessor" em target.resource.attribute.labels no UDM. |
request.data.role_id |
target.resource.attribute.labels.value |
O valor de request.data.role_id do registro bruto é associado a um rótulo com a chave "request_data_role_id" em target.resource.attribute.labels no UDM. |
request.data.secret_id |
target.resource.attribute.labels.value |
O valor de request.data.secret_id do registro bruto é associado a um rótulo com a chave "request_data_secret_id" em target.resource.attribute.labels no UDM. |
request.id |
network.session_id |
O valor de request.id do registro bruto é mapeado para network.session_id no UDM. |
request.mount_accessor |
target.resource.attribute.labels.value |
O valor de request.mount_accessor do registro bruto é mapeado para um rótulo com a chave "request_mount_accessor" em target.resource.attribute.labels no UDM. |
request.mount_type |
target.resource.attribute.labels.value |
O valor de request.mount_type do registro bruto é mapeado para um rótulo com a chave "request_mount_type" em target.resource.attribute.labels no UDM. |
request.namespace.id |
target.namespace |
O valor de request.namespace.id do registro bruto é mapeado para target.namespace no UDM. |
request.operation |
target.resource.attribute.labels.value , network.http.method , operation |
O valor de request.operation do registro bruto é mapeado para operation . Se operation não estiver vazio, network.application_protocol será definido como "HTTP". Com base no valor de operation , network.http.method é derivado. O valor de request.operation também é mapeado para um rótulo com a chave "capabilities" em target.resource.attribute.labels no UDM. |
request.path |
target.url |
O valor de request.path do registro bruto é mapeado para target.url no UDM. |
request.remote_address |
principal.ip |
O valor de request.remote_address do registro bruto é mapeado para principal.ip no UDM. |
request.remote_port |
principal.port |
O valor de request.remote_port do registro bruto é mapeado para principal.port no UDM. |
request.wrap_ttl |
target.resource.attribute.labels.value |
O valor de request.wrap_ttl do registro bruto é mapeado para um rótulo com a chave "request_wrap_ttl" em target.resource.attribute.labels no UDM. |
resource.labels.container_name |
additional.fields.value.string_value |
O valor de resource.labels.container_name do registro bruto é mapeado para um campo com a chave "container name" em additional.fields no UDM. |
resource.labels.location |
target.location.name |
O valor de resource.labels.location do registro bruto é mapeado para target.location.name no UDM. |
resource.labels.namespace_name |
target.namespace |
O valor de resource.labels.namespace_name do registro bruto é mapeado para target.namespace no UDM. |
resource.labels.pod_name |
additional.fields.value.string_value |
O valor de resource.labels.pod_name do registro bruto é mapeado para um campo com a chave "pod_name" em additional.fields no UDM. |
resource.labels.project_id |
target.cloud.project.name |
O valor de resource.labels.project_id do registro bruto é mapeado para target.cloud.project.name no UDM. |
response.data.num_uses |
target.resource.attribute.labels.value |
O valor de response.data.num_uses do registro bruto é mapeado para um rótulo com a chave "response_data_num_uses" em target.resource.attribute.labels no UDM. |
response.data.orphan |
target.resource.attribute.labels.value |
O valor de response.data.orphan do registro bruto é associado a um rótulo com a chave "response_data_orphan" em target.resource.attribute.labels no UDM. |
response.data.renewable |
target.resource.attribute.labels.value |
O valor de response.data.renewable do registro bruto é mapeado para um rótulo com a chave "response_data_renewable" em target.resource.attribute.labels no UDM. |
response.data.ttl |
target.resource.attribute.labels.value |
O valor de response.data.ttl do registro bruto é mapeado para um rótulo com a chave "response_data_ttl" em target.resource.attribute.labels no UDM. |
response.wrap_info.accessor |
target.resource.attribute.labels.value |
O valor de response.wrap_info.accessor do registro bruto é mapeado para um rótulo com a chave "response_wrap_info_accessor" em target.resource.attribute.labels no UDM. |
response.wrap_info.token |
target.resource.attribute.labels.value |
O valor de response.wrap_info.token do registro bruto é mapeado para um rótulo com a chave "response_wrap_info_token" em target.resource.attribute.labels no UDM. |
response.wrap_info.ttl |
target.resource.attribute.labels.value |
O valor de response.wrap_info.ttl do registro bruto é mapeado para um rótulo com a chave "response_wrap_info_ttl" em target.resource.attribute.labels no UDM. |
response.wrap_info.wrapped_accessor |
target.resource.attribute.labels.value |
O valor de response.wrap_info.wrapped_accessor do registro bruto é mapeado para um rótulo com a chave "response_wrap_info_wrapped_accessor" em target.resource.attribute.labels no UDM. |
runner |
principal.user.userid |
O valor de runner do registro bruto é mapeado para principal.user.userid no UDM. |
status |
network.http.response_code |
O valor de status do registro bruto é mapeado para network.http.response_code no UDM. |
streamingID |
target.resource.attribute.labels.value |
O valor de streamingID do registro bruto é mapeado para um rótulo com a chave "streamingID" em target.resource.attribute.labels no UDM. |
time |
metadata.event_timestamp.seconds , metadata.event_timestamp.nanos |
O valor de time do registro bruto é analisado e usado para preencher o campo metadata.event_timestamp no UDM. |
type |
metadata.product_event_type |
O valor de type do registro bruto é mapeado para metadata.product_event_type no UDM. |
url |
principal.url |
O valor de url do registro bruto é mapeado para principal.url no UDM. O valor "MACHINE" é atribuído a extensions.auth.type no UDM. O valor "USER_LOGIN" é atribuído a metadata.event_type no UDM. O valor "HASHICORP" é atribuído a metadata.log_type no UDM. O valor "HASHICORP" é atribuído a metadata.product_name no UDM. O valor "HASHICORP" é atribuído a metadata.vendor_name no UDM. O valor "SERVICE_ACCOUNT" é atribuído a target.resource.attribute.roles.type no UDM. |
Alterações
2023-10-26
- Um padrão Grok foi adicionado para processar registros SYSLOG+JSON.
2023-09-22
- O mapeamento de "request.remote_port" foi modificado de "target.port" para "principal.port".
- O mapeamento de "request.remote_address" foi modificado de "target.ip" para "principal.ip".
- "error" foi associado a "security_result.description".
- "resource.labels.namespace_name" foi mapeado para "target.namespace".
- "resource.labels.pod_name" e "resource.labels.container_name" foram mapeados para "additional.fields".
- "resource.labels.project_id" foi associado a "target.cloud.project.name".
- "resource.labels.location" foi mapeado para "target.location.name".
- "insertId" foi mapeado para "metadata.product_log_id".
- Mapeou "labels.k8s-pod/app_kubernetes_io/instance", "labels.k8s-pod/app_kubernetes_io/name", "labels.k8s-pod/component", "labels.k8s-pod/helm_sh/chart", "labels.k8s-pod/controller-revision-hash", "labels.k8s-pod/vault-initialized", "labels.k8s-pod/vault-version", "labels.k8s-pod/vault-sealed", "labels.k8s-pod/vault-perf-standby" e "labels.k8s-pod/vault-active" para "target.resource.attribute.labels".
- "labels.compute.googleapis.com/resource_name" foi mapeado para "target.resource.name".
2023-04-26
- Adicionamos um padrão Grok para processar registros syslog.
- "status" foi associado a "network.http.response_code".
- Mapeamos "runner" para "principal.user.userid"
- "job_id" e "job_status" foram mapeados para "additional.fields".
2023-03-24
- "host" foi mapeado para "observer.hostname".
- "cluster" foi mapeado para "observer.resource.name".
- Se o registro contiver cluster, "cluster" será associado a "observer.resource.resource_type".
- Foi adicionado um bloco JSON para extrair dados do campo "_raw".
- "httpStatus" mapeado para "network.http.response_code".
- "httpUrl" mapeado para "target.url".
- "pid" mapeado para "target.process.pid".
- "msg" mapeado para "metadata.description".
- "url" mapeado para "principal.url".
- "hostname" mapeado para "observer.hostname".
- "streamingID", "requestId", "httpHeaders.cf-cache-status", "httpHeaders.cf-ray", "httpHeaders.gitlab-lb", "httpHeaders.gitlab-sv", "httpHeaders.x-request-id", "httpHeaders.x-content-type-options", "httpHeaders.x-frame-options", "httpHeaders.ratelimit-limit", "httpHeaders.ratelimit-observed", "httpHeaders.ratelimit-remaining", "httpHeaders.ratelimit-reset", "httpHeaders.ratelimit-resettime", "httpHeaders.server", "httpHeaders.referrer-policy" mapeados para "target.resource.attribute.labels".
- "method" mapeado para "network.application_protocol".
- "headers.user-agent" mapeado para "network.http.parsed_user_agent".
- "httpHeaders.cache-control" mapeado para "additional.fields".
- "httpHeaders.content-type", "httpHeaders.content-length", "maskedToken", "headers.accept" mapeados para "security_result.about.resource.attribute.labels".
- "headers.x-real-ip" mapeado para "principal.ip".
- "headers.x-forwarded-host" mapeado para "principal.hostname".
- "headers.x-forwarded-port" mapeado para "principal.port".
- "headers.snyk-acting-org-public-id", "headers.snyk-flow-name", "headers.snyk-request-id" mapeados para "principal.resource.attribute.labels".
2023-02-09
- Parser recém-criado.