Recopila registros de auditoría de GitHub

Compatible con:

Descripción general

Este analizador controla los registros de auditoría de GitHub en formato JSON. Limpia la entrada quitando numerosos campos, realiza varias operaciones de grok y de clave-valor según el campo process_type para extraer información pertinente, asigna los campos extraídos al UDM y estructura el resultado para la transferencia de datos de Google SecOps. También controla casos extremos específicos y realiza transformaciones de datos para diferentes subtipos de registros dentro de los registros de auditoría de GitHub.

Antes de comenzar

Asegúrate de cumplir con los siguientes requisitos previos:

  • Instancia de Google SecOps.
  • Acceso privilegiado a los repositorios de GitHub

Configura feeds

Existen dos puntos de entrada diferentes para configurar feeds en la plataforma de Google SecOps:

  • Configuración de SIEM > Feeds
  • Centro de contenido > Paquetes de contenido

Configura feeds en Configuración del SIEM > Feeds

Para configurar un feed, sigue estos pasos:

  1. Ve a Configuración del SIEM > Feeds.
  2. Haz clic en Agregar feed nuevo.
  3. En la siguiente página, haz clic en Configurar un solo feed.
  4. En el campo Nombre del feed, ingresa un nombre para el feed (por ejemplo, Registros de GitHub).
  5. Selecciona Webhook como el Tipo de origen.
  6. Selecciona GitHub como el Tipo de registro.
  7. Haz clic en Siguiente.
  8. Opcional: Especifica valores para los siguientes parámetros de entrada:
    • Delimitador de división: Es el delimitador que se usa para separar las líneas de registro, como \n.
  9. Haz clic en Siguiente.
  10. Revisa la configuración del feed en la pantalla Finalizar y, luego, haz clic en Enviar.
  11. Haz clic en Generar clave secreta para generar una clave secreta que autentique este feed.
  12. Copia y almacena la clave secreta. No podrás volver a ver esta clave secreta. Si es necesario, puedes regenerar una clave secreta nueva, pero esta acción hace que la clave secreta anterior quede obsoleta.
  13. En la pestaña Detalles, copia la URL del extremo del feed del campo Información del extremo. Debes especificar esta URL de extremo en tu aplicación cliente.
  14. Haz clic en Listo.

Configura feeds desde el Centro de contenido

Especifica valores para los siguientes campos:

  • Delimitador de división: Es el delimitador que se usa para separar las líneas de registro, como \n.

Opciones avanzadas

  • Nombre del feed: Es un valor completado previamente que identifica el feed.
  • Tipo de fuente: Es el método que se usa para recopilar registros en Google SecOps.
  • Espacio de nombres del activo: Es el espacio de nombres asociado con el feed.
  • Etiquetas de transferencia: Son las etiquetas que se aplican a todos los eventos de este feed.

  • Haz clic en Generar clave secreta para generar una clave secreta que autentique este feed.

  • Copia y almacena la clave secreta. No podrás volver a ver esta clave secreta. Si es necesario, puedes regenerar una clave secreta nueva, pero esta acción hace que la clave secreta anterior quede obsoleta.

  • En la pestaña Detalles, copia la URL del extremo del feed del campo Información del extremo. Debes especificar esta URL de extremo en tu aplicación cliente.

Crea una clave de API para el feed del webhook

  1. Ve a Google Cloud consola > Credenciales.

    Ir a Credenciales

  2. Haz clic en Crear credenciales y selecciona Clave de API.

  3. Restringe el acceso a la clave de API a la API de Google Security Operations.

Especifica la URL del extremo

  1. En tu aplicación cliente, especifica la URL del extremo HTTPS que se proporciona en el feed de webhook.
  2. Para habilitar la autenticación, especifica la clave de API y la clave secreta como parte del encabezado personalizado con el siguiente formato:

    X-goog-api-key = API_KEY
    X-Webhook-Access-Key = SECRET
    

    Recomendación: Especifica la clave de API como un encabezado en lugar de hacerlo en la URL. Si tu cliente de webhook no admite encabezados personalizados, puedes especificar la clave de API y la clave secreta con parámetros de búsqueda en el siguiente formato:

    ENDPOINT_URL?key=API_KEY&secret=SECRET
    

Reemplaza lo siguiente:

  • ENDPOINT_URL: Es la URL del extremo del feed.
  • API_KEY: Es la clave de API para autenticarse en Google Security Operations.
  • SECRET: Es la clave secreta que generaste para autenticar el feed.

