Collecter les journaux Skyhigh Security
Ce document explique comment ingérer les journaux Skyhigh Security (anciennement McAfee Skyhigh CASB) dans Google Security Operations à l'aide de Bindplane.
L'analyseur transforme les journaux d'un format SYSLOG+KV en Unified Data Model (UDM). Il normalise d'abord le message de journal en paires clé-valeur, puis mappe les champs extraits aux attributs UDM correspondants dans l'objet event.idm.read_only_udm
, en catégorisant le type d'événement en fonction de la présence et des valeurs de champs spécifiques.
Avant de commencer
Assurez-vous de remplir les conditions suivantes :
- Instance Google SecOps
- Un hôte Windows 2016 ou version ultérieure, ou un hôte Linux avec
systemd
- Si vous exécutez le programme derrière un proxy, les ports du pare-feu sont ouverts.
- Installer et configurer Skyhigh Cloud Connector
- Accès privilégié au connecteur Skyhigh Security Cloud
Obtenir le fichier d'authentification d'ingestion Google SecOps
- Connectez-vous à la console Google SecOps.
- Accédez à Paramètres du SIEM > Agents de collecte.
- Téléchargez le fichier d'authentification d'ingestion. Enregistrez le fichier de manière sécurisée sur le système sur lequel Bindplane sera installé.
Obtenir l'ID client Google SecOps
- Connectez-vous à la console Google SecOps.
- Accédez à Paramètres SIEM> Profil.
- Copiez et enregistrez le numéro client de la section Informations sur l'organisation.
Installer l'agent Bindplane
Installez l'agent Bindplane sur votre système d'exploitation Windows ou Linux en suivant les instructions ci-dessous.
Installation de fenêtres
- Ouvrez l'invite de commandes ou PowerShell en tant qu'administrateur.
Exécutez la commande suivante :
msiexec /i "https://github.com/observIQ/bindplane-agent/releases/latest/download/observiq-otel-collector.msi" /quiet
Installation de Linux
- Ouvrez un terminal avec les droits root ou sudo.
Exécutez la commande suivante :
sudo sh -c "$(curl -fsSlL https://github.com/observiq/bindplane-agent/releases/latest/download/install_unix.sh)" install_unix.sh
Ressources d'installation supplémentaires
Pour plus d'options d'installation, consultez le guide d'installation.
Configurer l'agent Bindplane pour ingérer Syslog et l'envoyer à Google SecOps
- Accédez au fichier de configuration :
- Recherchez le fichier
config.yaml
. Il se trouve généralement dans le répertoire/etc/bindplane-agent/
sous Linux ou dans le répertoire d'installation sous Windows. - Ouvrez le fichier à l'aide d'un éditeur de texte (par exemple,
nano
,vi
ou le Bloc-notes).
- Recherchez le fichier
Modifiez le fichier
config.yaml
comme suit :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
- Remplacez le port et l'adresse IP selon les besoins de votre infrastructure.
- Remplacez
<customer_id>
par le numéro client réel. - Mettez à jour
/path/to/ingestion-authentication-file.json
avec le chemin d'accès à l'emplacement où le fichier d'authentification a été enregistré dans la section Obtenir le fichier d'authentification pour l'ingestion Google SecOps.
Redémarrez l'agent Bindplane pour appliquer les modifications.
Pour redémarrer l'agent Bindplane sous Linux, exécutez la commande suivante :
sudo systemctl restart bindplane-agent
Pour redémarrer l'agent Bindplane sous Windows, vous pouvez utiliser la console Services ou saisir la commande suivante :
net stop BindPlaneAgent && net start BindPlaneAgent
Conditions préalables avant de télécharger le client Logging
Assurez-vous de disposer des informations suivantes :
- Privilège utilisateur "Utilisateurs Usage Analytics" : votre compte doit disposer du rôle "Utilisateurs Usage Analytics".
- Numéro client : procédez comme suit pour trouver votre numéro client dans Skyhigh CASB :
- Connectez-vous à Skyhigh CASB.
- Accédez à Settings> Infrastructure> Client Proxy Management.
- Cliquez sur Configuration globale > Authentification du locataire.
- Sous Paramètres globaux, recherchez votre numéro client.
- Adresse e-mail et mot de passe : vos identifiants de connexion (ou ceux d'un compte de service dédié). Si vous vous connectez à l'aide de SAML sans saisir de mot de passe, vous ne pouvez pas installer le client de journalisation.
Télécharger et installer le client de journalisation Skyhigh
- Téléchargez le client de journalisation sur une instance dédiée.
- Installez le client de journalisation (décompressez le fichier EXE téléchargé si nécessaire).
- Une fois l'installation terminée, ouvrez le client de journalisation.
- Sur la page Configuration, fournissez les informations de configuration suivantes :
- Numéro client : saisissez votre numéro client Skyhigh CASB obtenu à l'étape précédente.
- Service : sélectionnez SSE si vous utilisez Skyhigh SSE, ou WGCS si vous utilisez ce produit avec Trellix ePO.
- Région : choisissez un code régional ou de pays en fonction de l'emplacement de stockage de vos données :
- UE : Union européenne
- IN : Inde
- SG : Singapour
- UE : Émirats arabes unis
- UK — Royaume-Uni
- US : États-Unis
- Nom : saisissez le nom d'utilisateur, qui est généralement l'adresse e-mail utilisée pour se connecter à Secure Web Gateway ou à une instance dédiée.
- Mot de passe : saisissez le mot de passe que vous utilisez pour vous connecter à Secure Web Gateway. Si vous vous connectez avec SAML, vous ne pouvez pas utiliser le client Logging.
- Version de l'API : saisissez
version 13
. - Type de journal : vous pouvez télécharger différents types de journaux, y compris ceux contenant des données provenant du Web, de l'isolation du navigateur à distance (RBI), de l'accès privé et du pare-feu cloud.
- Sélectionnez Envoyer en tant que journaux système et fournissez les informations de configuration suivantes :
- Hôte du client Syslog : saisissez l'adresse IP de l'agent Bindplane.
- Port du client Syslog : saisissez le numéro de port de l'agent Bindplane.
- Transport : sélectionnez UDP ou TCP, en fonction de la configuration de votre agent Bindplane.
Table de mappage UDM
Champ du journal | Mappage UDM | Logique |
---|---|---|
EventReceivedTime | metadata.event_timestamp | Converti en code temporel à partir du format yyyy-MM-dd HH:mm:ss |
FileSize | target.file.size | Mappé directement, converti en uinteger |
Nom d'hôte | principal.hostname | Mappé directement |
MessageSourceAddress | principal.ip | Mappé directement, fusionné s'il existe plusieurs instances |
Gravité | additional.fields.value.string_value (clé : SEVERITY) | Mappé directement |
SeverityValue | additional.fields.value.string_value (clé : SEVERITY_VALUE) | Mappé directement |
SourceModuleName | additional.fields.value.string_value (clé : SOURCE_MODULE_NAME) | Mappé directement |
SourceModuleType | principal.resource.resource_subtype | Mappé directement |
SyslogFacility | security_result.about.resource.attribute.labels.value (clé : SYSLOG_FACILITY) | Mappé directement |
SyslogFacilityValue | security_result.about.resource.attribute.labels.value (key: SYSLOG_FACILITY_VALUE) | Mappé directement |
SyslogSeverity | security_result.about.resource.attribute.labels.value (clé : SYSLOG_SEVERITY) | Mappé directement |
SyslogSeverityValue | security_result.about.resource.attribute.labels.value (clé : SYSLOG_SEVERITY_VALUE) | Mappé directement |
activityName | metadata.product_event_type | Mappé directement, crochets supprimés |
actorId | principal.user.userid | Mappé directement, également ajouté à email_addresses s'il s'agit d'une adresse e-mail |
actorIdType | principal.user.attribute.roles.name | Mappé directement |
collaborationSharedLink | security_result.about.resource.attribute.labels.value (key: COLLABORATION_SHARED_LINK) | Mappé directement |
contentItemId | target.file.full_path (si contentItemType est FILE) | Mappé directement, guillemets supprimés |
contentItemId | target.url (si contentItemType est SAAS_RESOURCE) | Mappé directement, guillemets supprimés |
contentItemHierarchy | additional.fields.value.string_value (clé : CONTENT_ITEM_HIERARCHY) | Mappé directement, guillemets supprimés |
contentItemName | target.resource.name | Mappé directement, guillemets supprimés |
contentItemType | additional.fields.value.string_value (clé : CONTENT_ITEM_TYPE) | Mappé directement |
incidentGroup | security_result.detection_fields.value (clé : INCIDENT_GROUP) | Mappé directement |
incidentId | metadata.product_log_id | Mappé directement |
incidentRiskScore | security_result.detection_fields.value (clé : INCIDENT_RISK_SCORE) | Mappé directement |
incidentRiskSeverityId | Utilisé en combinaison avec riskSeverity pour déterminer security_result.severity | |
informationAccountId | target.resource.product_object_id | Mappé directement |
informationAnomalyCategory | security_result.category_details | Mappé directement, guillemets supprimés |
informationAnomalyCause | security_result.detection_fields.value (clé : INFO_ANOMALY_CAUSE) | Mappé directement, guillemets supprimés |
informationCategory | security_result.category_details | Mappé directement |
informationConfigType | additional.fields.value.string_value (clé : INFORMATION_CONFIG_TYPE) | Mappé directement, guillemets supprimés |
informationContentItemParent | target.resource.parent | Mappé directement, guillemets supprimés |
informationEventId | additional.fields.value.string_value (clé : INFORMATION_EVENT_ID) | Mappé directement |
informationExternalCollaboratorsCount | additional.fields.value.string_value (clé : INFORMATION_COLLAB_COUNT) | Mappé directement |
informationFileTypes | additional.fields.value.list_value.values.string_value (key: FILE_TYPE) | Extrait d'une chaîne de type JSON, crochets et guillemets supprimés |
informationLastExecutedResponseLabel | additional.fields.value.string_value (clé : INFORMATION_LAST_RESPONSE) | Mappé directement |
informationScanName | metadata.description | Mappé directement, guillemets supprimés |
informationScanRunDate | Non mappé à UDM | |
informationSource | additional.fields.value.string_value (clé : INFORMATION_SOURCE) | Mappé directement |
informationUniqueMatchCount | additional.fields.value.string_value (clé : INFORMATION_UNQ_MATCH_COUNT) | Mappé directement |
informationUserAttributesSAMAccountName | principal.user.user_display_name | Mappé directement, crochets supprimés |
instanceId | principal.resource.product_object_id | Mappé directement |
instanceName | principal.resource.name | Mappé directement, guillemets supprimés |
policyId | security_result.rule_id | Mappé directement |
policyName | security_result.summary | Mappé directement, guillemets supprimés |
réponse | Utilisé pour déterminer security_result.action (ALLOW ou BLOCK) | |
riskSeverity | Utilisé en combinaison avec incidentRiskSeverityId pour déterminer security_result.severity, converti en majuscules | |
serviceNames | target.application | Mappé directement, crochets, guillemets et espaces supplémentaires supprimés |
sourceIps | principal.ip | Extrait d'une chaîne de type JSON, fusionné si plusieurs instances |
état | additional.fields.value.string_value (clé : STATUS) | Mappé directement |
threatCategory | security_result.threat_name | Mappé directement, guillemets supprimés |
totalMatchCount | security_result.detection_fields.value (clé : TOTAL_MATCH_COUNT) | Mappé directement |
N/A | metadata.vendor_name | MCAFEE : valeur statique |
N/A | metadata.product_name | MCAFEE_SKYHIGH_CASB : valeur statique |
N/A | metadata.log_type | MCAFEE_SKYHIGH_CASB : valeur statique |
N/A | principal.resource.type | VIRTUAL_MACHINE : défini si instanceName ou instanceId sont présents |
N/A | metadata.event_type | Déterminé en fonction d'un ensemble de conditions : – USER_RESOURCE_UPDATE_CONTENT si actorId, contentItemId ou contentItemName sont présents – USER_UNCATEGORIZED si actorId et target sont présents – STATUS_UPDATE si Hostname ou MessageSourceAddress sont présents – GENERIC_EVENT sinon |
N/A | security_result.severity | Déterminé en fonction de la combinaison de riskSeverity et incidentRiskSeverityId : – LOW si riskSeverity est LOW et incidentRiskSeverityId est 0 – MEDIUM si riskSeverity est MEDIUM et incidentRiskSeverityId est 1 – HIGH si riskSeverity est HIGH et incidentRiskSeverityId est 2 – INFORMATIONAL si riskSeverity est INFO et incidentRiskSeverityId est 3 |
N/A | security_result.action | Déterminé en fonction de la valeur de la réponse : – ALLOW si la réponse contient allow (insensible à la casse) – BLOCK si la réponse contient Violation (insensible à la casse) |
Vous avez encore besoin d'aide ? Obtenez des réponses de membres de la communauté et de professionnels Google SecOps.