Recopila registros de auditoría de HashiCorp

Compatible con:

Este analizador procesa los registros de auditoría de HashiCorp en formatos JSON, Syslog o combinados. Extrae campos, realiza el análisis de Grok y KV para mensajes estándar y de tipo "runner", controla las cargas útiles de JSON y asigna los datos extraídos a la UDM. El analizador también incluye el manejo de errores y la eliminación de registros con el formato incorrecto.

Antes de comenzar

  • Asegúrate de tener una instancia de Google Security Operations.
  • Asegúrate de tener Windows 2016 o una versión posterior, o un host de Linux con systemd.
  • Si se ejecuta detrás de un proxy, asegúrate de que los puertos del firewall estén abiertos.
  • Asegúrate de tener acceso con privilegios a HCP.

Obtén el archivo de autenticación de transferencia de Google SecOps

  1. Accede a la consola de Google SecOps.
  2. Ve a Configuración de SIEM > Agentes de recopilación.
  3. Descarga el archivo de autenticación de transferencia.

Obtén el ID de cliente de Google SecOps

  1. Accede a la consola de Google SecOps.
  2. Ve a Configuración de SIEM > Perfil.
  3. Copia y guarda el ID de cliente de la sección Detalles de la organización.

Instala el agente de BindPlane

  1. Para la instalación de Windows, ejecuta la siguiente secuencia de comandos:
    msiexec /i "https://github.com/observIQ/bindplane-agent/releases/latest/download/observiq-otel-collector.msi" /quiet
  2. Para la instalación de Linux, ejecuta la siguiente secuencia de comandos:
    sudo sh -c "$(curl -fsSlL https://github.com/observiq/bindplane-agent/releases/latest/download/install_unix.sh)" install_unix.sh
  3. Puedes encontrar opciones de instalación adicionales en esta guía de instalación.

Configura el agente de BindPlane para transferir Syslog y enviarlo a Google SecOps

  1. Accede a la máquina en la que está instalado BindPlane.
  2. Edita el archivo config.yaml de la siguiente manera:

    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
    
  3. Reinicia el agente de BindPlane para aplicar los cambios:

    sudo systemctl restart bindplane
    

Habilita Syslog para HCP Vault

  1. Accede al portal de HCP.
  2. Ve a Clústeres de Vault.
  3. Selecciona tu clúster de Vault de la lista de clústeres implementados.
  4. En Descripción general del clúster, busca y copia la dirección de Vault (por ejemplo, https://vault-cluster-name.hashicorpcloud.com:8200).
  5. Ve a la sección Detalles de acceso y copia el token raíz.

Instala la CLI de 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
    
  • Para macOS (con 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.
    
  • Ejecuta el siguiente comando para verificar la instalación de la CLI de Vault:

    vault --version
    

Configura HCP Vault con la CLI para enviar registros de auditoría a BindPlane

  1. Abre la terminal o el símbolo del sistema.
  2. Configura la dirección del servidor de Vault con la variable de entorno:

    export VAULT_ADDR="https://vault-cluster-name.hashicorpcloud.com:8200"
    
  3. Accede a Vault con el token raíz:

    vault login <root-token>
    

Configura la ruta de Syslog en un socket de Syslog externo

  1. Ejecuta el siguiente comando para habilitar syslog y enviarlo a BindPlane:

    vault audit enable socket address="udp://<bindplane-ip>:<bindplane-port>" socket_type="udp" tag="vault"
    
  2. Confirma la configuración nueva:

    vault audit list
    
  3. El resultado debe mostrar la nueva configuración del socket.

  4. Opcional: Automatiza la configuración con Terraform:

    • Crea un archivo de configuración de 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"
      }
    }
    
    • Aplica la configuración:
    terraform init
    terraform apply
    

No se recibieron los registros de solución de problemas

  • Verifica que se pueda acceder al servidor syslog:

    ping <syslog-server-ip>
    

Tabla de asignación de UDM

