Recopila registros de Skyhigh Security

Compatible con:

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

  1. Accede a la consola de Google SecOps.
  2. Ve a SIEM Settings > Collection Agents.
  3. 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

  1. Accede a la consola de Google SecOps.
  2. Ve a SIEM Settings > Profile.
  3. 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

  1. Abre el símbolo del sistema o PowerShell como administrador.
  2. Ejecuta el siguiente comando:

    msiexec /i "https://github.com/observIQ/bindplane-agent/releases/latest/download/observiq-otel-collector.msi" /quiet
    

Instalación en Linux

  1. Abre una terminal con privilegios de raíz o sudo.
  2. 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

  1. 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).
  2. 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
    

Reinicia el agente de Bindplane para aplicar los cambios

  1. Para reiniciar el agente de Bindplane en Linux, ejecuta el siguiente comando:

    sudo systemctl restart bindplane-agent
    
  2. 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:

  1. Privilegio de usuario de Usage Analytics: Tu cuenta debe tener el rol de usuario de Usage Analytics.
  2. 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.
  3. 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

  1. Descarga el cliente de Logging en una instancia dedicada.
  2. Instala el cliente de Logging (si es necesario, descomprime el archivo EXE descargado).
  3. Una vez finalizada la instalación, abre el cliente de registro.
  4. En la página Configuración, proporciona los siguientes detalles de configuración:
    1. ID de cliente: Ingresa tu ID de cliente de Skyhigh CASB que obtuviste en el paso anterior.
    2. Servicio: Selecciona SSE si usas Skyhigh SSE o WGCS si usas este producto junto con Trellix ePO.
    3. 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
    4. 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.
    5. 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.
    6. Versión de API: Ingresa version 13.
    7. 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.
    8. 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.