Collecter les journaux Microsoft Defender for Identity
Ce document explique comment ingérer les journaux Microsoft Defender for Identity dans Google Security Operations à l'aide d'Azure Storage. L'analyseur traite les journaux JSON ou les journaux au format CEF si l'analyse JSON échoue. Il extrait les champs, effectue des transformations de données telles que des conversions, des renommages et des fusions de chaînes, et les mappe au modèle de données unifié (UDM). Il gère différents formats de journaux et enrichit les données avec un contexte supplémentaire, comme des libellés et des informations d'authentification.
Avant de commencer
Assurez-vous de remplir les conditions suivantes :
- Instance Google SecOps
- un locataire Azure actif ;
- Accès privilégié à Azure et rôle d'administrateur de la sécurité
Configurer un compte de stockage Azure
- Dans la console Azure, recherchez Comptes de stockage.
- Cliquez sur Créer.
- Spécifiez les valeurs des paramètres d'entrée suivants :
- Abonnement : sélectionnez l'abonnement.
- Groupe de ressources : sélectionnez le groupe de ressources.
- Région : sélectionnez la région.
- Performances : sélectionnez le type de performances (Standard recommandé).
- Redondance : sélectionnez le type de redondance (GRS ou LRS recommandé).
- Nom du compte de stockage : saisissez un nom pour le nouveau compte de stockage.
- Cliquez sur Examiner et créer.
- Examinez l'aperçu du compte, puis cliquez sur Créer.
- Sur la page Vue d'ensemble du compte de stockage, sélectionnez le sous-menu Clés d'accès dans Sécurité et mise en réseau.
- Cliquez sur Afficher à côté de key1 ou key2.
- Cliquez sur Copier dans le presse-papiers pour copier la clé.
- Enregistrez la clé dans un endroit sûr pour pouvoir la retrouver facilement.
- Sur la page Vue d'ensemble du compte de stockage, sélectionnez le sous-menu Points de terminaison dans Paramètres.
- Cliquez sur Copier dans le presse-papiers pour copier l'URL du point de terminaison du service Blob. (par exemple,
https://<storageaccountname>.blob.core.windows.net
). - Enregistrez l'URL du point de terminaison dans un emplacement sécurisé pour pouvoir vous y référer ultérieurement.
- Accédez à Aperçu > Vue JSON.
- Copiez et enregistrez l'ID de ressource Storage.
Configurer l'exportation des journaux pour Microsoft Defender for Identity
- Connectez-vous au portail Defender à l'aide d'un compte privilégié.
- Accédez à Paramètres.
- Sélectionnez l'onglet Microsoft Defender XDR.
- Sélectionnez Streaming API dans la section "Général", puis cliquez sur Ajouter.
- Sélectionnez Transférer les événements vers Azure Storage.
- Fournissez les informations de configuration suivantes :
- Nom : saisissez un nom unique et explicite.
- Sélectionnez Transférer les événements vers Azure Storage.
- ID de ressource du compte de stockage : saisissez l'ID de ressource Azure Storage que vous avez copié précédemment.
- Types d'événements : sélectionnez Alertes et comportements et Appareils.
- Cliquez sur Envoyer.
Configurer des flux
Il existe deux points d'entrée différents pour configurer les flux dans la plate-forme Google SecOps :
- Paramètres SIEM> Flux
- Plate-forme de contenu > Packs de contenu
Configurer des flux à partir de Paramètres SIEM > Flux
Pour configurer un flux, procédez comme suit :
- Accédez à Paramètres SIEM> Flux.
- Cliquez sur Add New Feed (Ajouter un flux).
- Sur la page suivante, cliquez sur Configurer un seul flux.
- Dans le champ Nom du flux, saisissez un nom pour le flux (par exemple, Journaux Defender Identity).
- Sélectionnez Microsoft Azure Blob Storage comme Type de source.
- Sélectionnez Microsoft Defender pour Identity comme Type de journal.
- Cliquez sur Suivant.
Spécifiez les valeurs des paramètres d'entrée suivants :
URI Azure : URL du point de terminaison du blob.
ENDPOINT_URL/BLOB_NAME
Remplacez les éléments suivants :
ENDPOINT_URL
: URL du point de terminaison du blob. (https://<storageaccountname>.blob.core.windows.net
)BLOB_NAME
: nom du blob. (par exemple,insights-logs-<logname>
)
L'URI est : sélectionnez en fonction de la configuration du flux de journaux (Fichier unique | Répertoire | Répertoire incluant des sous-répertoires).
Options de suppression de la source : sélectionnez l'option de suppression de votre choix.
- Clé partagée : clé d'accès à Azure Blob Storage.
Cliquez sur Suivant.
Vérifiez la configuration de votre nouveau flux sur l'écran Finaliser, puis cliquez sur Envoyer.
Configurer des flux depuis le Hub de contenu
Indiquez les valeurs des champs suivants :
URI Azure : URL du point de terminaison du blob.
ENDPOINT_URL/BLOB_NAME
Remplacez les éléments suivants :
ENDPOINT_URL
: URL du point de terminaison du blob. (https://<storageaccountname>.blob.core.windows.net
)BLOB_NAME
: nom du blob. (par exemple,insights-logs-<logname>
)- L'URI est : sélectionnez en fonction de la configuration du flux de journaux (Fichier unique | Répertoire | Répertoire incluant des sous-répertoires).
- Options de suppression de la source : sélectionnez l'option de suppression de votre choix.
Clé partagée : clé d'accès à Azure Blob Storage.
Options avancées
- Nom du flux : valeur préremplie qui identifie le flux.
- Type de source : méthode utilisée pour collecter les journaux dans Google SecOps.
- Espace de noms de l'élément : espace de noms associé au flux.
- Libellés d'ingestion : libellés appliqués à tous les événements de ce flux.
Table de mappage UDM
Champ de journal | Mappage UDM | Logique |
---|---|---|
category |
metadata.log_type |
Le champ category du journal brut est mappé sur metadata.log_type . |
properties.AccountDisplayName |
Non mappé | Ce champ n'est pas mappé à l'objet IDM dans l'UDM. |
properties.AccountName |
Non mappé | Ce champ n'est pas mappé à l'objet IDM dans l'UDM. |
properties.AccountUpn |
Non mappé | Ce champ n'est pas mappé à l'objet IDM dans l'UDM. |
properties.ActionType |
metadata.product_event_type |
Le champ properties.ActionType du journal brut est mappé sur metadata.product_event_type . |
properties.AdditionalFields.ACTOR.ACCOUNT |
Non mappé | Ce champ n'est pas mappé à l'objet IDM dans l'UDM. |
properties.AdditionalFields.ACTOR.DEVICE |
principal.asset.asset_id |
L'analyseur extrait la valeur de properties.AdditionalFields.ACTOR.DEVICE et ajoute ASSET ID: . |
properties.AdditionalFields.ACTOR.ENTITY_USER |
Non mappé | Ce champ n'est pas mappé à l'objet IDM dans l'UDM. |
properties.AdditionalFields.Count |
Non mappé | Ce champ n'est pas mappé à l'objet IDM dans l'UDM. |
properties.AdditionalFields.DestinationComputerDnsName |
Non mappé | Ce champ n'est pas mappé à l'objet IDM dans l'UDM. |
properties.AdditionalFields.DestinationComputerObjectGuid |
target.asset.product_object_id |
Le premier élément du tableau properties.AdditionalFields.DestinationComputerObjectGuid est mappé sur target.asset.product_object_id . Les éléments suivants sont mappés sur additional.fields avec des clés telles que DestinationComputerObjectGuid_1 , DestinationComputerObjectGuid_2 , etc. |
properties.AdditionalFields.DestinationComputerOperatingSystem |
target.asset.platform_software.platform_version |
Le premier élément du tableau properties.AdditionalFields.DestinationComputerOperatingSystem est mappé sur target.asset.platform_software.platform_version . Les éléments suivants sont mappés sur additional.fields avec des clés telles que DestinationComputerOperatingSystem_1 , DestinationComputerOperatingSystem_2 , etc. |
properties.AdditionalFields.DestinationComputerOperatingSystemType |
target.asset.platform_software.platform |
Si la valeur est windows , le champ UDM est défini sur WINDOWS . |
properties.AdditionalFields.DestinationComputerOperatingSystemVersion |
target.platform_version |
Le premier élément du tableau properties.AdditionalFields.DestinationComputerOperatingSystemVersion est mappé sur target.platform_version . Les éléments suivants sont mappés sur additional.fields avec des clés telles que DestinationComputerOperatingSystemVersion1 , DestinationComputerOperatingSystemVersion2 , etc. |
properties.AdditionalFields.FROM.DEVICE |
principal.asset.asset_id |
L'analyseur extrait la valeur de properties.AdditionalFields.FROM.DEVICE et ajoute ASSET ID: . |
properties.AdditionalFields.KerberosDelegationType |
Non mappé | Ce champ n'est pas mappé à l'objet IDM dans l'UDM. |
properties.AdditionalFields.SourceAccountId |
Non mappé | Ce champ n'est pas mappé à l'objet IDM dans l'UDM. |
properties.AdditionalFields.SourceAccountSid |
Non mappé | Ce champ n'est pas mappé à l'objet IDM dans l'UDM. |
properties.AdditionalFields.SourceComputerObjectGuid |
principal.asset.product_object_id |
Le champ properties.AdditionalFields.SourceComputerObjectGuid du journal brut est mappé sur principal.asset.product_object_id . |
properties.AdditionalFields.SourceComputerOperatingSystem |
principal.asset.platform_software.platform_version |
Le champ properties.AdditionalFields.SourceComputerOperatingSystem du journal brut est mappé sur principal.asset.platform_software.platform_version . |
properties.AdditionalFields.SourceComputerOperatingSystemType |
principal.asset.platform_software.platform_version |
Si la valeur est windows , le champ UDM est défini sur WINDOWS . |
properties.AdditionalFields.SourceComputerOperatingSystemVersion |
Non mappé | Ce champ n'est pas mappé à l'objet IDM dans l'UDM. |
properties.AdditionalFields.Spns |
Non mappé | Ce champ n'est pas mappé à l'objet IDM dans l'UDM. |
properties.AdditionalFields.TARGET_OBJECT.ENTITY_USER |
Non mappé | Ce champ n'est pas mappé à l'objet IDM dans l'UDM. |
properties.AdditionalFields.TARGET_OBJECT.USER |
target.user.userid |
Le premier élément du tableau properties.AdditionalFields.TARGET_OBJECT.USER est mappé sur target.user.userid . Les éléments suivants sont mappés sur additional.fields avec des clés telles que TARGET_OBJECT.USER_1 , TARGET_OBJECT.USER_2 , etc. |
properties.AdditionalFields.TO.DEVICE |
target.asset.asset_id |
Le premier élément du tableau properties.AdditionalFields.TO.DEVICE est mappé à target.asset.asset_id avec ASSET ID: ajouté au début. Les éléments suivants sont mappés sur additional.fields avec des clés telles que TODEVICE1 , TODEVICE2 , etc. |
properties.AuthenticationDetails |
extensions.auth.auth_details |
Le parseur supprime les accolades, les crochets et les guillemets doubles de la valeur, et ajoute AuthenticationDetails: au début. |
properties.DeliveryAction |
additional.fields |
Mappé avec la clé DeliveryAction . |
properties.DeliveryLocation |
additional.fields |
Mappé avec la clé DeliveryLocation . |
properties.DestinationDeviceName |
target.hostname , target.asset.hostname |
Le champ properties.DestinationDeviceName du journal brut est mappé à target.hostname et target.asset.hostname . |
properties.DestinationIPAddress |
target.ip , target.asset.ip |
Le champ properties.DestinationIPAddress du journal brut est mappé à target.ip et target.asset.ip . |
properties.DestinationPort |
target.port |
Le champ properties.DestinationPort du journal brut est mappé sur target.port . |
properties.DeviceName |
principal.hostname , principal.asset.hostname |
Le champ properties.DeviceName du journal brut est mappé à principal.hostname et principal.asset.hostname . |
properties.EmailClusterId |
additional.fields |
Mappé avec la clé EmailClusterId . |
properties.EmailDirection |
network.direction |
Si la valeur est Inbound , le champ UDM est défini sur INBOUND . Si la valeur est Outbound , le champ UDM est défini sur OUTBOUND . Sinon, la valeur est définie sur UNKNOWN_DIRECTION . |
properties.EmailLanguage |
additional.fields |
Mappé avec la clé EmailLanguage . |
properties.InitiatingProcessAccountDomain |
principal.administrative_domain |
Le champ properties.InitiatingProcessAccountDomain du journal brut est mappé sur principal.administrative_domain . |
properties.InitiatingProcessAccountSid |
principal.user.windows_sid |
Le champ properties.InitiatingProcessAccountSid du journal brut est mappé sur principal.user.windows_sid . |
properties.InitiatingProcessCommandLine |
principal.process.command_line |
Le champ properties.InitiatingProcessCommandLine du journal brut est mappé sur principal.process.command_line . |
properties.InitiatingProcessFileName |
principal.process.file.full_path |
Utilisé en combinaison avec properties.InitiatingProcessFolderPath pour construire le chemin d'accès complet. Si properties.InitiatingProcessFolderPath contient déjà le nom de fichier, il est utilisé directement. |
properties.InitiatingProcessFolderPath |
principal.process.file.full_path |
Utilisé en combinaison avec properties.InitiatingProcessFileName pour construire le chemin d'accès complet. |
properties.InitiatingProcessId |
principal.process.pid |
Le champ properties.InitiatingProcessId du journal brut est mappé sur principal.process.pid . |
properties.InitiatingProcessIntegrityLevel |
about.labels |
Mappé avec la clé InitiatingProcessIntegrityLevel . |
properties.InitiatingProcessMD5 |
principal.process.file.md5 |
Le champ properties.InitiatingProcessMD5 du journal brut est mappé sur principal.process.file.md5 . |
properties.InitiatingProcessParentId |
principal.process.parent_process.pid |
Le champ properties.InitiatingProcessParentId du journal brut est mappé sur principal.process.parent_process.pid . |
properties.InitiatingProcessParentFileName |
principal.process.parent_process.file.full_path |
Le champ properties.InitiatingProcessParentFileName du journal brut est mappé sur principal.process.parent_process.file.full_path . |
properties.InitiatingProcessSHA1 |
principal.process.file.sha1 |
Le champ properties.InitiatingProcessSHA1 du journal brut est mappé sur principal.process.file.sha1 . |
properties.InitiatingProcessSHA256 |
principal.process.file.sha256 |
Le champ properties.InitiatingProcessSHA256 du journal brut est mappé sur principal.process.file.sha256 . |
properties.InitiatingProcessTokenElevation |
about.labels |
Mappé avec la clé InitiatingProcessTokenElevation . |
properties.InternetMessageId |
additional.fields |
L'analyseur supprime les chevrons et mappe la valeur avec la clé InternetMessageId . |
properties.IPAddress |
principal.ip , principal.asset.ip |
Le champ properties.IPAddress du journal brut est mappé à principal.ip et principal.asset.ip . |
properties.LogonType |
extensions.auth.mechanism |
Utilisé pour dériver la valeur de extensions.auth.mechanism . |
properties.Port |
principal.port |
Le champ properties.Port du journal brut est mappé sur principal.port . |
properties.PreviousRegistryKey |
src.registry.registry_key |
Le champ properties.PreviousRegistryKey du journal brut est mappé sur src.registry.registry_key . |
properties.PreviousRegistryValueData |
src.registry.registry_value_data |
Le champ properties.PreviousRegistryValueData du journal brut est mappé sur src.registry.registry_value_data . |
properties.PreviousRegistryValueName |
src.registry.registry_value_name |
Le champ properties.PreviousRegistryValueName du journal brut est mappé sur src.registry.registry_value_name . |
properties.Query |
principal.user.attribute.labels |
Mappé avec la clé LDAP Search Scope . |
properties.RecipientEmailAddress |
Non mappé | Ce champ n'est pas mappé à l'objet IDM dans l'UDM. |
properties.RegistryKey |
target.registry.registry_key |
Le champ properties.RegistryKey du journal brut est mappé sur target.registry.registry_key . |
properties.RegistryValueData |
target.registry.registry_value_data |
Le champ properties.RegistryValueData du journal brut est mappé sur target.registry.registry_value_data . |
properties.RegistryValueName |
target.registry.registry_value_name |
Le champ properties.RegistryValueName du journal brut est mappé sur target.registry.registry_value_name . |
properties.ReportId |
about.labels |
Mappé avec la clé ReportId . |
properties.SenderIPv4 |
principal.ip , principal.asset.ip |
Le champ properties.SenderIPv4 du journal brut est mappé à principal.ip et principal.asset.ip . |
properties.SenderMailFromAddress |
principal.user.attribute.labels |
Mappé avec la clé SenderMailFromAddress . |
properties.SenderMailFromDomain |
principal.user.attribute.labels |
Mappé avec la clé SenderMailFromDomain . |
properties.SenderObjectId |
principal.user.product_object_id |
Le champ properties.SenderObjectId du journal brut est mappé sur principal.user.product_object_id . |
properties.Timestamp |
metadata.event_timestamp |
Le champ properties.Timestamp du journal brut est mappé sur metadata.event_timestamp . |
tenantId |
observer.cloud.project.id |
Le champ tenantId du journal brut est mappé sur observer.cloud.project.id . |
N/A | extensions.auth.type |
La valeur MACHINE est attribuée par l'analyseur. |
N/A | metadata.event_type |
Dérivé des champs category et properties.ActionType . Il peut s'agir de USER_LOGIN , USER_RESOURCE_ACCESS , USER_CHANGE_PASSWORD , REGISTRY_MODIFICATION , REGISTRY_DELETION , REGISTRY_CREATION , GENERIC_EVENT ou STATUS_UPDATE . |
N/A | metadata.vendor_name |
La valeur Microsoft est attribuée par l'analyseur. |
N/A | metadata.product_name |
La valeur Microsoft Defender Identity est attribuée par l'analyseur. |
cs1 |
metadata.url_back_to_product |
Le champ cs1 du journal brut est mappé sur metadata.url_back_to_product . |
externalId |
metadata.product_log_id |
Le champ externalId du journal brut est mappé sur metadata.product_log_id . |
msg |
metadata.description |
Le champ msg du journal brut est mappé sur metadata.description . |
rule_name |
security_result.rule_name |
Le champ rule_name du journal brut est mappé sur security_result.rule_name . |
severity |
security_result.severity |
Le champ severity du journal brut est mappé sur security_result.severity . |
shost |
principal.hostname , principal.asset.hostname |
Le champ shost du journal brut est mappé à principal.hostname et principal.asset.hostname . |
src |
principal.ip |
Le champ src du journal brut est mappé sur principal.ip . |
suser |
principal.user.user_display_name |
Le champ suser du journal brut est mappé sur principal.user.user_display_name . |
time |
metadata.event_timestamp |
Le champ time du journal brut est mappé sur metadata.event_timestamp . |
userid |
principal.user.userid |
Le champ userid du journal brut est mappé sur principal.user.userid . |
N/A | security_result.action |
Dérivé du champ properties.ActionType . Il peut s'agir de ALLOW ou BLOCK . |
N/A | security_result.summary |
Dérivé du champ category ou du champ properties.ActionType . |
Vous avez encore besoin d'aide ? Obtenez des réponses de membres de la communauté et de professionnels Google SecOps.