Campo de registro Asignación de UDM Lógica
auth.accessor security_result.about.resource.attribute.labels.value El valor de auth.accessor del registro sin procesar se asigna a una etiqueta con la clave "auth_accessor" en security_result.about.resource.attribute.labels en la UDM.
auth.client_token security_result.about.resource.attribute.labels.value El valor de auth.client_token del registro sin procesar se asigna a una etiqueta con la clave "auth_client_token" en security_result.about.resource.attribute.labels en la UDM.
auth.display_name target.user.user_display_name El valor de auth.display_name del registro sin procesar se asigna a target.user.user_display_name en la UDM.
auth.entity_id target.resource.product_object_id El valor de auth.entity_id del registro sin procesar se asigna a target.resource.product_object_id en la UDM.
auth.metadata.account_id target.user.userid El valor de auth.metadata.account_id del registro sin procesar se asigna a target.user.userid en la UDM.
auth.metadata.auth_type security_result.about.resource.attribute.labels.value El valor de auth.metadata.auth_type del registro sin procesar se asigna a una etiqueta con la clave "auth_type" en security_result.about.resource.attribute.labels en la UDM.
auth.metadata.role_id security_result.about.resource.attribute.labels.value El valor de auth.metadata.role_id del registro sin procesar se asigna a una etiqueta con la clave "role_id" en security_result.about.resource.attribute.labels en la UDM.
auth.metadata.role_name target.resource.attribute.roles.name El valor de auth.metadata.role_name del registro sin procesar se asigna a target.resource.attribute.roles.name en la UDM.
auth.token_ttl security_result.about.resource.attribute.labels.value El valor de auth.token_ttl del registro sin procesar se asigna a una etiqueta con la clave "auth_token_ttl" en security_result.about.resource.attribute.labels en la UDM.
auth.token_type security_result.about.resource.attribute.labels.value El valor de auth.token_type del registro sin procesar se asigna a una etiqueta con la clave "auth_token_type" en security_result.about.resource.attribute.labels en la UDM.
cluster observer.resource.name El valor de cluster del registro sin procesar se asigna a observer.resource.name en la UDM.
error security_result.description El valor de error del registro sin procesar se asigna a security_result.description en la UDM.
headers.accept security_result.about.resource.attribute.labels.value El valor de headers.accept del registro sin procesar se asigna a una etiqueta con la clave "httpHeaders accept" en security_result.about.resource.attribute.labels en la UDM.
headers.httpHeaders.cache-control additional.fields.value.string_value El valor de headers.httpHeaders.cache-control del registro sin procesar se asigna a un campo con la clave "httpHeaders cache control" en additional.fields en la UDM.
headers.snyk-acting-org-public-id principal.resource.attribute.labels.value El valor de headers.snyk-acting-org-public-id del registro sin procesar se asigna a una etiqueta con la clave "snyk-acting-org-public-id" en principal.resource.attribute.labels en la UDM.
headers.snyk-flow-name principal.resource.attribute.labels.value El valor de headers.snyk-flow-name del registro sin procesar se asigna a una etiqueta con la clave "snyk-flow-name" en principal.resource.attribute.labels en la UDM.
headers.snyk-request-id principal.resource.attribute.labels.value El valor de headers.snyk-request-id del registro sin procesar se asigna a una etiqueta con la clave "snyk-request-id" en principal.resource.attribute.labels en la UDM.
headers.user-agent network.http.parsed_user_agent El valor de headers.user-agent del registro sin procesar se analiza como un usuario-agente y se asigna a network.http.parsed_user_agent en la UDM.
headers.x-forwarded-host principal.hostname El valor de headers.x-forwarded-host del registro sin procesar se asigna a principal.hostname en la UDM.
headers.x-forwarded-port principal.port El valor de headers.x-forwarded-port del registro sin procesar se asigna a principal.port en la UDM.
headers.x-real-ip principal.ip El valor de headers.x-real-ip del registro sin procesar se asigna a principal.ip en la UDM.
hostname observer.hostname El valor de hostname del registro sin procesar se asigna a observer.hostname en la UDM.
httpHeaders.cf-cache-status target.resource.attribute.labels.value El valor de httpHeaders.cf-cache-status del registro sin procesar se asigna a una etiqueta con la clave "cf-cache-status" en target.resource.attribute.labels en la UDM.
httpHeaders.cf-ray target.resource.attribute.labels.value El valor de httpHeaders.cf-ray del registro sin procesar se asigna a una etiqueta con la clave "cf-ray" en target.resource.attribute.labels en la UDM.
httpHeaders.content-length security_result.about.resource.attribute.labels.value El valor de httpHeaders.content-length del registro sin procesar se asigna a una etiqueta con la clave "httpHeaders Content-Length" en security_result.about.resource.attribute.labels en la UDM.
httpHeaders.content-type security_result.about.resource.attribute.labels.value El valor de httpHeaders.content-type del registro sin procesar se asigna a una etiqueta con la clave "httpHeaders Content-Type" en security_result.about.resource.attribute.labels en la UDM.
httpHeaders.gitlab-lb target.resource.attribute.labels.value El valor de httpHeaders.gitlab-lb del registro sin procesar se asigna a una etiqueta con la clave "gitlab-lb" en target.resource.attribute.labels en la UDM.
httpHeaders.gitlab-sv target.resource.attribute.labels.value El valor de httpHeaders.gitlab-sv del registro sin procesar se asigna a una etiqueta con la clave "gitlab-sv" en target.resource.attribute.labels en la UDM.
httpHeaders.ratelimit-limit target.resource.attribute.labels.value El valor de httpHeaders.ratelimit-limit del registro sin procesar se asigna a una etiqueta con la clave "ratelimit-limit" en target.resource.attribute.labels en la UDM.
httpHeaders.ratelimit-observed target.resource.attribute.labels.value El valor de httpHeaders.ratelimit-observed del registro sin procesar se asigna a una etiqueta con la clave "ratelimit-observed" en target.resource.attribute.labels en la UDM.
httpHeaders.ratelimit-remaining target.resource.attribute.labels.value El valor de httpHeaders.ratelimit-remaining del registro sin procesar se asigna a una etiqueta con la clave "ratelimit-remaining" en target.resource.attribute.labels en la UDM.
httpHeaders.ratelimit-reset target.resource.attribute.labels.value El valor de httpHeaders.ratelimit-reset del registro sin procesar se asigna a una etiqueta con la clave "ratelimit-reset" en target.resource.attribute.labels en la UDM.
httpHeaders.ratelimit-resettime target.resource.attribute.labels.value El valor de httpHeaders.ratelimit-resettime del registro sin procesar se asigna a una etiqueta con la clave "ratelimit-resettime" en target.resource.attribute.labels en la UDM.
httpHeaders.referrer-policy target.resource.attribute.labels.value El valor de httpHeaders.referrer-policy del registro sin procesar se asigna a una etiqueta con la clave "referrer-policy" en target.resource.attribute.labels en la AUA.
httpHeaders.server target.resource.attribute.labels.value El valor de httpHeaders.server del registro sin procesar se asigna a una etiqueta con la clave "server" en target.resource.attribute.labels en la UDM.
httpHeaders.x-content-type-options target.resource.attribute.labels.value El valor de httpHeaders.x-content-type-options del registro sin procesar se asigna a una etiqueta con la clave "x-content-type-options" en target.resource.attribute.labels en la UDM.
httpHeaders.x-frame-options target.resource.attribute.labels.value El valor de httpHeaders.x-frame-options del registro sin procesar se asigna a una etiqueta con la clave "x-frame-options" en target.resource.attribute.labels en la UDM.
httpHeaders.x-request-id target.resource.attribute.labels.value El valor de httpHeaders.x-request-id del registro sin procesar se asigna a una etiqueta con la clave "x-request-id" en target.resource.attribute.labels en la UDM.
httpStatus network.http.response_code El valor de httpStatus del registro sin procesar se asigna a network.http.response_code en la UDM.
httpUrl target.url El valor de httpUrl del registro sin procesar se asigna a target.url en la UDM.
insertId metadata.product_log_id El valor de insertId del registro sin procesar se asigna a metadata.product_log_id en la UDM.
job additional.fields.value.string_value El valor de job del registro sin procesar se asigna a un campo con la clave "job id" en additional.fields en la UDM.
job_status additional.fields.value.string_value El valor de job_status del registro sin procesar se asigna a un campo con la clave "job_status" en additional.fields en la UDM.
labels.compute.googleapis.com/resource_name target.resource.name El valor de labels.compute.googleapis.com/resource_name del registro sin procesar se asigna a target.resource.name en la UDM.
labels.k8s-pod/app_kubernetes_io/instance target.resource.attribute.labels.value El valor de labels.k8s-pod/app_kubernetes_io/instance del registro sin procesar se asigna a una etiqueta con la clave "Instancia de IO de Kubernetes" en target.resource.attribute.labels en la UDM.
labels.k8s-pod/app_kubernetes_io/name target.resource.attribute.labels.value El valor de labels.k8s-pod/app_kubernetes_io/name del registro sin procesar se asigna a una etiqueta con la clave "Nombre de la instancia de IO de Kubernetes" en target.resource.attribute.labels en la UDM.
labels.k8s-pod/component target.resource.attribute.labels.value El valor de labels.k8s-pod/component del registro sin procesar se asigna a una etiqueta con la clave "component" en target.resource.attribute.labels en la UDM.
labels.k8s-pod/controller-revision-hash target.resource.attribute.labels.value El valor de labels.k8s-pod/controller-revision-hash del registro sin procesar se asigna a una etiqueta con la clave "Controller Revision Hash" en target.resource.attribute.labels en la UDM.
labels.k8s-pod/helm_sh/chart target.resource.attribute.labels.value El valor de labels.k8s-pod/helm_sh/chart del registro sin procesar se asigna a una etiqueta con la clave "Kubernetes IO Instance Manager SH" en target.resource.attribute.labels en la UDM.
labels.k8s-pod/vault-active target.resource.attribute.labels.value El valor de labels.k8s-pod/vault-active del registro sin procesar se asigna a una etiqueta con la clave "Vault active" en target.resource.attribute.labels en la UDM.
labels.k8s-pod/vault-initialized target.resource.attribute.labels.value El valor de labels.k8s-pod/vault-initialized del registro sin procesar se asigna a una etiqueta con la clave "Vault initialized" en target.resource.attribute.labels en la UDM.
labels.k8s-pod/vault-perf-standby target.resource.attribute.labels.value El valor de labels.k8s-pod/vault-perf-standby del registro sin procesar se asigna a una etiqueta con la clave "vault perf standby" en target.resource.attribute.labels en la UDM.
labels.k8s-pod/vault-sealed target.resource.attribute.labels.value El valor de labels.k8s-pod/vault-sealed del registro sin procesar se asigna a una etiqueta con la clave "Vault sealed" en target.resource.attribute.labels en la UDM.
labels.k8s-pod/vault-version target.resource.attribute.labels.value El valor de labels.k8s-pod/vault-version del registro sin procesar se asigna a una etiqueta con la clave "Vault version" en target.resource.attribute.labels en la UDM.
maskedToken security_result.about.resource.attribute.labels.value El valor de maskedToken del registro sin procesar se asigna a una etiqueta con la clave "maskedToken" en security_result.about.resource.attribute.labels en la UDM.
method network.http.method, operation El valor de method del registro sin procesar se asigna a operation. Si operation no está vacío, network.application_protocol se establece en “HTTP”. En función del valor de operation, se deriva network.http.method.
msg metadata.description El valor de msg del registro sin procesar se asigna a metadata.description en la UDM.
pid target.process.pid El valor de pid del registro sin procesar se asigna a target.process.pid en la UDM.
request.client_token target.resource.attribute.labels.value El valor de request.client_token del registro sin procesar se asigna a una etiqueta con la clave "request_client_token" en target.resource.attribute.labels en la AUA.
request.client_token_accessor target.resource.attribute.labels.value El valor de request.client_token_accessor del registro sin procesar se asigna a una etiqueta con la clave "request_client_token_accessor" en target.resource.attribute.labels en la UDM.
request.data.role_id target.resource.attribute.labels.value El valor de request.data.role_id del registro sin procesar se asigna a una etiqueta con la clave "request_data_role_id" en target.resource.attribute.labels en la UDM.
request.data.secret_id target.resource.attribute.labels.value El valor de request.data.secret_id del registro sin procesar se asigna a una etiqueta con la clave "request_data_secret_id" en target.resource.attribute.labels en la UDM.
request.id network.session_id El valor de request.id del registro sin procesar se asigna a network.session_id en la UDM.
request.mount_accessor target.resource.attribute.labels.value El valor de request.mount_accessor del registro sin procesar se asigna a una etiqueta con la clave "request_mount_accessor" en target.resource.attribute.labels en la UDM.
request.mount_type target.resource.attribute.labels.value El valor de request.mount_type del registro sin procesar se asigna a una etiqueta con la clave "request_mount_type" en target.resource.attribute.labels en la UDM.
request.namespace.id target.namespace El valor de request.namespace.id del registro sin procesar se asigna a target.namespace en la UDM.
request.operation target.resource.attribute.labels.value, network.http.method, operation El valor de request.operation del registro sin procesar se asigna a operation. Si operation no está vacío, network.application_protocol se establece en “HTTP”. En función del valor de operation, se deriva network.http.method. El valor de request.operation también se asigna a una etiqueta con la clave "capabilities" en target.resource.attribute.labels en la UDM.
request.path target.url El valor de request.path del registro sin procesar se asigna a target.url en la UDM.
request.remote_address principal.ip El valor de request.remote_address del registro sin procesar se asigna a principal.ip en la UDM.
request.remote_port principal.port El valor de request.remote_port del registro sin procesar se asigna a principal.port en la UDM.
request.wrap_ttl target.resource.attribute.labels.value El valor de request.wrap_ttl del registro sin procesar se asigna a una etiqueta con la clave "request_wrap_ttl" en target.resource.attribute.labels en la UDM.
resource.labels.container_name additional.fields.value.string_value El valor de resource.labels.container_name del registro sin procesar se asigna a un campo con la clave "nombre del contenedor" en additional.fields en la UDM.
resource.labels.location target.location.name El valor de resource.labels.location del registro sin procesar se asigna a target.location.name en la UDM.
resource.labels.namespace_name target.namespace El valor de resource.labels.namespace_name del registro sin procesar se asigna a target.namespace en la UDM.
resource.labels.pod_name additional.fields.value.string_value El valor de resource.labels.pod_name del registro sin procesar se asigna a un campo con la clave "pod_name" en additional.fields en la UDM.
resource.labels.project_id target.cloud.project.name El valor de resource.labels.project_id del registro sin procesar se asigna a target.cloud.project.name en la UDM.
response.data.num_uses target.resource.attribute.labels.value El valor de response.data.num_uses del registro sin procesar se asigna a una etiqueta con la clave "response_data_num_uses" en target.resource.attribute.labels en la UDM.
response.data.orphan target.resource.attribute.labels.value El valor de response.data.orphan del registro sin procesar se asigna a una etiqueta con la clave "response_data_orphan" en target.resource.attribute.labels en la UDM.
response.data.renewable target.resource.attribute.labels.value El valor de response.data.renewable del registro sin procesar se asigna a una etiqueta con la clave "response_data_renewable" en target.resource.attribute.labels en la UDM.
response.data.ttl target.resource.attribute.labels.value El valor de response.data.ttl del registro sin procesar se asigna a una etiqueta con la clave "response_data_ttl" en target.resource.attribute.labels en la UDM.
response.wrap_info.accessor target.resource.attribute.labels.value El valor de response.wrap_info.accessor del registro sin procesar se asigna a una etiqueta con la clave "response_wrap_info_accessor" en target.resource.attribute.labels en la UDM.
response.wrap_info.token target.resource.attribute.labels.value El valor de response.wrap_info.token del registro sin procesar se asigna a una etiqueta con la clave "response_wrap_info_token" en target.resource.attribute.labels en la UDM.
response.wrap_info.ttl target.resource.attribute.labels.value El valor de response.wrap_info.ttl del registro sin procesar se asigna a una etiqueta con la clave "response_wrap_info_ttl" en target.resource.attribute.labels en la UDM.
response.wrap_info.wrapped_accessor target.resource.attribute.labels.value El valor de response.wrap_info.wrapped_accessor del registro sin procesar se asigna a una etiqueta con la clave "response_wrap_info_wrapped_accessor" en target.resource.attribute.labels en la UDM.
runner principal.user.userid El valor de runner del registro sin procesar se asigna a principal.user.userid en la UDM.
status network.http.response_code El valor de status del registro sin procesar se asigna a network.http.response_code en la UDM.
streamingID target.resource.attribute.labels.value El valor de streamingID del registro sin procesar se asigna a una etiqueta con la clave "streamingID" en target.resource.attribute.labels en la UDM.
time metadata.event_timestamp.seconds, metadata.event_timestamp.nanos El valor de time del registro sin procesar se analiza y se usa para completar el campo metadata.event_timestamp en la UDM.
type metadata.product_event_type El valor de type del registro sin procesar se asigna a metadata.product_event_type en la UDM.
url principal.url El valor de url del registro sin procesar se asigna a principal.url en la UDM. El valor "MACHINE" se asigna a extensions.auth.type en la UDM. El valor "USER_LOGIN" se asigna a metadata.event_type en la UDM. El valor "HASHICORP" se asigna a metadata.log_type en la UDM. El valor "HASHICORP" se asigna a metadata.product_name en la UDM. El valor "HASHICORP" se asigna a metadata.vendor_name en la UDM. El valor "SERVICE_ACCOUNT" se asigna a target.resource.attribute.roles.type en la UDM.

