Recoger registros de Skyhigh Security
En este documento se explica cómo ingerir registros de Skyhigh Security (antes McAfee Skyhigh CASB) en Google Security Operations mediante Bindplane.
El analizador transforma los registros de un formato SYSLOG + KV en un modelo de datos unificado (UDM). Primero, normaliza el mensaje de registro en pares clave-valor y, a continuación, asigna los campos extraídos a los atributos de UDM correspondientes en el objeto event.idm.read_only_udm
, categorizando el tipo de evento en función de la presencia y los valores de campos específicos.
Antes de empezar
Asegúrate de que cumples los siguientes requisitos previos:
- Instancia de Google SecOps
- Un host Windows 2016 o posterior, o un host Linux con
systemd
- Si se ejecuta a través de un proxy, los puertos del cortafuegos están abiertos
- Skyhigh Cloud Connector instalado y configurado
- Acceso privilegiado a Skyhigh Security Cloud Connector
Obtener el archivo de autenticación de ingestión de Google SecOps
- Inicia sesión en la consola de Google SecOps.
- Ve a Configuración de SIEM > Agentes de recogida.
- Descarga el archivo de autenticación de ingestión. Guarda el archivo de forma segura en el sistema en el que se instalará Bindplane.
Obtener el ID de cliente de Google SecOps
- Inicia sesión en la consola de Google SecOps.
- Ve a Configuración de SIEM > Perfil.
- Copia y guarda el ID de cliente de la sección Detalles de la organización.
Instalar el agente de Bindplane
Instala el agente de Bindplane en tu sistema operativo Windows o Linux siguiendo las instrucciones que se indican a continuación.
Instalación de ventanas
- Abre el símbolo del sistema o PowerShell como administrador.
Ejecuta el siguiente comando:
msiexec /i "https://github.com/observIQ/bindplane-agent/releases/latest/download/observiq-otel-collector.msi" /quiet
Instalación de Linux
- Abre un terminal con privilegios de superusuario o sudo.
Ejecuta el siguiente comando:
sudo sh -c "$(curl -fsSlL https://github.com/observiq/bindplane-agent/releases/latest/download/install_unix.sh)" install_unix.sh
Recursos de instalación adicionales
Para ver más opciones de instalación, consulta la guía de instalación.
Configurar el agente de BindPlane para ingerir Syslog y enviarlo a Google SecOps
- Accede al archivo de configuración:
- Busca el archivo
config.yaml
. Normalmente, se encuentra en el directorio/etc/bindplane-agent/
en Linux o en el directorio de instalación en Windows. - Abre el archivo con un editor de texto (por ejemplo,
nano
,vi
o Bloc de notas).
- Busca el archivo
Edita el archivo
config.yaml
de la siguiente manera:receivers: udplog: # Replace the port and IP address as required listen_address: "0.0.0.0:514" exporters: chronicle/chronicle_w_labels: compression: gzip # Adjust the path to the credentials file you downloaded in Step 1 creds_file_path: '/path/to/ingestion-authentication-file.json' # Replace with your actual customer ID from Step 2 customer_id: <customer_id> endpoint: malachiteingestion-pa.googleapis.com # Add optional ingestion labels for better organization log_type: 'MCAFEE_SKYHIGH_CASB' raw_log_field: body ingestion_labels: service: pipelines: logs/source0__chronicle_w_labels-0: receivers: - udplog exporters: - chronicle/chronicle_w_labels
- Sustituye el puerto y la dirección IP según sea necesario en tu infraestructura.
- Sustituye
<customer_id>
por el ID de cliente real. - Actualiza
/path/to/ingestion-authentication-file.json
a la ruta donde se guardó el archivo de autenticación en la sección Obtener el archivo de autenticación de ingestión de Google SecOps.
Reinicia el agente de Bindplane para aplicar los cambios
Para reiniciar el agente de Bindplane en Linux, ejecuta el siguiente comando:
sudo systemctl restart bindplane-agent
Para reiniciar el agente de Bindplane en Windows, puedes usar la consola Servicios o introducir el siguiente comando:
net stop BindPlaneAgent && net start BindPlaneAgent
Requisitos previos para descargar el cliente de registro
Asegúrate de que tienes los siguientes datos:
- Privilegio de usuario de analíticas de uso: su cuenta debe tener el rol de usuario de analíticas de uso.
- ID de cliente: sigue estos pasos para encontrar tu ID de cliente en Skyhigh CASB:
- Inicia sesión en Skyhigh CASB.
- Ve a Configuración > Infraestructura > Gestión de proxy de cliente.
- Haga clic en Configuración global > Autenticación de inquilino.
- En Configuración global, verás tu ID de cliente.
- Dirección de correo y contraseña: tus credenciales de inicio de sesión (o las de una cuenta de servicio dedicada). Si inicias sesión con SAML sin enviar una contraseña, no podrás instalar el cliente de registro.
Descargar e instalar el cliente de registro de Skyhigh
- Descarga el Logging Client en una instancia dedicada.
- Instala el cliente de registro (descomprime el archivo EXE descargado si es necesario).
- Una vez completada la instalación, abre el Logging Client (Cliente de registro).
- En la página Configuración, proporciona los siguientes detalles de configuración:
- ID de cliente: introduce el ID de cliente de Skyhigh CASB que has obtenido en el paso anterior.
- Servicio: selecciona SSE si usas Skyhigh SSE o WGCS si usas este producto junto con Trellix ePO.
- Región: elige un código de región o país en función de dónde se almacenen tus datos:
- UE: Unión Europea
- IN: India
- SG: Singapur
- UE: Emiratos Árabes Unidos
- Reino Unido
- US: Estados Unidos
- Nombre: introduce el nombre de usuario, que suele ser la dirección de correo electrónico que se usa para iniciar sesión en Secure Web Gateway o en una instancia dedicada.
- Contraseña: introduce la contraseña que usas para iniciar sesión en Secure Web Gateway. Si inicias sesión con SAML, no puedes usar el cliente de registro.
- Versión de la API: introduce
version 13
. - Tipo de registro: puede descargar diferentes tipos de registros, incluidos los que contienen datos procedentes de la Web, del aislamiento de navegadores remotos (RBI), del acceso privado y de Cloud Firewall.
- Selecciona Enviar como Syslogs y proporciona los siguientes detalles de configuración:
- Host de cliente de Syslog: introduce la dirección IP del agente de Bindplane.
- Puerto de cliente de Syslog: introduce el número de puerto del agente de Bindplane.
- Transporte: selecciona UDP o TCP, según la configuración de tu agente de Bindplane.
Tabla de asignación de UDM
Campo de registro | Asignación de UDM | Lógica |
---|---|---|
EventReceivedTime | metadata.event_timestamp | Convertida a marca de tiempo desde el formato yyyy-MM-dd HH:mm:ss |
FileSize | target.file.size | Asignado directamente, convertido a uinteger |
Nombre de host | principal.hostname | Asignación directa |
MessageSourceAddress | principal.ip | Asignado directamente y combinado si hay varias instancias |
Gravedad | additional.fields.value.string_value (clave: SEVERITY) | Asignación directa |
SeverityValue | additional.fields.value.string_value (clave: SEVERITY_VALUE) | Asignación directa |
SourceModuleName | additional.fields.value.string_value (clave: SOURCE_MODULE_NAME) | Asignación directa |
SourceModuleType | principal.resource.resource_subtype | Asignación directa |
SyslogFacility | security_result.about.resource.attribute.labels.value (key: SYSLOG_FACILITY) | Asignación directa |
SyslogFacilityValue | security_result.about.resource.attribute.labels.value (key: SYSLOG_FACILITY_VALUE) | Asignación directa |
SyslogSeverity | security_result.about.resource.attribute.labels.value (key: SYSLOG_SEVERITY) | Asignación directa |
SyslogSeverityValue | security_result.about.resource.attribute.labels.value (key: SYSLOG_SEVERITY_VALUE) | Asignación directa |
activityName | metadata.product_event_type | Asignado directamente, se han quitado los corchetes |
actorId | principal.user.userid | Asignado directamente. También se añade a email_addresses si es un correo. |
actorIdType | principal.user.attribute.roles.name | Asignación directa |
collaborationSharedLink | security_result.about.resource.attribute.labels.value (key: COLLABORATION_SHARED_LINK) | Asignación directa |
contentItemId | target.file.full_path (si contentItemType es FILE) | Asignado directamente, se han quitado las comillas |
contentItemId | target.url (si contentItemType es SAAS_RESOURCE) | Asignado directamente, se han quitado las comillas |
contentItemHierarchy | additional.fields.value.string_value (key: CONTENT_ITEM_HIERARCHY) | Asignado directamente, se han quitado las comillas |
contentItemName | target.resource.name | Asignado directamente, se han quitado las comillas |
contentItemType | additional.fields.value.string_value (key: CONTENT_ITEM_TYPE) | Asignación directa |
incidentGroup | security_result.detection_fields.value (clave: INCIDENT_GROUP) | Asignación directa |
incidentId | metadata.product_log_id | Asignación directa |
incidentRiskScore | security_result.detection_fields.value (key: INCIDENT_RISK_SCORE) | Asignación directa |
incidentRiskSeverityId | Se usa junto con riskSeverity para determinar security_result.severity. | |
informationAccountId | target.resource.product_object_id | Asignación directa |
informationAnomalyCategory | security_result.category_details | Asignado directamente, se han quitado las comillas |
informationAnomalyCause | security_result.detection_fields.value (clave: INFO_ANOMALY_CAUSE) | Asignado directamente, se han quitado las comillas |
informationCategory | security_result.category_details | Asignación directa |
informationConfigType | additional.fields.value.string_value (key: INFORMATION_CONFIG_TYPE) | Asignado directamente, se han quitado las comillas |
informationContentItemParent | target.resource.parent | Asignado directamente, se han quitado las comillas |
informationEventId | additional.fields.value.string_value (key: INFORMATION_EVENT_ID) | Asignación directa |
informationExternalCollaboratorsCount | additional.fields.value.string_value (key: INFORMATION_COLLAB_COUNT) | Asignación directa |
informationFileTypes | additional.fields.value.list_value.values.string_value (key: FILE_TYPE) | Extraído de una cadena similar a JSON, se han quitado los corchetes y las comillas |
informationLastExecutedResponseLabel | additional.fields.value.string_value (key: INFORMATION_LAST_RESPONSE) | Asignación directa |
informationScanName | metadata.description | Asignado directamente, se han quitado las comillas |
informationScanRunDate | Sin asignar a UDM | |
informationSource | additional.fields.value.string_value (key: INFORMATION_SOURCE) | Asignación directa |
informationUniqueMatchCount | additional.fields.value.string_value (clave: INFORMATION_UNQ_MATCH_COUNT) | Asignación directa |
informationUserAttributesSAMAccountName | principal.user.user_display_name | Asignado directamente, se han quitado los corchetes |
instanceId | principal.resource.product_object_id | Asignación directa |
instanceName | principal.resource.name | Asignado directamente, se han quitado las comillas |
policyId | security_result.rule_id | Asignación directa |
policyName | security_result.summary | Asignado directamente, se han quitado las comillas |
response | Se usa para determinar security_result.action (ALLOW o BLOCK). | |
riskSeverity | Se usa junto con incidentRiskSeverityId para determinar security_result.severity, convertido a mayúsculas. | |
serviceNames | target.application | Asignación directa, corchetes, comillas y espacios adicionales eliminados |
sourceIps | principal.ip | Extraído de una cadena similar a JSON y combinado si hay varias instancias |
status | additional.fields.value.string_value (clave: STATUS) | Asignación directa |
threatCategory | security_result.threat_name | Asignado directamente, se han quitado las comillas |
totalMatchCount | security_result.detection_fields.value (clave: TOTAL_MATCH_COUNT) | Asignación directa |
N/A | metadata.vendor_name | MCAFEE : valor estático |
N/A | metadata.product_name | MCAFEE_SKYHIGH_CASB : valor estático |
N/A | metadata.log_type | MCAFEE_SKYHIGH_CASB : valor estático |
N/A | principal.resource.type | VIRTUAL_MACHINE : se define si están presentes instanceName o instanceId. |
N/A | metadata.event_type | Se determina en función de una serie de condiciones: - USER_RESOURCE_UPDATE_CONTENT si se incluyen actorId, contentItemId o contentItemName - USER_UNCATEGORIZED si se incluyen actorId y target - STATUS_UPDATE si se incluyen Hostname o MessageSourceAddress - GENERIC_EVENT en caso contrario |
N/A | security_result.severity | Se determina en función de la combinación de riskSeverity e incidentRiskSeverityId: - LOW si riskSeverity es LOW e incidentRiskSeverityId es 0 - MEDIUM si riskSeverity es MEDIUM e incidentRiskSeverityId es 1 - HIGH si riskSeverity es HIGH e incidentRiskSeverityId es 2 - INFORMATIONAL si riskSeverity es INFO e incidentRiskSeverityId es 3 |
N/A | security_result.action | Se determina en función del valor de la respuesta: - ALLOW si la respuesta contiene allow (sin distinguir entre mayúsculas y minúsculas) - BLOCK si la respuesta contiene Violation (sin distinguir entre mayúsculas y minúsculas) |
¿Necesitas más ayuda? Recibe respuestas de los miembros de la comunidad y de los profesionales de Google SecOps.