Recoger registros de Skyhigh Security

Disponible en:

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

  1. Inicia sesión en la consola de Google SecOps.
  2. Ve a Configuración de SIEM > Agentes de recogida.
  3. 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

  1. Inicia sesión en la consola de Google SecOps.
  2. Ve a Configuración de SIEM > Perfil.
  3. 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

  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 de Linux

  1. Abre un terminal con privilegios de superusuario 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 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

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

  1. Privilegio de usuario de analíticas de uso: su cuenta debe tener el rol de usuario de analíticas de uso.
  2. 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.
  3. 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

  1. Descarga el Logging Client en una instancia dedicada.
  2. Instala el cliente de registro (descomprime el archivo EXE descargado si es necesario).
  3. Una vez completada la instalación, abre el Logging Client (Cliente de registro).
  4. En la página Configuración, proporciona los siguientes detalles de configuración:
    1. ID de cliente: introduce el ID de cliente de Skyhigh CASB que has obtenido 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 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
    4. 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.
    5. 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.
    6. Versión de la API: introduce version 13.
    7. 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.
    8. 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.