Raccogliere i log di Skyhigh Security
Questo documento spiega come importare i log di Skyhigh Security
(in precedenza McAfee Skyhigh CASB) in Google Security Operations utilizzando Bindplane.
Il parser trasforma i log da un formato SYSLOG + KV in un modello Unified Data Model (UDM). Innanzitutto, normalizza il messaggio di log in coppie chiave-valore, quindi mappa
i campi estratti agli attributi UDM corrispondenti all'interno dell'oggetto
event.idm.read_only_udm
, classificando il tipo di evento in base alla presenza e ai valori di campi specifici.
Prima di iniziare
Assicurati di soddisfare i seguenti prerequisiti:
- Istanza Google SecOps
- Un host Windows 2016 o versioni successive oppure Linux con
systemd
- Se l'esecuzione avviene tramite un proxy, le porte del firewall sono aperte
- Installato e configurato Skyhigh Cloud Connector
- Accesso privilegiato a Skyhigh Security Cloud Connector
Recuperare il file di autenticazione importazione di Google SecOps
- Accedi alla console Google SecOps.
- Vai a Impostazioni SIEM > Agenti di raccolta.
- Scarica il file di autenticazione importazione. Salva il file in modo sicuro sul sistema in cui verrà installato Bindplane.
Recuperare l'ID cliente Google SecOps
- Accedi alla console Google SecOps.
- Vai a Impostazioni SIEM > Profilo.
- Copia e salva l'ID cliente dalla sezione Dettagli dell'organizzazione.
Installa l'agente Bindplane
Installa l'agente Bindplane sul sistema operativo Windows o Linux seguendo le istruzioni riportate di seguito.
Installazione di Windows
- Apri il prompt dei comandi o PowerShell come amministratore.
Esegui questo comando:
msiexec /i "https://github.com/observIQ/bindplane-agent/releases/latest/download/observiq-otel-collector.msi" /quiet
Installazione di Linux
- Apri un terminale con privilegi di root o sudo.
Esegui questo comando:
sudo sh -c "$(curl -fsSlL https://github.com/observiq/bindplane-agent/releases/latest/download/install_unix.sh)" install_unix.sh
Risorse aggiuntive per l'installazione
Per ulteriori opzioni di installazione, consulta la guida all'installazione.
Configura l'agente Bindplane per importare Syslog e inviarli a Google SecOps
- Accedi al file di configurazione:
- Individua il file
config.yaml
. In genere, si trova nella directory/etc/bindplane-agent/
su Linux o nella directory di installazione su Windows. - Apri il file utilizzando un editor di testo (ad esempio
nano
,vi
o Blocco note).
- Individua il file
Modifica il file
config.yaml
come segue: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
- Sostituisci la porta e l'indirizzo IP in base alle esigenze della tua infrastruttura.
- Sostituisci
<customer_id>
con l'ID cliente effettivo. - Aggiorna
/path/to/ingestion-authentication-file.json
al percorso in cui è stato salvato il file di autenticazione nella sezione Recupera il file di autenticazione per l'importazione di Google SecOps.
Riavvia l'agente Bindplane per applicare le modifiche
Per riavviare l'agente Bindplane in Linux, esegui questo comando:
sudo systemctl restart bindplane-agent
Per riavviare l'agente Bindplane in Windows, puoi utilizzare la console Servizi o inserire il seguente comando:
net stop BindPlaneAgent && net start BindPlaneAgent
Prerequisiti prima di scaricare il client Logging
Assicurati di avere i seguenti dettagli:
- Privilegio Utente di Usage Analytics: il tuo account deve disporre del ruolo Utenti di Usage Analytics.
- ID cliente: segui questi passaggi per trovare il tuo ID cliente in Skyhigh CASB:
- Accedi a Skyhigh CASB.
- Vai a Impostazioni > Infrastruttura > Gestione proxy client.
- Fai clic su Configurazione globale > Autenticazione tenant.
- Nella sezione Impostazioni globali, trova l'ID cliente visualizzato.
- Indirizzo email e password: le credenziali di accesso tue (o dell'account di servizio dedicato). Se accedi utilizzando SAML senza inviare una password, non puoi installare il client di logging.
Scaricare e installare il client di logging Skyhigh
- Scarica il client di logging in un'istanza dedicata.
- Installa il client Logging (decomprimi il file EXE scaricato, se necessario).
- Al termine dell'installazione, apri il Logging Client.
- Nella pagina Configurazione, fornisci i seguenti dettagli di configurazione:
- ID cliente: inserisci l'ID cliente Skyhigh CASB ottenuto nel passaggio precedente.
- Servizio: seleziona SSE se utilizzi Skyhigh SSE o WGCS se utilizzi questo prodotto insieme a Trellix ePO.
- Regione: scegli un codice regionale o nazionale a seconda di dove sono archiviati i dati:
- UE - Unione Europea
- IN — India
- SG — Singapore
- UE — Emirati Arabi Uniti
- UK — United Kingdom
- US — Stati Uniti
- Nome: inserisci il nome utente, che in genere è l'indirizzo email utilizzato per accedere a Secure Web Gateway o a un'istanza dedicata.
- Password: inserisci la password che utilizzi per accedere a Secure Web Gateway. Se accedi con SAML, non puoi utilizzare il client di logging.
- Versione API: inserisci
version 13
. - Tipo di log: puoi scaricare diversi tipi di log, inclusi quelli con dati provenienti dal web, dall'isolamento del browser remoto (RBI), dall'accesso privato e da Cloud Firewall.
- Seleziona Invia come Syslog e fornisci i seguenti dettagli di configurazione:
- Host client Syslog: inserisci l'indirizzo IP dell'agente Bindplane.
- Porta client Syslog: inserisci il numero di porta dell'agente Bindplane.
- Trasporto: seleziona UDP o TCP, a seconda della configurazione dell'agente Bindplane.
Tabella di mappatura UDM
Campo log | Mappatura UDM | Logic |
---|---|---|
EventReceivedTime | metadata.event_timestamp | Convertito in timestamp dal formato yyyy-MM-dd HH:mm:ss |
FileSize | target.file.size | Mappato direttamente, convertito in uinteger |
Nome host | principal.hostname | Mappato direttamente |
MessageSourceAddress | principal.ip | Mappato direttamente, unito se più istanze |
Gravità | additional.fields.value.string_value (chiave: SEVERITY) | Mappato direttamente |
SeverityValue | additional.fields.value.string_value (chiave: SEVERITY_VALUE) | Mappato direttamente |
SourceModuleName | additional.fields.value.string_value (chiave: SOURCE_MODULE_NAME) | Mappato direttamente |
SourceModuleType | principal.resource.resource_subtype | Mappato direttamente |
SyslogFacility | security_result.about.resource.attribute.labels.value (key: SYSLOG_FACILITY) | Mappato direttamente |
SyslogFacilityValue | security_result.about.resource.attribute.labels.value (key: SYSLOG_FACILITY_VALUE) | Mappato direttamente |
SyslogSeverity | security_result.about.resource.attribute.labels.value (key: SYSLOG_SEVERITY) | Mappato direttamente |
SyslogSeverityValue | security_result.about.resource.attribute.labels.value (key: SYSLOG_SEVERITY_VALUE) | Mappato direttamente |
activityName | metadata.product_event_type | Mappatura diretta, parentesi rimosse |
actorId | principal.user.userid | Mappato direttamente, aggiunto anche a email_addresses se è un'email |
actorIdType | principal.user.attribute.roles.name | Mappato direttamente |
collaborationSharedLink | security_result.about.resource.attribute.labels.value (chiave: COLLABORATION_SHARED_LINK) | Mappato direttamente |
contentItemId | target.file.full_path (se contentItemType è FILE) | Mappato direttamente, preventivi rimossi |
contentItemId | target.url (se contentItemType è SAAS_RESOURCE) | Mappato direttamente, preventivi rimossi |
contentItemHierarchy | additional.fields.value.string_value (chiave: CONTENT_ITEM_HIERARCHY) | Mappato direttamente, preventivi rimossi |
contentItemName | target.resource.name | Mappato direttamente, preventivi rimossi |
contentItemType | additional.fields.value.string_value (chiave: CONTENT_ITEM_TYPE) | Mappato direttamente |
incidentGroup | security_result.detection_fields.value (chiave: INCIDENT_GROUP) | Mappato direttamente |
incidentId | metadata.product_log_id | Mappato direttamente |
incidentRiskScore | security_result.detection_fields.value (key: INCIDENT_RISK_SCORE) | Mappato direttamente |
incidentRiskSeverityId | Utilizzato in combinazione con riskSeverity per determinare security_result.severity | |
informationAccountId | target.resource.product_object_id | Mappato direttamente |
informationAnomalyCategory | security_result.category_details | Mappato direttamente, preventivi rimossi |
informationAnomalyCause | security_result.detection_fields.value (chiave: INFO_ANOMALY_CAUSE) | Mappato direttamente, preventivi rimossi |
informationCategory | security_result.category_details | Mappato direttamente |
informationConfigType | additional.fields.value.string_value (chiave: INFORMATION_CONFIG_TYPE) | Mappato direttamente, preventivi rimossi |
informationContentItemParent | target.resource.parent | Mappato direttamente, preventivi rimossi |
informationEventId | additional.fields.value.string_value (chiave: INFORMATION_EVENT_ID) | Mappato direttamente |
informationExternalCollaboratorsCount | additional.fields.value.string_value (chiave: INFORMATION_COLLAB_COUNT) | Mappato direttamente |
informationFileTypes | additional.fields.value.list_value.values.string_value (chiave: FILE_TYPE) | Estratto da una stringa simile a JSON, parentesi e virgolette rimosse |
informationLastExecutedResponseLabel | additional.fields.value.string_value (chiave: INFORMATION_LAST_RESPONSE) | Mappato direttamente |
informationScanName | metadata.description | Mappato direttamente, preventivi rimossi |
informationScanRunDate | Non mappato a UDM | |
informationSource | additional.fields.value.string_value (chiave: INFORMATION_SOURCE) | Mappato direttamente |
informationUniqueMatchCount | additional.fields.value.string_value (chiave: INFORMATION_UNQ_MATCH_COUNT) | Mappato direttamente |
informationUserAttributesSAMAccountName | principal.user.user_display_name | Mappatura diretta, parentesi rimosse |
instanceId | principal.resource.product_object_id | Mappato direttamente |
instanceName | principal.resource.name | Mappato direttamente, preventivi rimossi |
policyId | security_result.rule_id | Mappato direttamente |
policyName | security_result.summary | Mappato direttamente, preventivi rimossi |
risposta | Utilizzato per determinare security_result.action (ALLOW o BLOCK) | |
riskSeverity | Utilizzato in combinazione con incidentRiskSeverityId per determinare security_result.severity, convertito in maiuscolo | |
serviceNames | target.application | Mappatura diretta, parentesi, virgolette e spazi aggiuntivi rimossi |
sourceIps | principal.ip | Estratto da una stringa simile a JSON, unito se sono presenti più istanze |
stato | additional.fields.value.string_value (chiave: STATUS) | Mappato direttamente |
threatCategory | security_result.threat_name | Mappato direttamente, preventivi rimossi |
totalMatchCount | security_result.detection_fields.value (chiave: TOTAL_MATCH_COUNT) | Mappato direttamente |
N/D | metadata.vendor_name | MCAFEE - Valore statico |
N/D | metadata.product_name | MCAFEE_SKYHIGH_CASB - Valore statico |
N/D | metadata.log_type | MCAFEE_SKYHIGH_CASB - Valore statico |
N/D | principal.resource.type | VIRTUAL_MACHINE - Imposta se sono presenti instanceName o instanceId |
N/D | metadata.event_type | Determinato in base a una serie di condizioni: - USER_RESOURCE_UPDATE_CONTENT se sono presenti actorId, contentItemId o contentItemName - USER_UNCATEGORIZED se sono presenti actorId e target - STATUS_UPDATE se sono presenti Hostname o MessageSourceAddress - GENERIC_EVENT altrimenti |
N/D | security_result.severity | Determinato in base alla combinazione di riskSeverity e incidentRiskSeverityId: - LOW se riskSeverity è LOW e incidentRiskSeverityId è 0 - MEDIUM se riskSeverity è MEDIUM e incidentRiskSeverityId è 1 - HIGH se riskSeverity è HIGH e incidentRiskSeverityId è 2 - INFORMATIONAL se riskSeverity è INFO e incidentRiskSeverityId è 3 |
N/D | security_result.action | Determinato in base al valore della risposta: - ALLOW se la risposta contiene allow (senza distinzione tra maiuscole e minuscole) - BLOCK se la risposta contiene Violation (senza distinzione tra maiuscole e minuscole) |
Hai bisogno di ulteriore assistenza? Ricevi risposte dai membri della community e dai professionisti di Google SecOps.