Collecter les journaux Microsoft Sentinel
Présentation
Ce parseur extrait les champs des journaux JSON Microsoft Sentinel, effectue des transformations telles que l'extraction d'adresses IP et la manipulation de chaînes, et mappe les données extraites à l'UDM, y compris les champs "principal", "target", "security_result" et "metadata". Il gère également différents types de données et fusionne les entités extraites dans la structure UDM.
Avant de commencer
Assurez-vous de remplir les conditions préalables suivantes :
- Instance Google SecOps.
- Accès à Microsoft Sentinel.
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 Microsoft Sentinel).
- Sélectionnez Webhook comme type de source.
- Sélectionnez Microsoft Sentinel comme type de journal.
- Cliquez sur Suivant.
- Facultatif : Spécifiez les valeurs des paramètres d'entrée suivants :
- Délimiteur de fractionnement : délimiteur utilisé pour séparer les lignes de journaux, tel que
\n
.
- Délimiteur de fractionnement : délimiteur utilisé pour séparer les lignes de journaux, tel que
- Cliquez sur Suivant.
- Vérifiez la configuration de votre nouveau flux sur l'écran Finaliser, puis cliquez sur Envoyer.
- Cliquez sur Générer une clé secrète pour générer une clé secrète permettant d'authentifier ce flux.
- Copiez et stockez la clé secrète, car vous ne pourrez plus l'afficher. Vous pouvez générer à nouveau une clé secrète, mais cela rendra l'ancienne clé secrète obsolète.
- Dans l'onglet Détails, copiez l'URL du point de terminaison du flux à partir du champ Informations sur le point de terminaison. Vous devez spécifier cette URL de point de terminaison dans votre application cliente.
- Cliquez sur OK.
Configurer des flux depuis le Hub de contenu
Indiquez les valeurs des champs suivants :
- Délimiteur de fractionnement : délimiteur utilisé pour séparer les lignes de journaux, tel que
\n
.
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.
Cliquez sur Générer une clé secrète pour générer une clé secrète permettant d'authentifier ce flux.
Copiez et stockez la clé secrète, car vous ne pourrez plus l'afficher. Vous pouvez générer à nouveau une clé secrète, mais cela rendra l'ancienne clé secrète obsolète.
Dans l'onglet Détails, copiez l'URL du point de terminaison du flux à partir du champ Informations sur le point de terminaison. Vous devez spécifier cette URL de point de terminaison dans votre application cliente.
Créer une clé API pour le flux de webhook
Accédez à la consoleGoogle Cloud > Identifiants.
Cliquez sur Créer des identifiants, puis sélectionnez Clé API.
Limitez l'accès de la clé API à l'API Google Security Operations.
Spécifier l'URL du point de terminaison
- Dans votre application cliente, spécifiez l'URL du point de terminaison HTTPS fournie dans le flux de webhook.
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 au lieu de la spécifier dans l'URL. Si votre client de webhook n'accepte pas 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 pour s'authentifier auprès de Google Security Operations.SECRET
: clé secrète que vous avez générée pour authentifier le flux.
Configurer une application logique pour les incidents Microsoft Sentinel
Pour configurer Logic App pour les incidents Microsoft Sentinel, procédez comme suit :
- Connectez-vous au portail Azure.
- Cliquez sur Créer une ressource.
- Recherchez "Logic App".
- Cliquez sur Créer pour lancer le processus de création.
- 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.
- Nom : saisissez un nom pour l'application logique.
- Région : sélectionnez la région.
- Espace de travail Log Analytics : sélectionnez l'espace de travail Log Analytics.
- Cliquez sur Examiner et créer.
- Cliquez sur Créer.
- Une fois l'application logique créée, cliquez sur Accéder à la ressource.
- Cliquez sur Outils de développement > Concepteur d'applications logiques.
- Cliquez sur Ajouter un déclencheur.
- Recherchez Microsoft Sentinel.
- Sélectionnez Incident Microsoft Sentinel comme déclencheur.
- Si vous n'avez pas encore créé de connexion à Microsoft Sentinel, vous devez le faire maintenant. Cliquez sur Créer, puis suivez les instructions pour vous authentifier.
- Cliquez sur Insérer une nouvelle étape.
- Cliquez sur Ajouter une action.
- Recherchez et sélectionnez HTTP comme action.
- Spécifiez les valeurs des paramètres d'entrée suivants :
- URI : URL du point de terminaison du flux.
- Méthode : POST
- En-têtes : ajoutez les en-têtes suivants :
- Content-Type: application/json
- X-goog-api-key : clé API permettant de s'authentifier auprès de Google Security Operations.
- X-Webhook-Access-Key : clé secrète que vous avez générée pour authentifier le flux.
Configurer une application logique pour les alertes Microsoft Sentinel
Pour configurer Logic App pour les alertes Microsoft Sentinel, procédez comme suit :
- Accédez à la page d'accueil du portail Azure.
- Cliquez sur Créer une ressource.
- Recherchez "Logic App".
- Cliquez sur Créer pour lancer le processus de création.
- 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.
- Nom : saisissez un nom pour l'application logique.
- Région : sélectionnez la région.
- Espace de travail Log Analytics : sélectionnez l'espace de travail Log Analytics.
- Cliquez sur Examiner et créer.
- Cliquez sur Créer.
- Une fois l'application logique créée, cliquez sur Accéder à la ressource.
- Cliquez sur Outils de développement > Concepteur d'applications logiques.
- Cliquez sur Ajouter un déclencheur.
- Recherchez Microsoft Sentinel.
- Sélectionnez Alerte Microsoft Sentinel comme déclencheur.
- Si vous n'avez pas encore créé de connexion à Microsoft Sentinel, vous devez le faire maintenant. Cliquez sur Créer, puis suivez les instructions pour vous authentifier.
- Cliquez sur Insérer une nouvelle étape.
- Cliquez sur Ajouter une action.
- Recherchez et sélectionnez HTTP comme action.
- Spécifiez les valeurs des paramètres d'entrée suivants :
- URI : URL du point de terminaison du flux.
- Méthode : POST
- En-têtes : ajoutez les en-têtes suivants :
- Content-Type: application/json
- X-goog-api-key : clé API permettant de s'authentifier auprès de Google Security Operations.
- X-Webhook-Access-Key : clé secrète que vous avez générée pour authentifier le flux.
Configurer des règles d'automatisation pour Microsoft Sentinel
Pour configurer les règles d'automatisation pour Microsoft Sentinel, procédez comme suit :
- Accédez à votre espace de travail Microsoft Sentinel.
- Cliquez sur Configuration > Automatisation.
- Cliquez sur Créer.
- Sélectionnez Règle d'automatisation.
- Spécifiez les valeurs des paramètres d'entrée suivants :
- Nom : saisissez un nom pour la règle d'automatisation.
- Déclencheur : sélectionnez Lorsqu'un incident est créé.
- Actions : sélectionnez Exécuter le playbook > Application logique créée pour les incidents.
- Cliquez sur Appliquer.
- Cliquez sur Créer.
- Sélectionnez Règle d'automatisation.
- Spécifiez les valeurs des paramètres d'entrée suivants :
- Nom : saisissez un nom pour la règle d'automatisation.
- Déclencheur : sélectionnez Quand l'incident est mis à jour.
- Condition : cliquez sur Ajouter > Condition (AND) > État > Modifié.
- Actions : sélectionnez Exécuter le playbook > Application logique créée pour les incidents.
- Cliquez sur Appliquer.
- Cliquez sur Créer.
- Sélectionnez Règle d'automatisation.
- Spécifiez les valeurs des paramètres d'entrée suivants :
- Nom : saisissez un nom pour la règle d'automatisation.
- Déclencheur : sélectionnez Lors de la création de l'alerte.
- Actions : sélectionnez Exécuter le playbook > Application logique créée pour les alertes.
- Cliquez sur Appliquer.
Table de mappage UDM
Champ de journal | Mappage UDM | Logique |
---|---|---|
AlertGenerationStatus |
security_result.detection_fields.AlertGenerationStatus |
Mappé directement à partir du champ ExtendedProperties après l'analyse JSON. |
AlertLink |
principal.labels.AlertLink |
Mappé directement. |
AlertName |
security_result.rule_name |
Mappé directement. |
AlertSeverity |
security_result.severity |
Mappé directement et converti en majuscules. Si la valeur est HIGH, MEDIUM, LOW, CRITICAL ou UNKNOWN_SEVERITY, elle est mappée sur security_result.severity . Sinon, il est mappé sur security_result.severity_details . |
AlertType |
security_result.threat_name |
Mappé directement. |
Category |
security_result.detection_fields.Category |
Mappé directement à partir du champ ExtendedProperties après l'analyse JSON. |
CompromisedEntity |
principal.resource.attribute.labels.CompromisedEntity |
Mappé directement. |
CompromisedEntityId |
security_result.detection_fields.CompromisedEntityId |
Mappé directement à partir du champ ExtendedProperties après l'analyse JSON. |
ConfidenceLevel |
security_result.confidence_details |
Mappé directement. |
ConfidenceScore |
security_result.detection_fields.ConfidenceScore |
Mappé directement. |
cribl_pipe |
additional.fields.cribl_pipe |
Mappé directement. |
Description |
security_result.description |
Mappé directement. |
DestinationDevice |
security_result.detection_fields.DestinationDevice OU target.ip |
Mappé à partir du champ ExtendedProperties après l'analyse JSON. Si la valeur est une adresse IP valide, elle est mappée sur target.ip . Dans le cas contraire, il est mappé en tant que champ de détection. |
DestinationDeviceAddress |
target.ip |
Mappé à partir du champ ExtendedProperties après l'analyse JSON, uniquement si l'adresse IP est valide. |
DeviceId |
security_result.detection_fields.DeviceId |
Mappé directement à partir du champ ExtendedProperties après l'analyse JSON. |
DisplayName |
security_result.summary |
Mappé directement. |
EndTime |
about.labels.EndTime |
Mappé directement. |
Entities.Address |
principal.asset.ip |
Extrait du tableau Entities après l'analyse JSON. Seules les adresses IP sont mappées. |
Entities.HostName |
principal.asset.hostname OU principal.asset.ip |
Extrait du tableau Entities après l'analyse JSON. Si la valeur est une adresse IP valide, elle est mappée sur principal.asset.ip . Sinon, il est mappé sur principal.asset.hostname . |
Entities.IoTDevice.DeviceId |
security_result.detection_fields.IoTDeviceID |
Extrait du tableau Entities après l'analyse JSON. |
Entities.IoTDevice.DeviceType |
security_result.detection_fields.IoTDeviceType |
Extrait du tableau Entities après l'analyse JSON. |
Entities.IoTDevice.DeviceTypeId |
security_result.detection_fields.IoTDeviceTypeId |
Extrait du tableau Entities après l'analyse JSON. |
Entities.IoTDevice.Importance |
security_result.detection_fields.IoTDeviceImportance |
Extrait du tableau Entities après l'analyse JSON. |
Entities.IoTDevice.IoTSecurityAgentId |
security_result.detection_fields.IoTSecurityAgentId |
Extrait du tableau Entities après l'analyse JSON. |
Entities.IoTDevice.Manufacturer |
security_result.detection_fields.IoT Manufacturer |
Extrait du tableau Entities après l'analyse JSON. |
Entities.IoTDevice.OperatingSystem |
principal.asset.platform_software.platform_version |
Extrait du tableau Entities après l'analyse JSON, les espaces de fin sont supprimés. |
Entities.IoTDevice.PurdueLayer |
security_result.detection_fields.IoT PurdueLayer |
Extrait du tableau Entities après l'analyse JSON. |
Entities.IoTDevice.Sensor |
security_result.detection_fields.IoT Sensor |
Extrait du tableau Entities après l'analyse JSON. |
ExtendedProperties.Protocol |
security_result.detection_fields.Protocol |
Mappé directement à partir du champ ExtendedProperties après l'analyse JSON. |
ExtendedProperties.SensorId |
security_result.detection_fields.SensorId |
Mappé directement à partir du champ ExtendedProperties après l'analyse JSON. |
ExtendedProperties.SourceDevice |
principal.ip OU security_result.detection_fields.SourceDevice |
Mappé à partir du champ ExtendedProperties après l'analyse JSON. Si la valeur est une adresse IP valide, elle est mappée sur principal.ip . Dans le cas contraire, il est mappé en tant que champ de détection. |
ExtendedProperties.SourceDeviceAddress |
principal.ip |
Mappé à partir du champ ExtendedProperties après l'analyse JSON, uniquement si l'adresse IP est valide. |
IsIncident |
security_result.detection_fields.IsIncident |
Mappé directement, converti en chaîne. |
ProcessingEndTime |
about.labels.ProcessingEndTime |
Mappé directement. |
ProductComponentName |
principal.resource.attribute.labels.ProductComponentName |
Mappé directement. |
ProductName |
principal.resource.attribute.labels.ProductName |
Mappé directement. |
ProviderName |
principal.resource.attribute.labels.ProviderName |
Mappé directement. |
ResourceId |
principal.resource.product_object_id , target.resource.name |
Mappé directement. |
SourceComputerId |
principal.asset.asset_id |
Mappé directement, avec le préfixe "SourceComputerId:". |
SourceSystem |
security_result.detection_fields.SourceSystem |
Mappé directement. |
StartTime |
about.labels.StartTime |
Mappé directement. |
Status |
security_result.detection_fields.Status |
Mappé directement. |
SystemAlertId |
metadata.product_log_id |
Mappé directement. |
Tactics |
security_result.attack_details.tactics.name |
Extrait du champ Tactics après l'analyse JSON et la suppression des barres obliques inverses. |
Techniques |
security_result.attack_details.techniques.id |
Extrait du champ Techniques après l'analyse JSON et la suppression des barres obliques inverses. |
TenantId |
additional.fields.TenantId |
Mappé directement. |
TimeGenerated |
about.labels.TimeGenerated |
Mappé directement. |
timestamp |
metadata.event_timestamp , events.timestamp |
Mappé directement. |
VendorName |
metadata.vendor_name |
Mappé directement. |
VendorOriginalId |
additional.fields.VendorOriginalId |
Mappé directement. |
_time |
metadata.event_timestamp , events.timestamp |
Analysé comme un code temporel au format UNIX ou UNIX_MS. |
(Logique de l'analyseur) | metadata.event_type |
Définissez sur "USER_RESOURCE_ACCESS" si le compte principal, la cible et ResourceId sont présents. Sinon, définissez-le sur "GENERIC_EVENT". |
(Logique de l'analyseur) | metadata.log_type |
Défini sur "MICROSOFT_SENTINEL". |
(Logique de l'analyseur) | metadata.product_name |
Défini sur "MICROSOFT_SENTINEL". |
Vous avez encore besoin d'aide ? Obtenez des réponses de membres de la communauté et de professionnels Google SecOps.