Recopila registros de Skyhigh Security
En este documento, se explica cómo transferir registros de Skyhigh Security (anteriormente, McAfee Skyhigh CASB) a Google Security Operations con 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, luego, asigna los campos extraídos a los atributos correspondientes del UDM dentro del objeto event.idm.read_only_udm
, y categoriza el tipo de evento según la presencia y los valores de campos específicos.
Antes de comenzar
Asegúrate de cumplir con los siguientes requisitos previos:
- Instancia de Google SecOps
- Un host de Windows 2016 o posterior, o un host de Linux con
systemd
- Si se ejecuta detrás de un proxy, los puertos de firewall están abiertos.
- Se instaló y configuró el conector de Skyhigh Cloud
- Acceso privilegiado a Skyhigh Security Cloud Connector
Obtén el archivo de autenticación de transferencia de Google SecOps
- Accede a la consola de Google SecOps.
- Ve a SIEM Settings > Collection Agents.
- Descarga el archivo de autenticación de transferencia. Guarda el archivo de forma segura en el sistema en el que se instalará BindPlane.
Obtén el ID de cliente de Google SecOps
- Accede a la consola de Google SecOps.
- Ve a SIEM Settings > Profile.
- Copia y guarda el ID de cliente de la sección Detalles de la organización.
Instala el agente de BindPlane
Instala el agente de Bindplane en tu sistema operativo Windows o Linux según las siguientes instrucciones.
Instalación en Windows
- 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 en Linux
- Abre una terminal con privilegios de raíz 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 obtener más opciones de instalación, consulta la guía de instalación.
Configura el agente de BindPlane para transferir Syslog y enviarlo a Google SecOps
- Accede al archivo de configuración:
- Ubica el archivo
config.yaml
. Por lo general, 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).
- Ubica 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
- Reemplaza el puerto y la dirección IP según sea necesario en tu infraestructura.
- Reemplaza
<customer_id>
por el ID de cliente real. - Actualiza
/path/to/ingestion-authentication-file.json
a la ruta de acceso en la que se guardó el archivo de autenticación en la sección Obtén el archivo de autenticación de la transferencia 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 de Servicios o ingresar el siguiente comando:
net stop BindPlaneAgent && net start BindPlaneAgent
Requisitos previos antes de descargar el cliente de Logging
Asegúrate de tener los siguientes detalles:
- Privilegio de usuario de Usage Analytics: Tu cuenta debe tener el rol de usuario de Usage Analytics.
- ID de cliente: Sigue estos pasos para encontrar tu ID de cliente en Skyhigh CASB:
- Accede a Skyhigh CASB.
- Ve a Configuración > Infraestructura > Administración de proxy del cliente.
- Haz clic en Configuración global > Autenticación de inquilino.
- En Configuración global, busca tu ID de cliente.
- Dirección de correo electrónico y contraseña: Tus credenciales de acceso (o las de la cuenta de servicio dedicada). Si accedes con SAML sin enviar una contraseña, no podrás instalar el cliente de registro.
Descarga e instala el cliente de registro de Skyhigh
- Descarga el cliente de Logging en una instancia dedicada.
- Instala el cliente de Logging (si es necesario, descomprime el archivo EXE descargado).
- Una vez finalizada la instalación, abre el cliente de registro.
- En la página Configuración, proporciona los siguientes detalles de configuración:
- ID de cliente: Ingresa tu ID de cliente de Skyhigh CASB que obtuviste 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 regional o de país según dónde se almacenen tus datos:
- UE: Unión Europea
- IN: India
- SG: Singapur
- UE: Emiratos Árabes Unidos
- UK, Reino Unido
- US: Estados Unidos
- Nombre: Ingresa el nombre de usuario, que suele ser la dirección de correo electrónico que se usa para acceder a Secure Web Gateway o a una instancia dedicada.
- Contraseña: Ingresa la contraseña que usas para acceder a Secure Web Gateway. Si accedes con SAML, no puedes usar el cliente de Logging.
- Versión de API: Ingresa
version 13
. - Tipo de registro: Puedes descargar diferentes tipos de registros, incluidos los que contienen datos provenientes de la Web, el aislamiento del navegador remoto (RBI), el acceso privado y el firewall de Cloud.
- Selecciona Enviar como Syslogs y proporciona los siguientes detalles de configuración:
- Host del cliente de Syslog: Ingresa la dirección IP del agente de BindPlane.
- Puerto del cliente de Syslog: Ingresa 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 | Se convirtió a marca de tiempo desde el formato yyyy-MM-dd HH:mm:ss |
FileSize | target.file.size | Se asigna directamente y se convierte en uinteger. |
Nombre de host | principal.hostname | Asignado directamente |
MessageSourceAddress | principal.ip | Se asigna directamente y se combina si hay varias instancias. |
Gravedad | additional.fields.value.string_value (clave: SEVERITY) | Asignado directamente |
SeverityValue | additional.fields.value.string_value (clave: SEVERITY_VALUE) | Asignado directamente |
SourceModuleName | additional.fields.value.string_value (clave: SOURCE_MODULE_NAME) | Asignado directamente |
SourceModuleType | principal.resource.resource_subtype | Asignado directamente |
SyslogFacility | security_result.about.resource.attribute.labels.value (clave: SYSLOG_FACILITY) | Asignado directamente |
SyslogFacilityValue | security_result.about.resource.attribute.labels.value (clave: SYSLOG_FACILITY_VALUE) | Asignado directamente |
SyslogSeverity | security_result.about.resource.attribute.labels.value (clave: SYSLOG_SEVERITY) | Asignado directamente |
SyslogSeverityValue | security_result.about.resource.attribute.labels.value (clave: SYSLOG_SEVERITY_VALUE) | Asignado directamente |
activityName | metadata.product_event_type | Se mapeó directamente y se quitaron los corchetes. |
actorId | principal.user.userid | Se asigna directamente y también se agrega a email_addresses si es un correo electrónico. |
actorIdType | principal.user.attribute.roles.name | Asignado directamente |
collaborationSharedLink | security_result.about.resource.attribute.labels.value (clave: COLLABORATION_SHARED_LINK) | Asignado directamente |
contentItemId | target.file.full_path (si contentItemType es FILE) | Se mapeó directamente y se quitaron las comillas. |
contentItemId | target.url (si contentItemType es SAAS_RESOURCE) | Se mapeó directamente y se quitaron las comillas. |
contentItemHierarchy | additional.fields.value.string_value (clave: CONTENT_ITEM_HIERARCHY) | Se mapeó directamente y se quitaron las comillas. |
contentItemName | target.resource.name | Se mapeó directamente y se quitaron las comillas. |
contentItemType | additional.fields.value.string_value (clave: CONTENT_ITEM_TYPE) | Asignado directamente |
incidentGroup | security_result.detection_fields.value (clave: INCIDENT_GROUP) | Asignado directamente |
incidentId | metadata.product_log_id | Asignado directamente |
incidentRiskScore | security_result.detection_fields.value (clave: INCIDENT_RISK_SCORE) | Asignado directamente |
incidentRiskSeverityId | Se usa en combinación con riskSeverity para determinar security_result.severity | |
informationAccountId | target.resource.product_object_id | Asignado directamente |
informationAnomalyCategory | security_result.category_details | Se mapeó directamente y se quitaron las comillas. |
informationAnomalyCause | security_result.detection_fields.value (clave: INFO_ANOMALY_CAUSE) | Se mapeó directamente y se quitaron las comillas. |
informationCategory | security_result.category_details | Asignado directamente |
informationConfigType | additional.fields.value.string_value (clave: INFORMATION_CONFIG_TYPE) | Se mapeó directamente y se quitaron las comillas. |
informationContentItemParent | target.resource.parent | Se mapeó directamente y se quitaron las comillas. |
informationEventId | additional.fields.value.string_value (clave: INFORMATION_EVENT_ID) | Asignado directamente |
informationExternalCollaboratorsCount | additional.fields.value.string_value (clave: INFORMATION_COLLAB_COUNT) | Asignado directamente |
informationFileTypes | additional.fields.value.list_value.values.string_value (clave: FILE_TYPE) | Se extrajo de una cadena similar a JSON, se quitaron los corchetes y las comillas. |
informationLastExecutedResponseLabel | additional.fields.value.string_value (clave: INFORMATION_LAST_RESPONSE) | Asignado directamente |
informationScanName | metadata.description | Se mapeó directamente y se quitaron las comillas. |
informationScanRunDate | No se asignó al UDM | |
informationSource | additional.fields.value.string_value (clave: INFORMATION_SOURCE) | Asignado directamente |
informationUniqueMatchCount | additional.fields.value.string_value (clave: INFORMATION_UNQ_MATCH_COUNT) | Asignado directamente |
informationUserAttributesSAMAccountName | principal.user.user_display_name | Se mapeó directamente y se quitaron los corchetes. |
instanceId | principal.resource.product_object_id | Asignado directamente |
instanceName | principal.resource.name | Se mapeó directamente y se quitaron las comillas. |
policyId | security_result.rule_id | Asignado directamente |
policyName | security_result.summary | Se mapeó directamente y se quitaron las comillas. |
respuesta | Se usa para determinar security_result.action (ALLOW o BLOCK). | |
riskSeverity | Se usa en combinación con incidentRiskSeverityId para determinar security_result.severity, convertido a mayúsculas. | |
serviceNames | target.application | Se mapearon directamente, se quitaron los corchetes, las comillas y los espacios adicionales. |
sourceIps | principal.ip | Se extrae de una cadena similar a JSON y se combina si hay varias instancias. |
estado | additional.fields.value.string_value (clave: STATUS) | Asignado directamente |
threatCategory | security_result.threat_name | Se mapeó directamente y se quitaron las comillas. |
totalMatchCount | security_result.detection_fields.value (clave: TOTAL_MATCH_COUNT) | Asignado directamente |
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 establece si están presentes instanceName o instanceId. |
N/A | metadata.event_type | Se determina en función de un conjunto de condiciones: - USER_RESOURCE_UPDATE_CONTENT si están presentes actorId, contentItemId o contentItemName - USER_UNCATEGORIZED si están presentes actorId y target - STATUS_UPDATE si están presentes Hostname o MessageSourceAddress - GENERIC_EVENT en otros casos |
N/A | security_result.severity | Se determina en función de la combinación de riskSeverity y incidentRiskSeverityId: - LOW si riskSeverity es LOW y incidentRiskSeverityId es 0 - MEDIUM si riskSeverity es MEDIUM y incidentRiskSeverityId es 1 - HIGH si riskSeverity es HIGH y incidentRiskSeverityId es 2 - INFORMATIONAL si riskSeverity es INFO y incidentRiskSeverityId es 3 |
N/A | security_result.action | Se determina según el valor de la respuesta: - ALLOW si la respuesta contiene allow (sin distinción entre mayúsculas y minúsculas) - BLOCK si la respuesta contiene Violation (sin distinción entre mayúsculas y minúsculas) |
¿Necesitas más ayuda? Obtén respuestas de miembros de la comunidad y profesionales de Google SecOps.