Collecter les journaux Wiz
Ce document explique comment ingérer des journaux Wiz dans Google Security Operations. L'analyseur transforme les journaux bruts au format JSON de Wiz en Unified Data Model (UDM). Il commence par initialiser les valeurs par défaut des champs UDM, puis analyse le message JSON, extrait les champs pertinents tels que les informations utilisateur, la localisation, les détails de l'appareil et les résultats de sécurité. Wiz est une plate-forme de sécurité cloud qui offre une visibilité de bout en bout sans agent et une priorisation des risques dans les environnements Google Cloud, AWS, Azure, OCI et Kubernetes.
Avant de commencer
Assurez-vous de remplir les conditions suivantes :
- Instance Google SecOps
- Accès privilégié à Wiz
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.
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 de l'ingestion et enregistrez-le dans un emplacement sécurisé.
Configurer l'intégration dans Wiz
- Connectez-vous à l'interface utilisateur Web Wiz.
- Accédez à la page Se connecter à Wiz.
- Cliquez sur Google Cloud Chronicle.
- Sélectionnez le champ d'application.
- Saisissez votre numéro client Google SecOps.
- Saisissez l'adresse du point de terminaison de votre instance Google SecOps.
- Canada : https://northamerica-northeast2-malachiteingestion-pa.googleapis.com
- Dammam : https://me-central2-malachiteingestion-pa.googleapis.com
- Europe (multirégion) : https://europe-malachiteingestion-pa.googleapis.com
- Francfort : https://europe-west3-malachiteingestion-pa.googleapis.com
- Londres : https://europe-west2-malachiteingestion-pa.googleapis.com
- Mumbai : https://asia-south1-malachiteingestion-pa.googleapis.com
- Singapour : https://asia-southeast1-malachiteingestion-pa.googleapis.com
- Sydney : https://australia-southeast1-malachiteingestion-pa.googleapis.com
- Tel-Aviv : https://me-west1-malachiteingestion-pa.googleapis.com
- Tokyo : https://asia-northeast1-malachiteingestion-pa.googleapis.com
- Multirégion États-Unis : https://malachiteingestion-pa.googleapis.com
- Zurich : https://europe-west6-malachiteingestion-pa.googleapis.com
- Importez le fichier d'authentification d'ingestion.
- Cliquez sur Enregistrer.
Table de mappage UDM
Champ du journal | Mappage UDM | Logique |
---|---|---|
action | metadata.product_event_type | Mappage direct lorsque eventType est vide. |
action | principal.application | Mappage direct lorsque l'action est Report et que serviceAccount.name n'est pas vide. |
actionParameters.groups | security_result.detection_fields.value | Le parseur parcourt chaque groupe dans actionParameters.groups et le mappe à une entrée detection_fields distincte avec la clé service_account_group . |
actionParameters.input.patch.portalVisitHistory.dateTime | additional.fields.value.string_value | L'analyseur itère sur chaque élément de actionParameters.input.patch.portalVisitHistory et extrait le champ dateTime, en le mappant à une entrée additional.fields distincte avec la clé dateTime {index} . |
actionParameters.input.patch.portalVisitHistory.id | principal.resource.attribute.labels.value | Le parseur parcourt chaque élément de actionParameters.input.patch.portalVisitHistory et extrait le champ "id", en le mappant à une entrée principal.resource.attribute.labels distincte avec la clé id {index} . |
actionParameters.input.patch.portalVisitHistory.name | principal.resource.attribute.labels.value | L'analyseur itère sur chaque élément de actionParameters.input.patch.portalVisitHistory et extrait le champ "name", en le mappant à une entrée principal.resource.attribute.labels distincte avec la clé name {index} . |
actionParameters.input.patch.portalVisitHistory.resourceName | principal.resource.attribute.labels.value | Le parseur parcourt chaque élément de actionParameters.input.patch.portalVisitHistory et extrait le champ resourceName, en le mappant à une entrée principal.resource.attribute.labels distincte avec la clé resourceName {index} . |
actionParameters.input.patch.portalVisitHistory.resourceType | principal.resource.attribute.labels.value | Le parseur parcourt chaque élément de actionParameters.input.patch.portalVisitHistory et extrait le champ resourceType, en le mappant à une entrée principal.resource.attribute.labels distincte avec la clé resourceType {index} . |
actionParameters.input.patch.portalVisitHistory.ruleType | principal.resource.attribute.labels.value | Le parseur parcourt chaque élément de actionParameters.input.patch.portalVisitHistory et extrait le champ ruleType, en le mappant à une entrée principal.resource.attribute.labels distincte avec la clé ruleType {index} . |
actionParameters.input.patch.portalVisitHistory.type | additional.fields.value.string_value | L'analyseur itère sur chaque élément de actionParameters.input.patch.portalVisitHistory et extrait le champ "type", en le mappant à une entrée additional.fields distincte avec la clé type {index} . |
actionParameters.name | target.user.user_display_name | Mappage direct lorsque actionParameters.name n'est pas vide. |
actionParameters.products | security_result.detection_fields.value | Le parseur parcourt chaque produit dans actionParameters.products (à l'exception des chaînes vides et de * ) et le mappe à une entrée detection_fields distincte avec la clé service_account_product . |
actionParameters.role | target.user.attribute.roles.name | Mappage direct lorsque actionParameters.role n'est pas vide. |
actionParameters.scopes | security_result.detection_fields.value | Le parseur parcourt chaque portée dans actionParameters.scopes et la mappe à une entrée detection_fields distincte avec la clé service_account_scope . |
actionParameters.selection | additional.fields.value.list_value.values.string_value | L'analyseur itère sur chaque élément de actionParameters.selection.preferences et le mappe à une entrée string_value distincte dans additional.fields.value.list_value.values. |
actionParameters.userEmail | target.user.email_addresses | Extrait à l'aide d'un modèle Grok et mappé lorsqu'il n'est pas vide. |
actionParameters.userID | target.user.userid | Mappage direct lorsque actionParameters.userID n'est pas vide. |
actor.displayName | target.user.user_display_name | Mappage direct lorsque actor.displayName n'est pas vide et n'est pas unknown . |
actor.id | target.user.userid | Mappage direct lorsque actor.id n'est pas vide. |
authenticationContext.authenticationProvider | security_result.detection_fields.value | Mappé à une entrée detection_fields avec la clé authenticationProvider lorsqu'il n'est pas vide. |
authenticationContext.credentialProvider | security_result.detection_fields.value | Mappé à une entrée detection_fields avec la clé credentialProvider lorsqu'il n'est pas vide. |
authenticationContext.credentialType | extensions.auth.mechanism | Utilisé pour dériver la valeur de extensions.auth.mechanism en fonction de valeurs spécifiques. |
authenticationContext.externalSessionId | network.parent_session_id | Mappage direct lorsque la valeur n'est pas vide et n'est pas unknown . |
client.device | principal.asset.type | Utilisé pour dériver la valeur de principal.asset.type en fonction de valeurs spécifiques. |
client.geographicalContext.city | principal.location.city | Mappage direct lorsqu'il n'est pas vide. |
client.geographicalContext.country | principal.location.country_or_region | Mappage direct lorsqu'il n'est pas vide. |
client.geographicalContext.geolocation.lat | principal.location.region_latitude | Mappage direct lorsqu'il n'est pas vide. |
client.geographicalContext.geolocation.lon | principal.location.region_longitude | Mappage direct lorsqu'il n'est pas vide. |
client.geographicalContext.postalCode | additional.fields.value.string_value | Mappé à une entrée "additional.fields" avec la clé Postal code lorsqu'il n'est pas vide. |
client.geographicalContext.state | principal.location.state | Mappage direct lorsqu'il n'est pas vide. |
client.ipAddress | principal.asset.ip | Fusionné avec principal.ip et principal.asset.ip lorsqu'il n'est pas vide. |
client.ipAddress | principal.ip | Fusionné avec principal.ip et principal.asset.ip lorsqu'il n'est pas vide. |
client.userAgent.browser | target.resource.attribute.labels.value | Mappé à une entrée target.resource.attribute.labels avec la clé Browser lorsqu'il n'est pas vide. |
client.userAgent.os | principal.platform | Permet de dériver la valeur de principal.platform en fonction de valeurs spécifiques. |
client.userAgent.rawUserAgent | network.http.user_agent | Mappage direct lorsqu'il n'est pas vide. |
debugContext.debugData.behaviors | security_result.description | Mappage direct lorsqu'il n'est pas vide. |
debugContext.debugData.deviceFingerprint | target.asset.asset_id | Mappé à target.asset.asset_id avec le préfixe device_finger_print: lorsqu'il n'est pas vide. |
debugContext.debugData.dtHash | security_result.detection_fields.value | Mappé à une entrée detection_fields avec la clé dtHash lorsqu'il n'est pas vide. |
debugContext.debugData.factor | security_result.detection_fields.value | Mappé à une entrée detection_fields avec la clé factor lorsqu'il n'est pas vide. |
debugContext.debugData.promptingPolicyTypes | security_result.detection_fields.value | Mappé à une entrée detection_fields avec la clé promptingPolicyTypes lorsqu'il n'est pas vide. |
debugContext.debugData.requestUri | extensions.auth.auth_details | Mappage direct lorsqu'il n'est pas vide. |
eventType | metadata.event_type | Utilisé pour dériver la valeur de metadata.event_type en fonction de valeurs spécifiques. |
eventType | metadata.product_event_type | Mappage direct lorsqu'il n'est pas vide. |
outcome.reason | security_result.category_details | Mappage direct lorsqu'il n'est pas vide. |
outcome.result | security_result.action | Mappé sur security_result.action après normalisation basée sur des valeurs spécifiques. |
requestId | metadata.product_log_id | Mappage direct lorsqu'il n'est pas vide. |
serviceAccount.name | principal.application | Mappage direct lorsque l'action est Report et que serviceAccount.name n'est pas vide. |
sourceIP | principal.asset.ip | Extrait à l'aide d'un modèle Grok et fusionné avec principal.ip et principal.asset.ip lorsqu'il n'est pas vide et qu'il est valide. |
sourceIP | principal.ip | Extrait à l'aide d'un modèle Grok et fusionné avec principal.ip et principal.asset.ip lorsqu'il n'est pas vide et qu'il est valide. |
état | security_result.summary | Mappage direct lorsqu'il n'est pas vide. |
timestamp | metadata.event_timestamp | Converti au format d'horodatage et mappé lorsqu'il n'est pas vide. |
user.id | target.user.userid | Mappage direct lorsque actionParameters.userID est vide et que user.id ne l'est pas. |
nom.utilisateur | target.user.user_display_name | Mappage direct lorsque actionParameters.name est vide et que user.name ne l'est pas. |
userAgent | network.http.user_agent | Mappage direct lorsque client.userAgent.rawUserAgent est vide et que userAgent ne l'est pas. |
extensions.auth.type | Défini sur AUTHTYPE_UNSPECIFIED lorsque has_user est défini sur "true" et que l'action est Login . |
|
metadata.product_name | Variable définie sur WIZ_IO . |
|
metadata.vendor_name | Variable définie sur WIZ_IO . |
|
network.http.parsed_user_agent | Dérivé de user_agent_value en le convertissant en parseduseragent. | |
security_result.severity | Dérivé de la gravité en fonction de valeurs spécifiques, avec LOW comme valeur par défaut. |
Vous avez encore besoin d'aide ? Obtenez des réponses de membres de la communauté et de professionnels Google SecOps.