Recoger registros de auditoría de GitHub
Información general
Este analizador gestiona los registros de auditoría de GitHub en formato JSON. Limpia la entrada eliminando numerosos campos, realiza varias operaciones grok y de clave-valor basadas en el campo process_type para extraer información relevante, asigna los campos extraídos al UDM y estructura la salida para la ingestión de Google SecOps. También gestiona casos límite específicos y realiza transformaciones de datos para diferentes subtipos de registros en los registros de auditoría de GitHub.
Antes de empezar
Asegúrate de que cumples los siguientes requisitos previos:
- Instancia de Google SecOps.
- Acceso privilegiado a repositorios de GitHub.
Configurar feeds
Para configurar un feed, sigue estos pasos:
- Ve a Configuración de SIEM > Feeds.
- Haz clic en Añadir feed.
- En la página siguiente, haga clic en Configurar un solo feed.
- En el campo Nombre del feed, introduce un nombre para el feed (por ejemplo, Registros de GitHub).
- Selecciona Webhook como Tipo de fuente.
- Selecciona GitHub como Tipo de registro.
- Haz clic en Siguiente.
- Opcional: especifica los valores de los siguientes parámetros de entrada:
- Delimitador de división: el delimitador que se usa para separar las líneas de registro, como
\n
.
- Delimitador de división: el delimitador que se usa para separar las líneas de registro, como
- Haz clic en Siguiente.
- Revise la configuración del feed en la pantalla Finalizar y, a continuación, haga clic en Enviar.
- Haz clic en Generar clave secreta para generar una clave secreta que autentique este feed.
- Copia y guarda la clave secreta. No podrás volver a ver esta clave secreta. Si es necesario, puedes volver a generar una clave secreta, pero esta acción hará que la clave secreta anterior quede obsoleta.
- En la pestaña Detalles, copie la URL del endpoint del feed del campo Información del endpoint. Debes especificar esta URL de endpoint en tu aplicación cliente.
- Haz clic en Listo.
Crear una clave de API para la feed de webhook
Ve a la consolaGoogle Cloud > Credenciales.
Haz clic en Crear credenciales y, a continuación, selecciona Clave de API.
Restringe el acceso de la clave de API a la API Google Security Operations.
Especificar la URL del endpoint
- En tu aplicación cliente, especifica la URL del endpoint HTTPS proporcionada en el feed de webhook.
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 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 mediante parámetros de consulta con el siguiente formato:
ENDPOINT_URL?key=API_KEY&secret=SECRET
Haz los cambios siguientes:
ENDPOINT_URL
: URL del endpoint del feed.API_KEY
: la clave de API para autenticarte en Google Security Operations.SECRET
: la clave secreta que has generado para autenticar el feed.
Crear un webhook en GitHub
En esta guía se proporcionan instrucciones detalladas para crear un webhook en GitHub que envíe datos a Google SecOps.
- Ve a tu repositorio de GitHub.
- Ve a Ajustes.
- Haz clic en Webhooks.
- Haz clic en Añadir webhook.
- En el campo Payload URL (URL de carga útil), introduce la URL del endpoint de la API Google SecOps.
Seleccione application/json como Tipo de contenido.
Opcional: Para aumentar la seguridad, define un secreto. De esta forma, se genera una firma para las cargas útiles de las webhooks, lo que te permite verificar su autenticidad en el lado de Google SecOps. Si usas un secreto, configúralo también en tu feed de Google SecOps.
Elige los eventos que activarán el webhook. Para registrar todos los eventos, selecciona Permitirme seleccionar eventos concretos y marca los eventos pertinentes (por ejemplo, Push, Pull Request o Issue). Si no lo tienes claro, empieza con Solo el evento
push
.Asegúrese de que la casilla Activo esté marcada.
Haz clic en Añadir 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 del array additional.fields de 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 en la matriz 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 ha asignado 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 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 empresa se asigna como una etiqueta en la matriz target.resource.attribute.labels . |
config.url |
read_only_udm.target.url |
La URL de configuración se ha asignado 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 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 en la matriz 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 en la matriz 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 en la matriz 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 hook del campo de datos se asigna como una etiqueta en la matriz 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 en la matriz 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 en la matriz 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 en la matriz 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, se extrae la parte del nombre de usuario y se asigna a target.user.userid , y la dirección de correo completa se añade 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 cifrado se asigna a network.session_id . |
org |
read_only_udm.target.administrative_domain |
La organización se ha asignado 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 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 está asignado 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 de 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 ámbitos 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 en mayúsculas y se asigna a network.application_protocol . |
url_path |
read_only_udm.target.url |
La ruta de URL se ha asignado a target.url . |
user |
read_only_udm.target.user.user_display_name |
El usuario se ha asignado a target.user.user_display_name . |
user_agent |
read_only_udm.network.http.user_agent , read_only_udm.network.http.parsed_user_agent |
El user-agent 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 en la matriz 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 HEAD de la ejecución del flujo de trabajo se asigna como una etiqueta dentro de la matriz 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 en la matriz 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 en la matriz 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 . Si no se cumple ninguna otra condición específica, se asigna el valor USER_RESOURCE_ACCESS de forma predeterminada. |
(Lógica del analizador) | read_only_udm.metadata.log_type |
El tipo de registro se ha codificado como "GITHUB". |
(Lógica del analizador) | read_only_udm.metadata.product_name |
El nombre del producto se ha codificado como "GITHUB". |
(Lógica del analizador) | read_only_udm.metadata.vendor_name |
El nombre del proveedor se ha codificado como "GITHUB". |
(Lógica del analizador) | read_only_udm.target.resource.resource_type |
El tipo de recurso se define como STORAGE_OBJECT cuando está presente el campo repo . |
(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 o 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 los registros de git-daemon , "fatal" se asigna a "CRITICAL". |
(Lógica del analizador) | read_only_udm.network.application_protocol |
El protocolo de aplicación se deriva de los campos protocol , proto , babeld_proto , transport_protocol_name o raw.protocol , se convierte a mayúsculas y se comprueba si es "HTTP", "HTTPS" o "SSH". |
(Lógica del analizador) | read_only_udm.network.application_protocol_version |
La versión del protocolo de aplicación se deriva del campo http_version , si está presente. |
(Lógica del analizador) | read_only_udm.network.http.parsed_user_agent |
El user-agent 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 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 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 obtiene 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 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 SHA-1 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 superior 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 obtiene 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 de destino 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 de los usuarios de destino se obtienen del campo external_identity_nameid si se trata de una dirección de correo. |
(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 obtiene 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 de recurso 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 la ubicación principal se obtiene 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 de 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 de 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 obtiene del campo repo_name , si está presente. |
(Lógica del analizador) | read_only_udm.intermediary.hostname |
El nombre de host del intermediario se deriva del campo hostname , si está presente. |
(Lógica del analizador) | read_only_udm.intermediary.ip |
La IP del intermediario se obtiene 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 obtiene 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 de 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 de registro de 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 obtiene 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 añaden varias etiquetas a la matriz security_result.about.labels en función de 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 la 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 de los resultados de seguridad se obtiene de los campos creason , action o reason , si están presentes. |
(Lógica del analizador) | read_only_udm.network.http.referral_url |
La URL referente 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 user-agent 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 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 condicionalmente como pares clave-valor en la matriz 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 condicionalmente a la matriz 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 en la matriz 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 admitido, el analizador intentará 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 , que se convierten 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? Recibe respuestas de los miembros de la comunidad y de los profesionales de Google SecOps.