Collecter les journaux d'alertes Microsoft Defender pour le cloud

Compatible avec:

Présentation

Cet analyseur extrait les données des alertes de sécurité à partir des journaux au format JSON de Microsoft Defender pour le cloud. Il transforme et met en correspondance les champs de journal bruts dans l'UDM Google SecOps, en gérant divers types de données et structures imbriquées, tout en enrichissant les données avec du contexte et des libellés supplémentaires pour améliorer l'analyse.

Avant de commencer

  • Assurez-vous de disposer d'une instance Google SecOps.
  • Assurez-vous de disposer d'un accès privilégié à Microsoft Defender pour Cloud.

Configurer un flux dans Google SecOps pour ingérer les journaux d'alertes Microsoft Defender Cloud

  1. Accédez à Paramètres du SIEM > Flux.
  2. Cliquez sur Ajouter.
  3. Dans le champ Nom du flux, saisissez un nom pour le flux (par exemple, Journaux d'alerte Microsoft Defender pour le cloud).
  4. Sélectionnez Webhook comme type de source.
  5. Sélectionnez Microsoft Defender pour le cloud comme Type de journal.
  6. Cliquez sur Suivant.
  7. Facultatif: spécifiez des valeurs pour les paramètres d'entrée suivants :
    • Délimiteur de fractionnement: délimiteur utilisé pour séparer les lignes de journal, par exemple \n.
    • Espace de noms des éléments: espace de noms des éléments.
    • Libellés d'ingestion: libellé appliqué aux événements de ce flux.
  8. Cliquez sur Suivant.
  9. Vérifiez la configuration du flux dans l'écran Finaliser, puis cliquez sur Envoyer.
  10. Cliquez sur Générer une clé secrète pour générer une clé secrète permettant d'authentifier ce flux.
  11. Copiez et stockez la clé secrète. Vous ne pourrez plus afficher cette clé secrète. Si nécessaire, vous pouvez générer une nouvelle clé secrète, mais cette action rend l'ancienne clé secrète obsolète.
  12. Dans l'onglet Détails, copiez l'URL du point de terminaison du flux dans le champ Informations sur le point de terminaison. Vous devez spécifier cette URL de point de terminaison dans votre application cliente.
  13. Cliquez sur OK.

Créer une clé API pour le flux webhook

  1. Accédez à la console Google Cloud > Identifiants.

    Accéder à "Identifiants"

  2. Cliquez sur Créer des identifiants, puis sélectionnez Clé API.

  3. Limitez l'accès de la clé API à l'API Google Security Operations.

Spécifier l'URL du point de terminaison

  1. Dans votre application cliente, spécifiez l'URL du point de terminaison HTTPS fournie dans le flux de webhook.
  2. Activez l'authentification en spécifiant la clé API et la clé secrète dans l'en-tête personnalisé au format suivant:

    X-goog-api-key = API_KEY
    X-Webhook-Access-Key = SECRET
    

    Recommandation: Spécifiez la clé API en tant qu'en-tête plutôt que dans l'URL. Si votre client webhook n'est pas compatible avec les en-têtes personnalisés, vous pouvez spécifier la clé API et la clé secrète à l'aide de paramètres de requête au format suivant:

    ENDPOINT_URL?key=API_KEY&secret=SECRET
    

Remplacez les éléments suivants :

  • ENDPOINT_URL: URL du point de terminaison du flux.
  • API_KEY: clé API permettant de s'authentifier auprès de Google Security Operations.
  • SECRET: clé secrète que vous avez générée pour authentifier le flux.

Créer une application logique Azure

  1. Connectez-vous au portail Azure (https://portal.azure.com).
  2. Cliquez sur Créer une ressource, puis recherchez Logic App.
  3. Cliquez sur Créer pour lancer le processus de déploiement.
  4. Configurez l'application logique :
    • Nom: indiquez un nom descriptif pour l'application logique (par exemple, GoogleSecOpsWebhook).
    • Abonnement: sélectionnez l'abonnement approprié.
    • Groupe de ressources: choisissez un groupe de ressources existant ou créez-en un.
    • Emplacement: choisissez l'emplacement le plus proche de votre environnement.
    • Log Analytics: activez cette option si vous souhaitez consigner des données de diagnostic pour l'application logique.
  5. Cliquez sur Examiner + Créer pour créer l'application logique.
  6. Cliquez sur Créer pour déployer l'application logique.

Configurer la connexion du webhook Azure Logic App

  1. Accédez à l'application logique créée à l'étape précédente.
  2. Cliquez sur Outils de développement > Concepteur d'application logique.
  3. Cliquez sur Ajouter un déclencheur.
  4. Recherchez Microsoft Defender pour le cloud > Lorsque qu'une alerte Microsoft Defender pour le cloud est créée ou déclenchée comme déclencheur.

  5. Cliquez sur Créer, puis suivez les instructions pour vous authentifier.

  6. Cliquez sur Insérer une étape pour ajouter une étape au workflow.

  7. Cliquez sur Ajouter une action.

  8. Recherchez HTT.

  9. Sélectionnez HTTP comme action.

  10. Configurez l'action HTTP:

    • URI: vous y saisissez l'URL du point de terminaison de l'API Google SecOps.
    • Méthode: POST
    • Ajouter un en-tête Content-Type: définissez Content-Type comme clé d'en-tête et application/json comme valeur d'en-tête. Cela indique à Google SecOps le format des données envoyées.
    • Ajouter une clé API aux requêtes: définissez key comme première clé de requête et <API_KEY> comme valeur de la requête. API_KEY correspond à la valeur de la clé API générée lors de la configuration du flux Google SecOps.
    • Ajouter une clé secrète aux requêtes: définissez secret comme deuxième clé de requête et <SECRET_KEY> comme valeur de requête. SECRET_KEY correspond à la clé secrète générée lors de la configuration du flux Google SecOps.
    • Définir le corps à partir de l'étape précédente: cliquez sur Saisissez le contenu de la requête > cliquez sur Saisissez les données des étapes précédentes (bouton avec l'icône en forme d'éclair à gauche du champ de saisie).
  11. Cliquez sur Enregistrer.

Configurer le webhook d'alertes Microsoft Defender pour le cloud

  1. Accédez à Microsoft Defender pour le cloud.
  2. Cliquez sur Gestion > Automatisation des workflows.
  3. Cliquez sur Ajouter une automatisation de workflow.
    • Nom: attribuez un nom descriptif à la règle d'automatisation (par exemple, ForwardAlertsToGoogleSecOps).
    • Groupe de ressources: sélectionnez un groupe de ressources existant.
    • Type de données Defender pour le cloud: sélectionnez Alerte de sécurité.
    • Gravité de l'alerte: sélectionnez Tout sélectionner.
    • Afficher les instances d'application logique à partir des abonnements suivants: sélectionnez l'abonnement dans lequel l'application logique a été créée.
    • Sélectionner une application logique: choisissez l'application logique créée aux étapes précédentes.
  4. Cliquez sur Créer pour enregistrer l'automatisation du workflow.

Tableau de mappage UDM

Champ de journal Mappage UDM Logique
AlertLink principal.resource.attribute.labels.AlertLink.value Mappage direct.
AlertName security_result.rule_name Mappage direct.
AlertSeverity security_result.severity Mappage direct si la valeur est "HIGH", "MEDIUM", "LOW", "CRITICAL" ou "UNKNOWN_SEVERITY". Sinon, mappé sur security_result.severity_details. La valeur est convertie en majuscules avant la comparaison.
AlertType security_result.threat_name Mappage direct.
CompromisedEntity principal.resource.attribute.labels.CompromisedEntity.value Mappage direct.
Description security_result.description Mappage direct.
DisplayName security_result.summary Mappage direct.
EndTime about.resource.attribute.labels.EndTime.value Mappage direct.
Entities[].Location.City principal.location.city Mappage direct.
Entities[].Location.CountryName principal.location.country_or_region Mappage direct.
ExtendedLinks[].Category about.resource.attribute.labels.extendedLink_Category.value Mappage direct.
ExtendedLinks[].Href about.resource.attribute.labels.extendedLink_Href.value Mappage direct.
ExtendedLinks[].Label about.resource.attribute.labels.extendedLink_Label.value Mappage direct.
ExtendedLinks[].Type about.resource.attribute.labels.extendedLink_Type.value Mappage direct.
ExtendedProperties.Account Session Id network.session_id Mappé directement après avoir été renommé en accountSessionId.
ExtendedProperties.Alert Id metadata.product_log_id Mappé directement après avoir été renommé en alertId.
ExtendedProperties.Authentication type extensions.auth.auth_details Mappé directement après avoir été renommé en authenticationType.
ExtendedProperties.Client Application principal.application Mappé directement après avoir été renommé en clientApplication.
ExtendedProperties.Client Hostname principal.asset.hostname, principal.hostname Mappé directement après avoir été renommé en clientHostName.
ExtendedProperties.Client IP address principal.asset.ip, principal.ip Mappé directement après avoir été renommé en clientIpAddress.
ExtendedProperties.Client IP location principal.location.country_or_region Mappé directement après avoir été renommé en clientIpLocation.
ExtendedProperties.Client Location principal.location.country_or_region Mappé directement après avoir été renommé en clientLocation.
ExtendedProperties.Client Principal Name principal.user.userid Mappé directement après avoir été renommé en clientPrincipalName.
ExtendedProperties.Compromised Host principal.asset.hostname, principal.hostname Mappé directement après avoir été renommé en compromisedHost.
ExtendedProperties.Suspicious Command Line target.process.command_line Mappé directement après avoir été renommé en suspiciousCommandLine.
ExtendedProperties.Suspicious Process target.process.file.full_path Mappé directement après avoir été renommé en suspiciousProcess.
ExtendedProperties.Suspicious Process Id target.process.pid Mappé directement après avoir été renommé en suspiciousProcessId.
ExtendedProperties.User agent network.http.user_agent Mappé directement après avoir été renommé en userAgent.
ExtendedProperties.User Name principal.user.user_display_name Mappé directement après avoir été renommé en userName.
ExtendedProperties.resourceType principal.resource.name Mappage direct.
IsIncident security_result.detection_fields.IsIncident.value Mappage direct. Converti en chaîne.
ProcessingEndTime about.resource.attribute.labels.ProcessingEndTime.value Mappage direct.
ProductName metadata.product_name Mappage direct.
ResourceId principal.resource.product_object_id Mappage direct.
SourceSystem security_result.detection_fields.SourceSystem.value Mappage direct.
StartTime about.resource.attribute.labels.StartTime.value Mappage direct.
Status security_result.detection_fields.Status.value Mappage direct.
SystemAlertId metadata.product_log_id Mappage direct.
Tactics security_result.attack_details.tactics.name Mappage direct.
TenantId additional.fields.TenantId.string_value Mappage direct.
TimeGenerated about.resource.attribute.labels.TimeGenerated.value Mappage direct.
VendorName metadata.vendor_name Mappage direct.
WorkspaceResourceGroup target.resource.attribute.labels.WorkspaceResourceGroup.value Mappage direct.
WorkspaceSubscriptionId target.resource.attribute.labels.WorkspaceSubscriptionId.value Mappage direct.
_Internal_WorkspaceResourceId target.resource.product_object_id Mappage direct.
properties.alertDisplayName security_result.rule_name Mappage direct.
properties.alertType security_result.threat_name Mappage direct.
properties.alertUri principal.resource.attribute.labels.AlertUri.value Mappage direct.
properties.correlationKey principal.resource.attribute.labels.correlationKey.value Mappage direct.
properties.description security_result.description Mappage direct.
properties.endTimeUtc additional.fields.EndTime.string_value Mappage direct.
properties.entities[].location.city principal.location.city Mappage direct.
properties.entities[].location.countryName principal.location.country_or_region Mappage direct.
properties.entities[].location.latitude principal.location.region_coordinates.latitude Mappage direct. Converti en float.
properties.entities[].location.longitude principal.location.region_coordinates.longitude Mappage direct. Converti en float.
properties.extendedProperties.alert_Id metadata.product_log_id Mappage direct.
properties.extendedProperties.clientApplication principal.application Mappage direct.
properties.extendedProperties.clientIpAddress principal.asset.ip, principal.ip Mappage direct. Analyse en tant qu'adresse IP.
properties.extendedProperties.clientLocation principal.location.country_or_region Mappage direct.
properties.extendedProperties.clientPrincipalName principal.user.userid Mappage direct.
properties.extendedProperties.compromisedEntity principal.resource.attribute.labels.CompromisedEntity.value Mappage direct.
properties.extendedProperties.resourceType principal.resource.name Mappage direct.
properties.IsIncident security_result.detection_fields.isIncident.value Mappage direct. Converti en chaîne.
properties.productName metadata.product_name Mappage direct.
properties.resourceIdentifiers[].<key> additional.fields.<key>_<index>.string_value Mappage direct. Les clés $id et type sont ajoutées avec l'indice de l'élément dans le tableau.
properties.severity security_result.severity Mappage direct si la valeur est "HIGH", "MEDIUM", "LOW", "CRITICAL" ou "UNKNOWN_SEVERITY". Sinon, mappé sur security_result.severity_details. La valeur est convertie en majuscules avant la comparaison.
properties.startTimeUtc additional.fields.StartTime.string_value Mappage direct.
properties.status security_result.detection_fields.Status.value Mappage direct.
properties.timeGeneratedUtc additional.fields.TimeGenerated.string_value Mappage direct. Défini sur "MICROSOFT_DEFENDER_CLOUD_ALERTS" si aucune valeur n'est fournie dans le journal. Définissez-le sur "MICROSOFT_DEFENDER_CLOUD_ALERTS". Définissez-le sur "USER_RESOURCE_ACCESS" si le principal ou la cible sont présents, sinon sur "GENERIC_EVENT".

Modifications

2024-07-05

  • Mappage de "isInteractive" sur "security_result.detection_fields".

2024-04-02

  • "properties.createdDateTime" a été mappé sur "metadata.event_timestamp".
  • "properties.resourceServicePrincipalId" et "resourceServicePrincipalId" ont été mappés sur "target.resource.attribute.labels".
  • Mappage de "properties.authenticationProcessingDetails", "authenticationProcessingDetails" et "properties.networkLocationDetails" sur "additional.fields".
  • "properties.userAgent" a été mappé sur "network.http.user_agent" et "network.http.parsed_user_agent".
  • Mappage de "properties.authenticationRequirement" sur "additional.fields".