Cambios

2023-10-26

  • Se agregó un patrón de Grok para controlar los registros SYSLOG+JSON.

2023-09-22

  • Se modificó la asignación de "request.remote_port" de "target.port" a "principal.port".
  • Se modificó la asignación de "request.remote_address" de "target.ip" a "principal.ip".
  • Se asignó "error" a "security_result.description".
  • Se asignó "resource.labels.namespace_name" a "target.namespace".
  • Se asignaron "resource.labels.pod_name" y "resource.labels.container_name" a "additional.fields".
  • Se asignó "resource.labels.project_id" a "target.cloud.project.name".
  • Se asignó "resource.labels.location" a "target.location.name".
  • Se asignó "insertId" a "metadata.product_log_id".
  • Se asignaron "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" y "labels.k8s-pod/vault-active" a "target.resource.attribute.labels".
  • Se asignó "labels.compute.googleapis.com/resource_name" a "target.resource.name".

26-04-2023

  • Se agregó un patrón de Grok para controlar los registros de syslog.
  • Se asignó "status" a "network.http.response_code".
  • Se asignó "runner" a "principal.user.userid".
  • Se asignaron "job_id" y "job_status" a "additional.fields".

24-3-2023

  • Se asignó "host" a "observer.hostname".
  • Se asignó "cluster" a "observer.resource.name".
  • Si el registro contiene un clúster, se asignó "clúster" a "observer.resource.resource_type".
  • Se agregó un bloque JSON para recuperar datos del campo "_raw".
  • "httpStatus" se asignó a "network.http.response_code".
  • "httpUrl" se asignó a "target.url".
  • "pid" se asignó a "target.process.pid".
  • "msg" se asignó a "metadata.description".
  • "url" se asignó a "principal.url".
  • "hostname" se asignó a "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" asignados a "target.resource.attribute.labels"
  • "method" asignado a "network.application_protocol".
  • "headers.user-agent" asignado a "network.http.parsed_user_agent".
  • "httpHeaders.cache-control" se asignó a "additional.fields".
  • "httpHeaders.content-type", "httpHeaders.content-length", "maskedToken", "headers.accept" asignados a "security_result.about.resource.attribute.labels".
  • "headers.x-real-ip" se asignó a "principal.ip".
  • "headers.x-forwarded-host" se asignó a "principal.hostname".
  • "headers.x-forwarded-port" se asignó a "principal.port".
  • "headers.snyk-acting-org-public-id", "headers.snyk-flow-name", "headers.snyk-request-id" asignados a "principal.resource.attribute.labels".

2023-02-09

  • Sin embargo, el analizador se creó recientemente.