Recopilar registros de alertas de Palo Alto Cortex XDR
En este documento se describe cómo puede recoger registros de alertas de Palo Alto Cortex XDR configurando un feed de Google Security Operations.
Para obtener más información, consulta Ingestión de datos en Google Security Operations.
Una etiqueta de ingestión identifica el analizador que normaliza los datos de registro sin procesar en formato UDM estructurado. La información de este documento se aplica al analizador con la etiqueta de ingestión CORTEX_XDR
.
Configurar alertas de Cortex XDR de Palo Alto
Para configurar las alertas de Palo Alto Cortex XDR, sigue estos pasos:
- Obtén la clave de API de alertas de Cortex XDR de Palo Alto Networks.
- Obtén el ID de la clave de API de alertas de Cortex XDR de Palo Alto Networks.
- Obtén el nombre de dominio completo (FQDN).
Obtener la clave de API de alertas de Palo Alto Cortex XDR
- Inicia sesión en el portal de Cortex XDR.
- En el menú Configuración, haz clic en Configuración.
- Selecciona +Nueva clave.
- En la sección Nivel de seguridad, selecciona Avanzado.
- En la sección Roles, selecciona Lector.
- Haz clic en Generar.
- Copia la clave de API y, a continuación, haz clic en Hecho. La clave de API representa tu clave de autorización única y solo se muestra en el momento de la creación. Es obligatorio cuando configuras el feed de Google Security Operations.
Obtener el ID de la clave de API de alertas de Cortex XDR de Palo Alto
En la sección Configurations (Configuraciones), ve a API keys > ID (Claves de API > ID). Anota el número de ID correspondiente, que representa el token x-xdr-auth-id:{key_id}
.
Obtener FQDN
- Ve a Claves de API.
- Haz clic en Copiar URL. Guarda la URL, que es obligatoria cuando configures el feed de Google Security Operations.
Configurar feeds
Para configurar este tipo de registro, sigue estos pasos:
- Ve a Configuración de SIEM > Feeds.
- Haz clic en Añadir feed.
- Seleccione el paquete de feeds Cortex XDR.
Configure los siguientes parámetros de entrada obligatorios:
- Tipo de fuente: API de terceros (opción recomendada)
- Encabezados HTTP de autenticación: proporciona la clave de autorización y el ID de clave de autorización que has obtenido anteriormente.
- Nombre de host de la API: proporciona la URL que has obtenido anteriormente.
- Endpoint: especifica el endpoint.
Opciones avanzadas
- Nombre del feed: valor rellenado automáticamente que identifica el feed.
- Espacio de nombres del recurso: espacio de nombres asociado al feed.
- Etiquetas de ingestión: etiquetas aplicadas a todos los eventos de este feed.
Haga clic en Crear feed.
Para obtener más información sobre cómo configurar varios feeds para diferentes tipos de registros en esta familia de productos, consulta el artículo Configurar feeds por producto.
Para obtener más información sobre los feeds de Google Security Operations, consulta la documentación de los feeds de Google Security Operations. Para obtener información sobre los requisitos de cada tipo de feed, consulta el artículo Configuración de feeds por tipo.
Referencia de asignación de campos
Este analizador extrae registros de seguridad de Palo Alto Networks Cortex XDR en formato JSON o SYSLOG (clave-valor), normaliza los campos y los asigna al UDM. Gestiona los formatos JSON y de clave-valor, extrae fechas, enriquece los datos con metadatos y estructura la salida para que se pueda ingerir en Google SecOps.
Habilitar las solicitudes de la API REST en Cortex XDR y configurar un feed de Google SecOps
En esta guía se proporcionan instrucciones detalladas para habilitar las solicitudes de la API REST en Cortex XDR y configurar un feed correspondiente en Google SecOps.
Parte 1: Habilitar las solicitudes de API REST en Cortex XDR
Cortex XDR usa claves de API para la autenticación. Sigue estos pasos para generar una clave de API:
- Inicia sesión en la consola de gestión de Cortex XDR.
- Ve a Ajustes.
- Accede a Claves de API.
- Genera una clave.
- Proporcione un nombre de clave (por ejemplo, "Integración de SecOps").
- Asigna a la clave de API los permisos necesarios para acceder a los datos requeridos. Esto es fundamental para la seguridad y garantiza que la clave solo tenga acceso a lo que necesita. Consulta la documentación de Cortex XDR para ver los permisos específicos que necesitas en tu caso práctico.
- Almacena la clave de API de forma segura. Lo necesitará para configurar el feed de Google SecOps. Esta es la única vez que verás la clave completa, así que asegúrate de copiarla ahora.
- (Opcional) Configura una fecha de vencimiento para la clave de API para mejorar la seguridad.
Parte 2: Configurar el feed en Google SecOps
Una vez que hayas generado la clave de API, configura el feed en Google SecOps para recibir datos de Cortex XDR:
- Ve a Configuración de SIEM > Feeds.
- Haz clic en Añadir nuevo.
- Seleccione API de terceros como Tipo de fuente.
- Seleccione el tipo de registro necesario que corresponda a los datos que quiera ingerir de Cortex XDR.
- Haz clic en Siguiente.
- Configure los siguientes parámetros de entrada:
- Endpoint de la API: introduce la URL base de la API de Cortex XDR. Puedes encontrarlo en la documentación de la API de Cortex XDR.
- Clave de API: pega la clave de API que has generado antes.
- Otros parámetros: en función de la API de Cortex XDR específica que estés usando, es posible que tengas que proporcionar parámetros adicionales, como filtros de datos o intervalos de tiempo específicos. Consulta la documentación de la API de Cortex XDR para obtener más información.
- Haz clic en Siguiente y, a continuación, en Enviar.
Cuestiones importantes:
- Limitación de la frecuencia: ten en cuenta los límites de frecuencia que impone la API Cortex XDR. Configura el feed de forma adecuada para no superar estos límites.
- Gestión de errores: implementa una gestión de errores adecuada en tu configuración de Google SecOps para gestionar las situaciones en las que la API de Cortex XDR no esté disponible o devuelva errores.
- Seguridad: almacena la clave de API de forma segura y sigue las prácticas recomendadas de seguridad. Cambia las claves de API periódicamente para minimizar el impacto de posibles vulneraciones.
- Documentación: consulta la documentación oficial de la API de Cortex XDR para obtener información detallada sobre los endpoints, los parámetros y los formatos de datos disponibles.
Tabla de asignación de UDM
Campo de registro | Asignación de UDM | Lógica |
---|---|---|
action |
security_result.action |
Si action contiene "BLOCKED", asigna el valor "BLOCK". |
action |
security_result.action_details |
Si act no está vacío, es nulo o es "none", usa el valor de act . De lo contrario, si action no es "BLOCKED", usa el valor de action . |
action_country |
security_result.about.location.country_or_region |
Asignación directa. También se usa en el campo events anidado. |
action_file_path |
target.resource.attribute.labels |
Crea una etiqueta con la clave "action_file_path" y el valor del campo de registro. |
action_file_sha256 |
target.file.sha256 |
Convierte el texto a minúsculas. |
action_local_port |
principal.port |
Convierte el valor en un número entero. |
action_remote_ip |
target.ip |
Se ha combinado en la matriz target.ip . |
action_remote_ip |
target.asset.ip |
Se ha combinado en la matriz target.asset.ip . |
action_remote_port |
target.port |
Convierte el valor en un número entero. |
act |
security_result.action_details |
Se usa si no está vacío, es nulo o tiene el valor "none". |
agent_data_collection_status |
Sin asignar | Aunque está presente en el registro sin procesar, este campo no se asigna al objeto IDM en el UDM final. |
agent_device_domain |
target.administrative_domain |
Asignación directa. |
agent_fqdn |
Sin asignar | Aunque está presente en el registro sin procesar, este campo no se asigna al objeto IDM en el UDM final. |
agent_install_type |
Sin asignar | Aunque está presente en el registro sin procesar, este campo no se asigna al objeto IDM en el UDM final. |
agent_is_vdi |
Sin asignar | Aunque está presente en el registro sin procesar, este campo no se asigna al objeto IDM en el UDM final. |
agent_os_sub_type |
target.platform_version |
Asignación directa. |
agent_os_type |
target.platform |
Si es "Windows", asigna el valor "WINDOWS". |
agent_version |
Sin asignar | Aunque está presente en el registro sin procesar, este campo no se asigna al objeto IDM en el UDM final. |
alert_id |
security_result.rule_id |
Asignación directa. |
app |
target.application |
Asignación directa. |
cat |
security_result.category_details |
Se ha combinado en el campo security_result.category_details . |
category |
security_result.category |
Si es "Malware", asigna el valor "SOFTWARE_MALICIOUS". |
category |
security_result.category_details |
Se ha combinado en el campo security_result.category_details . |
cn1 |
network.session_id |
Asignación directa. |
cn1Label |
Sin asignar | Aunque está presente en el registro sin procesar, este campo no se asigna al objeto IDM en el UDM final. |
contains_featured_host |
Sin asignar | Aunque está presente en el registro sin procesar, este campo no se asigna al objeto IDM en el UDM final. |
contains_featured_ip |
Sin asignar | Aunque está presente en el registro sin procesar, este campo no se asigna al objeto IDM en el UDM final. |
contains_featured_user |
Sin asignar | Aunque está presente en el registro sin procesar, este campo no se asigna al objeto IDM en el UDM final. |
creation_time |
metadata.event_timestamp |
Convertida a marca de tiempo. |
cs1 |
security_result.rule_name |
Se concatena con cs1Label para formar el security_result.rule_name . |
cs1Label |
security_result.rule_name |
Se concatena con cs1 para formar el security_result.rule_name . |
cs2 |
additional.fields |
Crea un par clave-valor en additional.fields con la clave de cs2Label y el valor de cadena de cs2 . |
cs2Label |
additional.fields |
Se usa como clave del valor cs2 en additional.fields . |
cs3 |
additional.fields |
Crea un par clave-valor en additional.fields con la clave de cs3Label y el valor de cadena de cs3 . |
cs3Label |
additional.fields |
Se usa como clave del valor cs3 en additional.fields . |
cs4 |
additional.fields |
Crea un par clave-valor en additional.fields con la clave de cs4Label y el valor de cadena de cs4 . |
cs4Label |
additional.fields |
Se usa como clave del valor cs4 en additional.fields . |
cs5 |
additional.fields |
Crea un par clave-valor en additional.fields con la clave de cs5Label y el valor de cadena de cs5 . |
cs5Label |
additional.fields |
Se usa como clave del valor cs5 en additional.fields . |
cs6 |
additional.fields |
Crea un par clave-valor en additional.fields con la clave de cs6Label y el valor de cadena de cs6 . |
cs6Label |
additional.fields |
Se usa como clave del valor cs6 en additional.fields . |
CSPaccountname |
additional.fields |
Crea un par clave-valor en additional.fields con la clave "CSPaccountname" y el valor de cadena del campo de registro. |
description |
metadata.description |
Asignación directa. También se usa para security_result.description si event_type no es GENERIC_EVENT. |
destinationTranslatedAddress |
target.ip |
Se ha combinado en la matriz target.ip . |
destinationTranslatedAddress |
target.asset.ip |
Se ha combinado en la matriz target.asset.ip . |
destinationTranslatedPort |
target.port |
Se convierte en un número entero si no está vacío o es -1. |
deviceExternalId |
security_result.about.asset_id |
Tiene el prefijo "Device External Id: ". |
dpt |
target.port |
Se convierte en un número entero si destinationTranslatedPort está vacío o es -1. |
dst |
target.ip |
Se ha combinado en la matriz target.ip . |
dst |
target.asset.ip |
Se ha combinado en la matriz target.asset.ip . |
dst_agent_id |
target.ip |
Se convierte en una dirección IP y se combina en la matriz target.ip si es una IP válida. |
dst_agent_id |
target.asset.ip |
Se convierte en una dirección IP y se combina en la matriz target.asset.ip si es una IP válida. |
dvchost |
principal.hostname |
Asignación directa. |
dvchost |
principal.asset.hostname |
Asignación directa. |
endpoint_id |
target.process.product_specific_process_id |
Prefijado con "cor:". |
event_id |
Sin asignar | Aunque está presente en el registro sin procesar, este campo no se asigna al objeto IDM en el UDM final. |
event_sub_type |
Sin asignar | Aunque está presente en el registro sin procesar, este campo no se asigna al objeto IDM en el UDM final. |
event_timestamp |
metadata.event_timestamp |
Convertida a marca de tiempo. También se usa en el campo events anidado. |
event_type |
metadata.event_type |
Se asigna a un tipo de evento de UDM en función de la lógica. También se usa en el campo events anidado. |
event_type |
metadata.product_event_type |
Asignación directa. |
event_type |
security_result.threat_name |
Asignación directa. |
events |
Eventos anidados | Los campos de la matriz events se asignan a los campos de UDM correspondientes de los objetos events anidados. Consulta las asignaciones de campos individuales para obtener más información. |
external_id |
Sin asignar | Aunque está presente en el registro sin procesar, este campo no se asigna al objeto IDM en el UDM final. |
fileId |
target.resource.attribute.labels |
Crea una etiqueta con la clave "fileId" y el valor del campo de registro. |
fileHash |
target.file.sha256 |
Se ha convertido a minúsculas. Asigna el valor FILE_UNCATEGORIZED a metadata.event_type . |
filePath |
target.file.full_path |
Asignación directa. Asigna el valor FILE_UNCATEGORIZED a metadata.event_type . |
fw_app_category |
Sin asignar | Aunque está presente en el registro sin procesar, este campo no se asigna al objeto IDM en el UDM final. |
fw_app_id |
Sin asignar | Aunque está presente en el registro sin procesar, este campo no se asigna al objeto IDM en el UDM final. |
fw_app_subcategory |
Sin asignar | Aunque está presente en el registro sin procesar, este campo no se asigna al objeto IDM en el UDM final. |
fw_app_technology |
Sin asignar | Aunque está presente en el registro sin procesar, este campo no se asigna al objeto IDM en el UDM final. |
fw_device_name |
Sin asignar | Aunque está presente en el registro sin procesar, este campo no se asigna al objeto IDM en el UDM final. |
fw_email_recipient |
Sin asignar | Aunque está presente en el registro sin procesar, este campo no se asigna al objeto IDM en el UDM final. |
fw_email_sender |
Sin asignar | Aunque está presente en el registro sin procesar, este campo no se asigna al objeto IDM en el UDM final. |
fw_email_subject |
Sin asignar | Aunque está presente en el registro sin procesar, este campo no se asigna al objeto IDM en el UDM final. |
fw_interface_from |
Sin asignar | Aunque está presente en el registro sin procesar, este campo no se asigna al objeto IDM en el UDM final. |
fw_interface_to |
Sin asignar | Aunque está presente en el registro sin procesar, este campo no se asigna al objeto IDM en el UDM final. |
fw_is_phishing |
Sin asignar | Aunque está presente en el registro sin procesar, este campo no se asigna al objeto IDM en el UDM final. |
fw_misc |
Sin asignar | Aunque está presente en el registro sin procesar, este campo no se asigna al objeto IDM en el UDM final. |
fw_rule |
Sin asignar | Aunque está presente en el registro sin procesar, este campo no se asigna al objeto IDM en el UDM final. |
fw_rule_id |
Sin asignar | Aunque está presente en el registro sin procesar, este campo no se asigna al objeto IDM en el UDM final. |
fw_serial_number |
Sin asignar | Aunque está presente en el registro sin procesar, este campo no se asigna al objeto IDM en el UDM final. |
fw_url_domain |
Sin asignar | Aunque está presente en el registro sin procesar, este campo no se asigna al objeto IDM en el UDM final. |
fw_vsys |
Sin asignar | Aunque está presente en el registro sin procesar, este campo no se asigna al objeto IDM en el UDM final. |
fw_xff |
Sin asignar | Aunque está presente en el registro sin procesar, este campo no se asigna al objeto IDM en el UDM final. |
host_ip |
principal.ip |
Se ha dividido por comas y se ha combinado en la matriz principal.ip . |
host_ip |
principal.asset.ip |
Se ha dividido por comas y se ha combinado en la matriz principal.asset.ip . |
host_name |
principal.hostname |
Asignación directa. |
host_name |
principal.asset.hostname |
Asignación directa. |
hosts |
target.hostname |
Extrae el nombre de host del primer elemento de la matriz hosts . |
hosts |
target.asset.hostname |
Extrae el nombre de host del primer elemento de la matriz hosts . |
hosts |
target.user.employee_id |
Extrae el ID de usuario del primer elemento de la matriz hosts . |
incident_id |
metadata.product_log_id |
Asignación directa. |
is_whitelisted |
Sin asignar | Aunque está presente en el registro sin procesar, este campo no se asigna al objeto IDM en el UDM final. |
local_insert_ts |
Sin asignar | Aunque está presente en el registro sin procesar, este campo no se asigna al objeto IDM en el UDM final. |
mac |
principal.mac |
Se ha dividido por comas y se ha combinado en la matriz principal.mac . |
matching_status |
Sin asignar | Aunque está presente en el registro sin procesar, este campo no se asigna al objeto IDM en el UDM final. |
metadata.description |
security_result.description |
Se usa si event_type es GENERIC_EVENT. |
metadata.event_type |
metadata.event_type |
Se define en función de la lógica mediante event_type , host_ip y otros campos. |
metadata.log_type |
metadata.log_type |
Se ha definido como "CORTEX_XDR". |
metadata.product_name |
metadata.product_name |
Selecciona "Cortex". |
metadata.vendor_name |
metadata.vendor_name |
Selecciona "Palo Alto Networks". |
msg |
security_result.description |
Asignación directa. |
name |
security_result.summary |
Asignación directa. |
PanOSDGHierarchyLevel1 |
security_result.detection_fields |
Crea un par clave-valor en security_result.detection_fields con la clave "PanOSDGHierarchyLevel1" y el valor del campo de registro. |
PanOSDestinationLocation |
target.location.country_or_region |
Asignación directa. |
PanOSDynamicUserGroupName |
principal.group.group_display_name |
Asignación directa si no está vacío o es "-". |
PanOSSourceLocation |
principal.location.country_or_region |
Asignación directa. |
PanOSThreatCategory |
security_result.category_details |
Se ha combinado en el campo security_result.category_details . |
PanOSThreatID |
security_result.threat_id |
Asignación directa. |
principal.asset.attribute.labels |
principal.asset.attribute.labels |
Crea una etiqueta con la clave "Source" y el valor del campo source . |
proto |
network.ip_protocol |
Se ha convertido a mayúsculas. Define metadata.event_type como NETWORK_CONNECTION. |
request |
network.http.referral_url |
Asignación directa. |
rt |
metadata.event_timestamp |
Convertida a marca de tiempo. |
security_result.severity |
security_result.severity |
Se asigna el valor en mayúsculas de severity . |
severity |
security_result.severity |
Se ha convertido a mayúsculas. |
shost |
principal.hostname |
Asignación directa. Define metadata.event_type como STATUS_UPDATE. |
shost |
principal.asset.hostname |
Asignación directa. Define metadata.event_type como STATUS_UPDATE. |
source |
principal.asset.attribute.labels |
Se usa como valor de la etiqueta "Source". |
source |
security_result.summary |
Se usa si coinciden los filtros not_json y grok . |
sourceTranslatedAddress |
principal.ip |
Se ha combinado en la matriz principal.ip . |
sourceTranslatedAddress |
principal.asset.ip |
Se ha combinado en la matriz principal.asset.ip . |
sourceTranslatedPort |
principal.port |
Se convierte en un número entero si no está vacío o es -1. |
spt |
principal.port |
Se ha convertido en un número entero. |
sr_summary |
security_result.summary |
Se usa si coinciden los filtros not_json y grok . |
src |
principal.ip |
Se ha combinado en la matriz principal.ip . |
src |
principal.asset.ip |
Se ha combinado en la matriz principal.asset.ip . |
suser |
principal.user.user_display_name |
Asignación directa. |
tenantCDLid |
additional.fields |
Crea un par clave-valor en additional.fields con la clave "tenantCDLid" y el valor de cadena del campo de registro. |
tenantname |
additional.fields |
Crea un par clave-valor en additional.fields con la clave "tenantname" y el valor de cadena del campo de registro. |
users |
target.user.userid |
Usa el primer elemento de la matriz users . |
xdr_url |
metadata.url_back_to_product |
Asignación directa. |
¿Necesitas más ayuda? Recibe respuestas de los miembros de la comunidad y de los profesionales de Google SecOps.