Crea un webhook en GitHub

En esta guía, se proporcionan instrucciones paso a paso para crear un webhook en GitHub y enviar datos a SecOps de Google.

  1. Navega a tu repositorio de GitHub.
  2. Ve a Configuración.
  3. Haz clic en Webhooks.
  4. Haz clic en Add webhook (Agregar webhook).
  5. En el campo URL de carga útil, ingresa la URL del extremo de API de Google SecOps.
  6. Selecciona application/json como el Tipo de contenido.

    Opcional: Para mejorar la seguridad, establece un secreto. Esto genera una firma para las cargas útiles de webhook, lo que te permite verificar su autenticidad del lado de Google SecOps. Si usas un secreto, configúralo también en tu feed de Google SecOps.

  7. Elige los eventos que activan el webhook. Para un registro integral, selecciona Permitirme seleccionar eventos individuales y marca los eventos pertinentes (por ejemplo, Push, Pull Request, Issue). Si no lo sabes, comienza con Solo el evento push.

  8. Asegúrate de que esté seleccionada la casilla de verificación Activo.

  9. Haz clic en Agregar webhook para guardar la configuración.

Tabla de asignación de UDM

Campo de registro Asignación de UDM Lógica
_document_id read_only_udm.additional.fields.[].key, read_only_udm.additional.fields.[].value.string_value El _document_id del registro sin procesar se asigna a un par clave-valor en el array additional.fields dentro del UDM.
action read_only_udm.metadata.product_event_type, read_only_udm.security_result.summary El campo action se asigna a product_event_type en los metadatos y a summary en el security_result.
actor read_only_udm.principal.user.userid El campo actor, que representa al usuario que realiza la acción, se asigna a principal.user.userid.
actor_id read_only_udm.principal.user.attribute.labels.[].key, read_only_udm.principal.user.attribute.labels.[].value El actor_id se asigna como una etiqueta dentro del array principal.user.attribute.labels.
actor_ip read_only_udm.principal.ip La dirección IP del actor se asigna a principal.ip.
actor_location.country_code read_only_udm.principal.location.country_or_region El código de país del actor se asigna a principal.location.country_or_region.
application_name read_only_udm.target.application El nombre de la aplicación se asigna a target.application.
business read_only_udm.target.user.company_name, read_only_udm.additional.fields.[].key, read_only_udm.additional.fields.[].value.string_value El nombre de la empresa se asigna a target.user.company_name y como un par clave-valor en additional.fields.
business_id read_only_udm.target.resource.attribute.labels.[].key, read_only_udm.target.resource.attribute.labels.[].value El ID de la empresa se asigna como una etiqueta dentro del array target.resource.attribute.labels.
config.url read_only_udm.target.url La URL de configuración se asigna a target.url.
created_at read_only_udm.metadata.event_timestamp La marca de tiempo created_at se convierte al formato adecuado y se asigna a metadata.event_timestamp.
data.cancelled_at read_only_udm.extensions.vulns.vulnerabilities.scan_end_time La marca de tiempo data.cancelled_at se convierte y se asigna a extensions.vulns.vulnerabilities.scan_end_time.
data.email read_only_udm.target.email La dirección de correo electrónico del campo de datos se asigna a target.email.
data.event read_only_udm.security_result.about.labels.[].key, read_only_udm.security_result.about.labels.[].value El evento del campo de datos se asigna como una etiqueta dentro del array security_result.about.labels.
data.events read_only_udm.security_result.about.labels.[].key, read_only_udm.security_result.about.labels.[].value Los eventos del campo de datos se asignan como etiquetas dentro del array security_result.about.labels.
data.head_branch read_only_udm.security_result.about.labels.[].key, read_only_udm.security_result.about.labels.[].value La rama principal del campo de datos se asigna como una etiqueta dentro del array security_result.about.labels.
data.head_sha read_only_udm.target.file.sha256 El SHA del encabezado del campo de datos se asigna a target.file.sha256.
data.hook_id read_only_udm.target.resource.attribute.labels.[].key, read_only_udm.target.resource.attribute.labels.[].value El ID del gancho del campo de datos se asigna como una etiqueta dentro del array target.resource.attribute.labels.
data.started_at read_only_udm.extensions.vulns.vulnerabilities.scan_start_time La marca de tiempo data.started_at se convierte y se asigna a extensions.vulns.vulnerabilities.scan_start_time.
data.team read_only_udm.target.user.group_identifiers El equipo del campo de datos se asigna a target.user.group_identifiers.
data.trigger_id read_only_udm.security_result.about.labels.[].key, read_only_udm.security_result.about.labels.[].value El ID del activador del campo de datos se asigna como una etiqueta dentro del array security_result.about.labels.
data.workflow_id read_only_udm.security_result.about.labels.[].key, read_only_udm.security_result.about.labels.[].value El ID del flujo de trabajo del campo de datos se asigna como una etiqueta dentro del array security_result.about.labels.
data.workflow_run_id read_only_udm.security_result.about.labels.[].key, read_only_udm.security_result.about.labels.[].value El ID de ejecución del flujo de trabajo del campo de datos se asigna como una etiqueta dentro del array security_result.about.labels.
enterprise.name read_only_udm.additional.fields.[].key, read_only_udm.additional.fields.[].value.string_value El nombre de la empresa se asigna como un par clave-valor en additional.fields.
external_identity_nameid read_only_udm.target.user.userid, read_only_udm.target.user.email_addresses Si external_identity_nameid es una dirección de correo electrónico, se extrae la parte del nombre de usuario y se asigna a target.user.userid, y se agrega el correo electrónico completo a target.user.email_addresses. De lo contrario, todo el valor se asigna a target.user.userid.
external_identity_username read_only_udm.target.user.user_display_name El nombre de usuario de la identidad externa se asigna a target.user.user_display_name.
hashed_token read_only_udm.network.session_id El token con codificación hash se asigna a network.session_id.
org read_only_udm.target.administrative_domain La organización se asigna a target.administrative_domain.
org_id read_only_udm.additional.fields.[].key, read_only_udm.additional.fields.[].value.string_value El ID de la organización se asigna como un par clave-valor en additional.fields.
programmatic_access_type read_only_udm.additional.fields.[].key, read_only_udm.additional.fields.[].value.string_value El tipo de acceso programático se asigna como un par clave-valor en additional.fields.
public_repo read_only_udm.additional.fields.[].key, read_only_udm.additional.fields.[].value.string_value, read_only_udm.target.location.name El valor de public_repo determina el valor asignado a un par clave-valor en additional.fields y target.location.name. "false" se asigna a "PRIVATE", y otros valores se asignan a "PUBLIC".
query_string read_only_udm.additional.fields.[].key, read_only_udm.additional.fields.[].value.string_value La cadena de consulta se asigna como un par clave-valor en additional.fields.
rate_limit_remaining read_only_udm.additional.fields.[].key, read_only_udm.additional.fields.[].value.string_value El límite de frecuencia restante se asigna como un par clave-valor en additional.fields.
repo read_only_udm.target.resource.name El repositorio se asigna a target.resource.name.
repo_id read_only_udm.additional.fields.[].key, read_only_udm.additional.fields.[].value.string_value El ID del repositorio se asigna como un par clave-valor en additional.fields.
repository_public read_only_udm.additional.fields.[].key, read_only_udm.additional.fields.[].value.string_value La marca pública del repositorio se asigna como un par clave-valor en additional.fields.
request_body read_only_udm.additional.fields.[].key, read_only_udm.additional.fields.[].value.string_value El cuerpo de la solicitud se asigna como un par clave-valor en additional.fields.
request_method read_only_udm.network.http.method El método de solicitud se convierte a mayúsculas y se asigna a network.http.method.
route read_only_udm.additional.fields.[].key, read_only_udm.additional.fields.[].value.string_value La ruta se asigna como un par clave-valor en additional.fields.
status_code read_only_udm.network.http.response_code El código de estado se convierte en un número entero y se asigna a network.http.response_code.
token_id read_only_udm.additional.fields.[].key, read_only_udm.additional.fields.[].value.string_value El ID del token se asigna como un par clave-valor en additional.fields.
token_scopes read_only_udm.additional.fields.[].key, read_only_udm.additional.fields.[].value.string_value Los permisos del token se asignan como un par clave-valor en additional.fields.
transport_protocol_name read_only_udm.network.application_protocol El nombre del protocolo de transporte se convierte a mayúsculas y se asigna a network.application_protocol.
url_path read_only_udm.target.url La ruta de URL se asigna a target.url.
user read_only_udm.target.user.user_display_name El usuario se asigna a target.user.user_display_name.
user_agent read_only_udm.network.http.user_agent, read_only_udm.network.http.parsed_user_agent El usuario-agente se asigna a network.http.user_agent, y su versión analizada se asigna a network.http.parsed_user_agent.
user_id read_only_udm.target.user.userid El ID de usuario se asigna a target.user.userid.
workflow.name read_only_udm.security_result.about.labels.[].key, read_only_udm.security_result.about.labels.[].value El nombre del flujo de trabajo se asigna como una etiqueta dentro del array security_result.about.labels.
workflow_run.event read_only_udm.additional.fields.[].key, read_only_udm.additional.fields.[].value.string_value El evento de ejecución del flujo de trabajo se asigna como un par clave-valor en additional.fields.
workflow_run.head_branch read_only_udm.security_result.about.labels.[].key, read_only_udm.security_result.about.labels.[].value La rama principal de la ejecución del flujo de trabajo se asigna como una etiqueta dentro del array security_result.about.labels.
workflow_run.head_sha read_only_udm.target.file.sha256 El SHA del encabezado de la ejecución del flujo de trabajo se asigna a target.file.sha256.
workflow_run.id read_only_udm.target.resource.attribute.labels.[].key, read_only_udm.target.resource.attribute.labels.[].value El ID de ejecución del flujo de trabajo se asigna como una etiqueta dentro del array target.resource.attribute.labels.
workflow_run.workflow_id read_only_udm.security_result.about.labels.[].key, read_only_udm.security_result.about.labels.[].value El ID del flujo de trabajo de la ejecución del flujo de trabajo se asigna como una etiqueta dentro del array security_result.about.labels.
(Lógica del analizador) read_only_udm.metadata.event_type El tipo de evento lo determina el analizador en función de la presencia y los valores de otros campos, como data.team, action y actor. El valor predeterminado es USER_RESOURCE_ACCESS si no se cumple ninguna otra condición específica.
(Lógica del analizador) read_only_udm.metadata.log_type El tipo de registro está codificado como "GITHUB".
(Lógica del analizador) read_only_udm.metadata.product_name El nombre del producto está codificado como "GITHUB".
(Lógica del analizador) read_only_udm.metadata.vendor_name El nombre del proveedor está codificado como "GITHUB".
(Lógica del analizador) read_only_udm.target.resource.resource_type El tipo de recurso se establece en STORAGE_OBJECT cuando el campo repo está presente.
(Lógica del analizador) read_only_udm.target.resource.type El tipo de recurso se deriva del campo action.
(Lógica del analizador) read_only_udm.security_result.action La acción de seguridad (ALLOW/BLOCK) se deriva de los campos at o raw.at si están presentes y son iguales a "success" o no.
(Lógica del analizador) read_only_udm.security_result.severity La gravedad de la seguridad se deriva de los campos level o SeverityText si están presentes. "INFO" se asigna a "INFORMATIONAL", "WARN" a "MEDIUM" y otros valores se asignan directamente. En el caso de los registros de git-daemon, "fatal" se asigna a "CRITICAL".
(Lógica del analizador) read_only_udm.network.application_protocol El protocolo de la aplicación se deriva de los campos protocol, proto, babeld_proto, transport_protocol_name o raw.protocol, se convierte a mayúsculas y se verifica si contiene "HTTP", "HTTPS" y "SSH".
(Lógica del analizador) read_only_udm.network.application_protocol_version La versión del protocolo de la aplicación se deriva del campo http_version si está presente.
(Lógica del analizador) read_only_udm.network.http.parsed_user_agent El usuario-agente analizado se deriva de los campos user_agent, column5, http_ua o content, si están presentes.
(Lógica del analizador) read_only_udm.network.received_bytes Los bytes recibidos se derivan de los campos column3, read_bytes, fs_recv o uploaded_bytes si están presentes, y se convierten en un número entero sin signo.
(Lógica del analizador) read_only_udm.network.received_packets Los paquetes recibidos se derivan del campo client_recv, si está presente, y se convierten en un número entero.
(Lógica del analizador) read_only_udm.network.response_code El código de respuesta se deriva de los campos column2, status, status_code o http_status, si están presentes, y se convierte en un número entero.
(Lógica del analizador) read_only_udm.network.sent_bytes Los bytes enviados se derivan del campo client_sent, si está presente, y se convierten en un número entero sin signo.
(Lógica del analizador) read_only_udm.network.sent_packets Los paquetes enviados se derivan del campo fs_sent si está presente y se convierten en un número entero.
(Lógica del analizador) read_only_udm.network.session_duration.seconds La duración de la sesión en segundos se deriva del campo time_duration si está presente y se convierte en un número entero.
(Lógica del analizador) read_only_udm.target.file.full_path La ruta de acceso completa del archivo de destino se deriva de los campos path, git_dir o dir, si están presentes.
(Lógica del analizador) read_only_udm.target.file.sha1 El SHA1 del archivo de destino se deriva del campo sha si está presente.
(Lógica del analizador) read_only_udm.target.hostname El nombre de host de destino se deriva del campo client_hostname si está presente.
(Lógica del analizador) read_only_udm.target.ip La IP de destino se deriva de los campos x_real_ip, remote_address, client_ip o remote_addr, si están presentes.
(Lógica del analizador) read_only_udm.target.location.name El nombre de la ubicación de destino se deriva de los campos datacenter o public_repo si están presentes.
(Lógica del analizador) read_only_udm.target.port El puerto de destino se deriva de los campos client_port, dstp o remote_port si están presentes, y se convierte en un número entero.
(Lógica del analizador) read_only_udm.target.process.command_line La línea de comandos del proceso de destino se deriva de los campos command, ssh_cmd, cmdline o cmd, si están presentes.
(Lógica del analizador) read_only_udm.target.process.parent_process.pid El ID del proceso principal del proceso de destino se deriva del campo ppid, si está presente, y se convierte en una cadena.
(Lógica del analizador) read_only_udm.target.process.pid El ID del proceso de destino se deriva del campo pid, si está presente, y se convierte en una cadena.
(Lógica del analizador) read_only_udm.target.url La URL de destino se deriva de los campos url, http_url, request_url, http_request, dest_url, config.url o url_path, si están presentes. También se puede construir a partir de path_info y query_string.
(Lógica del analizador) read_only_udm.target.user.attribute.roles.[].name Los roles de usuario objetivo se derivan de los campos actor_type o user_type, si están presentes.
(Lógica del analizador) read_only_udm.target.user.email_addresses Las direcciones de correo electrónico del usuario objetivo se derivan del campo external_identity_nameid si es una dirección de correo electrónico.
(Lógica del analizador) read_only_udm.target.user.group_identifiers Los identificadores del grupo de usuarios objetivo se derivan del campo data.team si está presente.
(Lógica del analizador) read_only_udm.target.user.userid El ID de usuario objetivo se deriva de los campos userid, external_identity_nameid, current_user, member, user_id, actor_id o raw.user_id, si están presentes.
(Lógica del analizador) read_only_udm.target.user.user_display_name El nombre visible del usuario objetivo se deriva de los campos login, user, external_identity_username, user_login o raw.login, si están presentes.
(Lógica del analizador) read_only_udm.principal.asset.asset_id El ID del activo principal se deriva del campo guid, con el prefijo "GUID: ".
(Lógica del analizador) read_only_udm.principal.hostname El nombre de host principal se deriva de los campos hostname, request_host, host o principal_hostname, si están presentes.
(Lógica del analizador) read_only_udm.principal.ip La IP principal se deriva de los campos column6, ip, x_real_ip, remote_address, raw.ip, actor_ip o log:source:ip, si están presentes.
(Lógica del analizador) read_only_udm.principal.location.country_or_region El país o la región de ubicación principal se deriva del campo actor_location.country_code si está presente.
(Lógica del analizador) read_only_udm.principal.port El puerto principal se deriva de los campos srcp o log:source:port, si están presentes, y se convierte en un número entero.
(Lógica del analizador) read_only_udm.principal.resource.name El nombre del recurso principal se deriva del campo service.name si está presente.
(Lógica del analizador) read_only_udm.principal.resource.product_object_id El ID del objeto del producto del recurso principal se deriva de los campos service.instance.id o subject_id si están presentes.
(Lógica del analizador) read_only_udm.principal.url La URL principal se deriva del campo repo si está presente.
(Lógica del analizador) read_only_udm.principal.user.userid El ID de usuario principal se deriva del campo repository_owner_id si está presente y se convierte en una cadena.
(Lógica del analizador) read_only_udm.principal.user.user_display_name El nombre visible del usuario principal se deriva del campo repo_name si está presente.
(Lógica del analizador) read_only_udm.intermediary.hostname El nombre de host intermedio se deriva del campo hostname si está presente.
(Lógica del analizador) read_only_udm.intermediary.ip La IP intermedia se deriva de los campos x_forwarded_for o xff_ip si están presentes.
(Lógica del analizador) read_only_udm.metadata.description La descripción de los metadatos se deriva de los campos content, at o raw.message, si están presentes.
(Lógica del analizador) read_only_udm.metadata.product_event_type El tipo de evento del producto se deriva de los campos process_type o action si están presentes.
(Lógica del analizador) read_only_udm.metadata.product_log_id El ID del registro del producto se deriva de los campos github_request_id, id, request_id o raw.request_id si están presentes.
(Lógica del analizador) read_only_udm.metadata.product_version La versión del producto se deriva del campo version si está presente.
(Lógica del analizador) read_only_udm.security_result.about.labels.[].key, read_only_udm.security_result.about.labels.[].value Se agregan varias etiquetas al array security_result.about.labels según la presencia y los valores de campos como data.events, data.workflow_id, workflow.name, data.head_branch, data.trigger_id, data.workflow_run_id y data.event.
(Lógica del analizador) read_only_udm.security_result.description La descripción del resultado de seguridad se deriva de los campos auth_status, data_msg, msg, Body, desc o content, si están presentes.
(Lógica del analizador) read_only_udm.security_result.severity_details Los detalles de gravedad del resultado de seguridad se derivan del campo userid, si está presente.
(Lógica del analizador) read_only_udm.security_result.summary El resumen del resultado de seguridad se deriva de los campos creason, action o reason, si están presentes.
(Lógica del analizador) read_only_udm.network.http.referral_url La URL de referencia HTTP se deriva de los campos column4 o referer si están presentes.
(Lógica del analizador) read_only_udm.network.http.user_agent El usuario-agente HTTP se deriva de los campos column5, http_ua o user_agent, si están presentes.
(Lógica del analizador) read_only_udm.network.sent_bytes Los bytes enviados por la red se derivan de los campos client_sent o fs_sent, si están presentes, y se convierten en un número entero sin signo.
(Lógica del analizador) read_only_udm.additional.fields.[].key, read_only_udm.additional.fields.[].value.string_value Muchos campos se asignan de forma condicional como pares clave-valor en el array additional.fields, incluidos auth_fingerprint, controller, oauth_access_id, oauth_application_id, oauth_scopes, route, worker_request_count, repo, repo_visibility, auth, content_length, elapsed, catalog_service, action, method, failure_type, failure_reason, hashed_token, token_type, gitauth_version, enterprise.name, programmatic_access_type, token_id, token_scopes, integration, query_string, rate_limit_remaining, request_body, org_id, repo_id, repository_public, raw.method, raw.failure_type, raw.failure_reason, raw.from, raw.raw_login, device_cookie, operation, operation_type, category_type, business, note, read, pre_perform_allocation_count, backend, queue, class, success, env, job_id y job. La lógica específica de cada campo se detalla en el código del analizador.
(Lógica del analizador) read_only_udm.security_result.detection_fields.[].key, read_only_udm.security_result.detection_fields.[].value Los campos controller_action, two_factor, delay_time, queued_time, delivery_build, delivery_send y stages se asignan de forma condicional al array security_result.detection_fields.
(Lógica del analizador) read_only_udm.target.resource.attribute.labels.[].key, read_only_udm.target.resource.attribute.labels.[].value Los campos hook_id, job_name, job_workflow_ref, runner_group_id, runner_group_name, runner_name, runner_id, workflow_run_id y business_id se asignan de forma condicional como etiquetas dentro del array target.resource.attribute.labels.
(Lógica del analizador) read_only_udm.metadata.event_timestamp Si la marca de tiempo no está disponible directamente en un formato compatible, el analizador intenta extraerla y convertirla de varios campos, incluidos ts, now, created_at, Timestamp, time y raw.now.
(Lógica del analizador) read_only_udm.network.http.method El método HTTP se deriva de los campos method, column1, request_method, http_method o raw.method, y se convierte a mayúsculas.
(Lógica del analizador) read_only_udm.target.application La aplicación de destino se deriva de los campos process, program o app si están presentes.

¿Necesitas más ayuda? Obtén respuestas de miembros de la comunidad y profesionales de Google SecOps.