Intégrer Splunk à Google SecOps

Ce document explique comment intégrer Splunk à Google SecOps.

Avant de commencer

Avant d'intégrer Splunk à Google SecOps, déterminez la méthode d'ingestion appropriée pour votre architecture de déploiement et vérifiez que votre environnement répond à toutes les dépendances, chemins réseau et autorisations d'accès requis.

Google SecOps accepte deux méthodes d'ingestion :

  • Ingestion basée sur le push : Splunk évalue les alertes localement et transmet les événements directement à Google SecOps à l'aide du module complémentaire TA-Siemplify et des actions de déclenchement d'alerte. Aucune configuration de connecteur n'est requise dans Google SecOps.

  • Ingestion basée sur l'extraction : les connecteurs Google SecOps interrogent régulièrement les points de terminaison de l'API REST Splunk pour récupérer les alertes, les résultats de recherche SPL ou les événements notables Splunk ES.

Ingestion push

L'ingestion basée sur le push nécessite une connectivité HTTPS sortante directe de Splunk vers Google SecOps, ainsi que des configurations de modules complémentaires spécifiques sur vos têtes de recherche Splunk.

Vérifiez les exigences suivantes avant de configurer l'ingestion basée sur le push :

  1. Téléchargez et installez le package TA-Siemplify depuis Splunkbase sur toutes les têtes de recherche Splunk cibles. Dans les environnements distribués, déployez le module complémentaire sur votre cluster de têtes de recherche à l'aide de Splunk Deployer ou de Deployment Server.

  2. Vérifiez qu'une version compatible du modèle d'informations communes Splunk (Splunk_SA_CIM) est installée sur la tête de recherche pour prendre en charge les alertes et la journalisation modulaires.

  3. Assurez-vous que vos têtes de recherche Splunk disposent d'un accès réseau sortant via HTTPS (port TCP 443) à l'URL de votre instance Google SecOps.

  4. Vérifiez que vous disposez d'un compte dans Google SecOps avec des autorisations d'administrateur pour générer des clés API (Paramètres> Avancé> API). Assurez-vous que la clé API générée est attribuée à un rôle disposant des autorisations de création d'alertes et de demandes.

  5. Si vous prévoyez d'ingérer des événements bruts à partir de recherches de transformation (par exemple, des recherches utilisant stats, chart ou timechart), assurez-vous que dispatch.buckets = 1 est configuré dans savedsearches.conf sur vos têtes de recherche.

Ingestion basée sur l'extraction

L'ingestion basée sur l'extraction, les actions de playbook et les jobs de synchronisation nécessitent que Google SecOps (ou un agent distant) établisse des connexions administratives entrantes à Splunk.

Vérifiez les exigences suivantes avant de configurer des connecteurs, des actions ou des jobs d'extraction :

  1. Connectivité réseau : vérifiez la visibilité du réseau depuis Google SecOps (ou votre agent distant) jusqu'au port de l'API REST de gestion Splunk (par défaut : 8089/TCP).

  2. Certificat CA personnalisé : si votre instance Splunk utilise un certificat CA privé ou interne, vérifiez que vous exécutez la version 26.0 ou ultérieure de l'intégration Splunk dans Google SecOps.

  3. Authentification : obtenez des identifiants utilisateur Splunk valides (nom d'utilisateur et mot de passe) ou générez un jeton de support Splunk (pour activer cette méthode d'authentification sur la plate-forme Splunk, l'authentification par jeton est requise).

  4. Autorisations du rôle Splunk : assurez-vous que le compte Splunk utilisé pour l'authentification dispose d'un rôle avec les autorisations suivantes :

  5. Autorisations d'accès au datastore et de recherche : vérifiez que le compte d'authentification a accès aux datastores Splunk appropriés pour les composants que vous avez choisis :

    • Connecteur Splunk pour l'extraction : autorisations de lecture pour le tableau de conversion siemplify_alerts (rempli lorsque TA-Siemplify est installé et configuré en mode Pull).
    • Connecteur et actions de requête Splunk :
      • Autorisations de recherche sur les index d'événements cibles (ne nécessite pas TA-Siemplify).
      • Autorisations d'écriture et d'entrée sur l'index cible si vous utilisez l'action Envoyer un événement.
    • Connecteur et jobs d'événements notables Splunk ES : une installation Splunk Enterprise Security (ES) active, des autorisations de lecture sur l'index notable et l'accès à la macro get_notable_index (ne nécessite pas TA-Siemplify).

Paramètres d'intégration

Utilisez les paramètres suivants pour configurer l'intégration :

Nom à afficher du paramètre Type Valeur par défaut Est obligatoire Description
Adresse du serveur Chaîne {SCHEMA}://{IP}:{PORT} Oui Adresse du serveur Splunk.
Nom d'utilisateur Chaîne N/A Non Adresse e-mail de l'utilisateur à utiliser pour se connecter à Splunk.
Mot de passe Mot de passe N/A Non Mot de passe de l'utilisateur correspondant.
Jeton d'API Mot de passe N/A Non Jeton d'API Splunk. Le jeton API est prioritaire par rapport aux autres méthodes d'authentification lorsque ce champ n'est pas vide.
Vérifier le protocole SSL Case à cocher Décochée Non Cochez cette case si votre connexion Splunk nécessite une validation SSL (elle est décochée par défaut).
Fichier de certificat CA Chaîne N/A Non Fichier de certificat CA encodé en base64.

Pour savoir comment configurer une intégration dans Google SecOps, consultez Configurer des intégrations.

Vous pourrez apporter des modifications ultérieurement si nécessaire. Après avoir configuré une instance d'intégration, vous pouvez l'utiliser dans des playbooks. Pour savoir comment configurer et prendre en charge plusieurs instances, consultez Prise en charge de plusieurs instances.

Actions

Pour en savoir plus sur les actions, consultez Répondre aux actions en attente depuis Votre espace de travail et Effectuer une action manuelle.

Obtenir les événements hôtes

Obtenez des événements liés aux hôtes dans Splunk.

Paramètres

Nom à afficher du paramètre Type Valeur par défaut Est obligatoire Description
Limite du nombre d'événements par hôte Integer 100 Oui Spécifiez le nombre d'événements à renvoyer par hôte.
Résultats de Chaîne Il y a 24h Oui Spécifiez l'heure de début des événements.
Résultats pour Chaîne maintenant Oui Spécifiez l'heure de fin des événements.
Champs de résultat CSV N/A Non Spécifiez une liste de champs à renvoyer, séparés par une virgule.
Index Chaîne N/A Non Spécifiez l'index à utiliser pour rechercher des événements liés à l'hôte. Si aucune valeur n'est fournie, l'action n'utilisera pas d'index.
Clé d'hôte Chaîne hôte Non Spécifiez la clé à utiliser pour obtenir des informations sur les événements hôtes. Valeur par défaut : host.

Exécuter sur

Cette action s'exécute sur l'entité "Nom d'hôte".

Résultats de l'action

Résultat du script
Nom du résultat du script Options de valeur Exemple
success Vrai/Faux success:False
Résultat JSON
[{
    "app": "SA-AccessProtection",
    "_bkt": "_internal~425~1A082D7B-D5A1-4A2B-BB94-41C439BE3EB7",
    "_cd": "425:9087674",
    "_indextime": "1612231318",
    "_kv": "1",
    "_raw": "02-02-2021 04:01:58.404 +0200 INFO  SavedSplunker - savedsearch_id=\"nobody;SA-AccessProtection;Access - Default Account Usage - Rule\", search_type=\"\", user=\"admin\", app=\"SA-AccessProtection\", savedsearch_name=\"Access - Default Account Usage - Rule\", priority=default, status=success, digest_mode=1, scheduled_time=1612179932, window_time=0, dispatch_time=1612179969, run_time=51348.242, result_count=0, alert_actions=\"\", sid=\"rt_scheduler__admin_U0EtQWNjZXNzUHJvdGVjdGlvbg__RMD509c859ea7b9951b8_at_1612179932_61.40533\", suppressed=1, thread_id=\"AlertNotifierWorker-0\", workload_pool=\"\"",
    "_serial": "0",
    "_si": [
        "splunk",
        "_internal"
    ],
    "_sourcetype": "scheduler",
    "_subsecond": ".404",
    "_time": "2021-02-02T04:01:58.404+02:00"
},
{
    "_bkt": "_internal~425~1A082D7B-D5A1-4A2B-BB94-41C439BE3EB7",
    "_cd": "425:9087731",
    "_indextime": "1612231318",
    "_kv": "1",
    "_raw": "127.0.0.1 - admin [02/Feb/2021:04:01:58.172 +0200] \"POST /servicesNS/nobody/SA-AccessProtection/saved/searches/Access%20-%20Default%20Account%20Usage%20-%20Rule/notify?trigger.condition_state=1 HTTP/1.1\" 200 1985 - - - 3ms",
    "_serial": "1",
    "_si": [
        "splunk",
        "_internal"
    ],
    "_sourcetype": "splunkd_access",
    "_subsecond": ".172",
    "_time": "2021-02-02T04:01:58.172+02:00"
},
{
    "app": "SA-EndpointProtection",
    "_bkt": "_internal~425~1A082D7B-D5A1-4A2B-BB94-41C439BE3EB7",
    "_cd": "425:9087653",
    "_indextime": "1612231318",
    "_kv": "1",
    "_raw": "02-02-2021 04:01:57.804 +0200 INFO  SavedSplunker - savedsearch_id=\"nobody;SA-EndpointProtection;Endpoint - Should Timesync Host Not Syncing - Rule\", search_type=\"\", user=\"admin\", app=\"SA-EndpointProtection\", savedsearch_name=\"Endpoint - Should Timesync Host Not Syncing - Rule\", priority=default, status=success, digest_mode=1, scheduled_time=1612179932, window_time=300, dispatch_time=1612179970, run_time=51347.420, result_count=0, alert_actions=\"\", sid=\"rt_scheduler__admin_U0EtRW5kcG9pbnRQcm90ZWN0aW9u__RMD5ef3c08822811b7cd_at_1612179932_62.25751\", suppressed=1, thread_id=\"AlertNotifierWorker-0\", workload_pool=\"\"",
    "_serial": "2",
    "_si": [
        "splunk",
        "_internal"
    ],
    "_sourcetype": "scheduler",
    "_subsecond": ".804",
    "_time": "2021-02-02T04:01:57.804+02:00"
}]
Mur des cas
Type de résultat Valeur / Description Type
Message de sortie*

L'action ne doit pas échouer ni arrêter l'exécution d'un playbook :

Si l'opération réussit et que des résultats sont disponibles : "Successfully returned events for the following hosts in Splunk: \n {0}".format(entity.identifier)

Si l'opération réussit et que les résultats ne sont pas disponibles pour certains : "No events were found for the following hosts in Splunk:\n {0}".format(entity.identifier)

Si l'opération réussit et que les résultats ne sont pas disponibles pour tous les hôtes : "Aucun événement n'a été trouvé pour les hôtes fournis dans Splunk"

L'action doit échouer et arrêter l'exécution d'un playbook :

Si une erreur fatale se produit (par exemple, des identifiants incorrects, une absence de connexion au serveur, etc.) : "Erreur lors de l'exécution de l'action "Obtenir les événements de l'hôte". Motif : {0}''.format(error.Stacktrace)

Si le code d'erreur est 400 : "Erreur lors de l'exécution de l'action "Obtenir les événements de l'hôte". Reason: {0}''.format(messages/text)

Général
Tableau du mur des cas

Nom : Événements {Entity.identifier}

Colonnes : en fonction des résultats.

Ping

Testez la connectivité à Splunk avec les paramètres fournis sur la page de configuration de l'intégration dans l'onglet "Google Security Operations Marketplace".

Paramètres

N/A

Exécuter sur

Cette action ne s'exécute pas sur les entités et ne comporte pas de paramètres d'entrée obligatoires.

Résultats de l'action

Résultat du script
Nom du résultat du script Options de valeur Exemple
is_success Vrai/Faux is_success:False
Mur des cas
Type de résultat Valeur / Description Type
Message de sortie*

L'action ne doit pas échouer ni arrêter l'exécution d'un playbook :
en cas de réussite : "Successfully connected to the Splunk server with the provided connection parameters!"

L'action doit échouer et arrêter l'exécution d'un playbook :
if not successful : "Failed to connect to the Splunk server! Error is {0}".format(exception.stacktrace)

Général

Lecteur CSV Splunk

Paramètres

Paramètre Type Valeur par défaut Est obligatoire Description
Résultats string N/A Oui Résultats bruts.

Exécuter sur

Cette action s'applique à toutes les entités.

Résultats de l'action

Résultat du script
Nom du résultat du script Options de valeur Exemple
is_succeed Vrai/Faux is_succeed:False

SplunkQuery

Exécutez une requête dans Splunk.

Paramètres

Nom à afficher du paramètre Type Valeur par défaut Est obligatoire Description
Mode Recherche LDD

Intelligente

Valeurs possibles :

  • Verbose
  • Intelligente
  • Rapide
Non Spécifiez le mode d'exécution de la recherche.
Requête Chaîne Oui Spécifiez la requête à exécuter. Exemple : index="_internal"
Limite du nombre de résultats Integer 100 Non

Spécifiez le nombre de résultats à renvoyer.
 Remarque : Ce paramètre ajoute le mot clé "head" à la requête fournie. La valeur par défaut est 100.

Résultats de Chaîne Il y a 24h Non Spécifiez l'heure de début de la requête. Valeur par défaut : -24h
Résultats à Chaîne maintenant Non Spécifiez l'heure de fin de la requête. Valeur par défaut : "now".
Champs de résultat CSV Non

Spécifiez une liste de champs à renvoyer, séparés par une virgule.
Remarque : Ce paramètre ajoute le mot clé "fields" à la requête fournie.

Exécuter sur

Cette action ne s'applique pas aux entités.

Résultats de l'action

Résultat du script
Nom du résultat du script Options de valeur Exemple
is_succeed Vrai/Faux is_succeed:False
Résultat JSON
[{
    "app": "SA-AccessProtection",
    "_bkt": "_internal~425~1A082D7B-D5A1-4A2B-BB94-41C439BE3EB7",
    "_cd": "425:9087674",
    "_indextime": "1612231318",
    "_kv": "1",
    "_raw": "02-02-2021 04:01:58.404 +0200 INFO  SavedSplunker - savedsearch_id=\"nobody;SA-AccessProtection;Access - Default Account Usage - Rule\", search_type=\"\", user=\"admin\", app=\"SA-AccessProtection\", savedsearch_name=\"Access - Default Account Usage - Rule\", priority=default, status=success, digest_mode=1, scheduled_time=1612179932, window_time=0, dispatch_time=1612179969, run_time=51348.242, result_count=0, alert_actions=\"\", sid=\"rt_scheduler__admin_U0EtQWNjZXNzUHJvdGVjdGlvbg__RMD509c859ea7b9951b8_at_1612179932_61.40533\", suppressed=1, thread_id=\"AlertNotifierWorker-0\", workload_pool=\"\"",
    "_serial": "0",
    "_si": [
        "splunk",
        "_internal"
    ],
    "_sourcetype": "scheduler",
    "_subsecond": ".404",
    "_time": "2021-02-02T04:01:58.404+02:00"
},
{
    "_bkt": "_internal~425~1A082D7B-D5A1-4A2B-BB94-41C439BE3EB7",
    "_cd": "425:9087731",
    "_indextime": "1612231318",
    "_kv": "1",
    "_raw": "127.0.0.1 - admin [02/Feb/2021:04:01:58.172 +0200] \"POST /servicesNS/nobody/SA-AccessProtection/saved/searches/Access%20-%20Default%20Account%20Usage%20-%20Rule/notify?trigger.condition_state=1 HTTP/1.1\" 200 1985 - - - 3ms",
    "_serial": "1",
    "_si": [
        "splunk",
        "_internal"
    ],
    "_sourcetype": "splunkd_access",
    "_subsecond": ".172",
    "_time": "2021-02-02T04:01:58.172+02:00"
},
{
    "app": "SA-EndpointProtection",
    "_bkt": "_internal~425~1A082D7B-D5A1-4A2B-BB94-41C439BE3EB7",
    "_cd": "425:9087653",
    "_indextime": "1612231318",
    "_kv": "1",
    "_raw": "02-02-2021 04:01:57.804 +0200 INFO  SavedSplunker - savedsearch_id=\"nobody;SA-EndpointProtection;Endpoint - Should Timesync Host Not Syncing - Rule\", search_type=\"\", user=\"admin\", app=\"SA-EndpointProtection\", savedsearch_name=\"Endpoint - Should Timesync Host Not Syncing - Rule\", priority=default, status=success, digest_mode=1, scheduled_time=1612179932, window_time=300, dispatch_time=1612179970, run_time=51347.420, result_count=0, alert_actions=\"\", sid=\"rt_scheduler__admin_U0EtRW5kcG9pbnRQcm90ZWN0aW9u__RMD5ef3c08822811b7cd_at_1612179932_62.25751\", suppressed=1, thread_id=\"AlertNotifierWorker-0\", workload_pool=\"\"",
    "_serial": "2",
    "_si": [
        "splunk",
        "_internal"
    ],
    "_sourcetype": "scheduler",
    "_subsecond": ".804",
    "_time": "2021-02-02T04:01:57.804+02:00"
}]
Mur des cas
Type de résultat Valeur/Description Type
Message de sortie*

L'action ne doit pas échouer ni arrêter l'exécution d'un playbook :

Si l'opération réussit et que des résultats sont disponibles : "Successfully returned results for the query "{0}" in Splunk".format(query)

Si l'opération réussit et qu'aucun résultat n'est disponible : "No results were found for the query "{0}" in Splunk".format(query)

Message asynchrone : "En attente de l'exécution de la requête {0}".format(nom de la requête)

L'action doit échouer et arrêter l'exécution d'un playbook :

En cas d'erreur fatale (identifiants incorrects, absence de connexion au serveur, etc.) : "Error executing action "SplunkQuery". Motif : {0}''.format(error.Stacktrace)

Si 400 : "Error executing action "SplunkQuery". Motif : {0}''.format(messages/text)

Général
Tableau du mur des cas

Nom : résultats de requête Splunk

Colonnes : en fonction des résultats.

Général

Envoyer l'événement

Envoyer l'événement à Splunk.

Paramètres

Nom à afficher du paramètre Type Valeur par défaut Est obligatoire Description
Index Chaîne main Oui Spécifiez l'index dans lequel l'événement doit être créé.
Événement Chaîne N/A Oui Spécifiez l'événement brut à envoyer.
Hôte Chaîne N/A Non Spécifiez l'hôte associé à l'événement.
Source Chaîne N/A Non Spécifiez la source de l'événement. Exemple : www.
Sourcetype Chaîne N/A Non Spécifiez le type de source de l'événement. Exemple : web_event

Exécuter sur

Cette action ne s'applique pas aux entités.

Résultats de l'action

Résultat du script
Nom du résultat du script Options de valeur Exemple
success Vrai/Faux success:False
Résultat JSON
{
    "index": "default",
    "bytes": 70,
    "host": "dogo",
    "source": "www",
    "sourcetype": "web_event"
}
Mur des cas
Type de résultat Valeur/Description Type
Message de sortie*

L'action ne doit pas échouer ni arrêter l'exécution d'un playbook :

En cas de réussite : "Successfully added a new event to index "{0}" in Splunk.".format(index)

L'action doit échouer et arrêter l'exécution d'un playbook :

En cas d'erreur fatale (identifiants incorrects, absence de connexion au serveur, etc.) : "Erreur lors de l'exécution de l'action "Envoyer l'événement". Reason: {0}''.format(error.Stacktrace)

Si 400 : "Error executing action "Submit Event". Reason: {0}''.format(messages/text)

Général

Mettre à jour les événements notables

Mettez à jour les événements notables dans Splunk ES.

Paramètres

Nom à afficher du paramètre Type Valeur par défaut Est obligatoire Description
ID d'événements notables CSV N/A Oui Spécifiez les ID des événements notables. Exemple : 1A082D7B-D5A1-4A2B-BB94-41C439BE3EB7@@notable@@cb87390ae72763679d3f6f8f097ebe2b,1D234D5B-1531-2D2B-BB94-41C439BE12B7@@notable@@cb87390ae72763679d3f6f8f097ebe2b
État LDD

Sélectionnez une réponse

Valeurs possibles :

Sélectionnez une réponse

Non attribué

Nouveau

En cours

En attente

Résolu

Fermé

Oui Spécifiez le nouvel état des événements notables.
Urgence LDD

Sélectionnez une réponse

Valeurs possibles :

Sélectionnez une réponse

Critique

Élevé

Moyen

Faible

Informatif

Oui Spécifiez le nouveau niveau d'urgence de l'événement notable.
Nouveau propriétaire Chaîne N/A Oui Spécifiez le nouveau propriétaire de l'événement notable.
Commentaire Chaîne N/A Oui Spécifiez le commentaire de l'événement notable.

Exécuter sur

Cette action ne s'applique pas aux entités.

Résultats de l'action

Résultat du script
Nom du résultat du script Options de valeur Exemple
is_success Vrai/Faux is_success:False
Mur des cas
Type de résultat Valeur / Description Type
Message de sortie*

L'action ne doit pas échouer ni arrêter l'exécution d'un playbook :

Si l'opération réussit et que des données sont disponibles (is_success=true)

print "Successfully updated {0} notable events in Splunk.".format(count(notable_events))

Si la mise à jour échoue (status_code=400, is_success=false) :

print "Action wasn't able to update notable events. Reason:{0}".format(string_from_response)

L'action doit échouer et arrêter l'exécution d'un playbook :

En cas d'erreur fatale (par exemple, identifiants incorrects, absence de connexion au serveur, etc.) :

print "Error executing action "Update Notable Events". Reason: {0}''.format(error.Stacktrace)

Général

Exécuter une requête d'entité

Exécutez une requête d'entité dans Splunk.

Comment utiliser les paramètres d'action ?

Cette action permet de récupérer rapidement des informations sur les entités. Par exemple, il est possible de résoudre le cas d'utilisation où vous souhaitez voir le nombre d'événements des points de terminaison affectés par les hachages fournis sans créer de requête complexe. Pour résoudre ce problème dans Splunk, vous devez préparer la requête suivante : index="main" | where (device_ip="10.0.0.1" or device_ip="10.12.12.12") and (hash="bad_hash_1" or hash="bad_hash_2") Pour créer la même requête à l'aide de l'action "Exécuter une requête d'entité", vous devez renseigner les paramètres d'action de la manière suivante :

Requête index="main"
Clé d'entité IP device_ip
Clé d'entité de hachage de fichier hash
Opérateur d'entité croisée ET

Tous les autres champs peuvent être laissés vides.

Si le cas d'utilisation consiste à déterminer le nombre de points de terminaison affectés par les hachages fournis, la configuration de "Exécuter une requête sur une entité" se présentera comme suit.

Requête index="main"
Clé d'entité de hachage de fichier hash

Dans ce cas, l'opérateur "Cross Entity Operator" n'aura aucun impact, car il n'affecte la requête que lorsque plusieurs "clés d'entité" sont fournies.

Paramètres

Nom à afficher du paramètre Type Valeur par défaut Est obligatoire Description
Mode Recherche LDD

Intelligente

    Valeurs possibles :
  • Verbose
  • Intelligente
  • Rapide
Non Spécifiez le mode d'exécution de la recherche.
Requête Chaîne Oui Spécifiez la requête à exécuter sans la clause "Where". Exemple : index="_internal"
Limite du nombre de résultats Integer 100 Non Spécifiez le nombre de résultats à renvoyer. Remarque : Ce paramètre ajoute le mot clé "head" à la requête fournie. La valeur par défaut est 100.
Résultats de Chaîne Il y a 24h Non Spécifiez l'heure de début de la requête. Valeur par défaut : -24h
Résultats à Chaîne maintenant Non Spécifiez l'heure de fin de la requête. Valeur par défaut : "now".
Champs de résultat CSV N/A Non

Spécifiez une liste de champs à renvoyer, séparés par une virgule.
Remarque : Ce paramètre ajoute le mot clé "fields" à la requête fournie.

Clé d'entité IP Chaîne N/A Non Spécifiez la clé à utiliser avec les entités IP. Pour en savoir plus, veuillez consulter la documentation de l'action.
Clé d'entité du nom d'hôte Chaîne N/A Non Spécifiez la clé à utiliser avec les entités Hostname lors de la préparation du fichier . Pour en savoir plus, veuillez consulter la documentation de l'action.
Clé d'entité de hachage de fichier Chaîne N/A Non Spécifiez la clé à utiliser avec les entités de hachage de fichier. Pour en savoir plus, veuillez consulter la documentation de l'action.
Clé d'entité utilisateur Chaîne N/A Non Spécifiez la clé à utiliser avec les entités utilisateur. Pour en savoir plus, veuillez consulter la documentation de l'action.
Clé d'entité d'URL Chaîne N/A Non Spécifiez la clé à utiliser avec les entités d'URL. Pour en savoir plus, consultez la documentation de l'action.
Clé d'entité de l'adresse e-mail Chaîne N/A Non Spécifiez la clé à utiliser avec les entités d'adresse e-mail. Pour en savoir plus, consultez la documentation de l'action.
Arrêter si le nombre d'entités est insuffisant Case à cocher Cochée Oui Si cette option est activée, l'action ne s'exécutera pas, sauf si tous les types d'entités sont disponibles pour les "clés d'entité..." spécifiées. Exemple : si "Clé d'entité d'adresse IP" et "Clé d'entité de hachage de fichier" sont spécifiées, mais qu'il n'y a pas de hachage de fichier dans le champ d'application, l'action n'exécutera pas la requête si ce paramètre est activé.
Opérateur d'entité croisée LDD

OU

Valeurs possibles :

OU

ET

Oui Spécifiez l'opérateur logique à utiliser entre les différents types d'entités.

Exécuter sur

Cette action s'exécute sur les entités suivantes :

  • Adresse IP
  • Hôte
  • Utilisateur
  • Hash
  • URL

Résultats de l'action

Résultat du script
Nom du résultat du script Options de valeur Exemple
is_succeed Vrai/Faux is_succeed:False
Résultat JSON
[{
    "app": "SA-AccessProtection",
    "_bkt": "_internal~425~1A082D7B-D5A1-4A2B-BB94-41C439BE3EB7",
    "_cd": "425:9087674",
    "_indextime": "1612231318",
    "_kv": "1",
    "_raw": "02-02-2021 04:01:58.404 +0200 INFO  SavedSplunker - savedsearch_id=\"nobody;SA-AccessProtection;Access - Default Account Usage - Rule\", search_type=\"\", user=\"admin\", app=\"SA-AccessProtection\", savedsearch_name=\"Access - Default Account Usage - Rule\", priority=default, status=success, digest_mode=1, scheduled_time=1612179932, window_time=0, dispatch_time=1612179969, run_time=51348.242, result_count=0, alert_actions=\"\", sid=\"rt_scheduler__admin_U0EtQWNjZXNzUHJvdGVjdGlvbg__RMD509c859ea7b9951b8_at_1612179932_61.40533\", suppressed=1, thread_id=\"AlertNotifierWorker-0\", workload_pool=\"\"",
    "_serial": "0",
    "_si": [
        "splunk",
        "_internal"
    ],
    "_sourcetype": "scheduler",
    "_subsecond": ".404",
    "_time": "2021-02-02T04:01:58.404+02:00"
},
{
    "_bkt": "_internal~425~1A082D7B-D5A1-4A2B-BB94-41C439BE3EB7",
    "_cd": "425:9087731",
    "_indextime": "1612231318",
    "_kv": "1",
    "_raw": "127.0.0.1 - admin [02/Feb/2021:04:01:58.172 +0200] \"POST /servicesNS/nobody/SA-AccessProtection/saved/searches/Access%20-%20Default%20Account%20Usage%20-%20Rule/notify?trigger.condition_state=1 HTTP/1.1\" 200 1985 - - - 3ms",
    "_serial": "1",
    "_si": [
        "splunk",
        "_internal"
    ],
    "_sourcetype": "splunkd_access",
    "_subsecond": ".172",
    "_time": "2021-02-02T04:01:58.172+02:00"
},
{
    "app": "SA-EndpointProtection",
    "_bkt": "_internal~425~1A082D7B-D5A1-4A2B-BB94-41C439BE3EB7",
    "_cd": "425:9087653",
    "_indextime": "1612231318",
    "_kv": "1",
    "_raw": "02-02-2021 04:01:57.804 +0200 INFO  SavedSplunker - savedsearch_id=\"nobody;SA-EndpointProtection;Endpoint - Should Timesync Host Not Syncing - Rule\", search_type=\"\", user=\"admin\", app=\"SA-EndpointProtection\", savedsearch_name=\"Endpoint - Should Timesync Host Not Syncing - Rule\", priority=default, status=success, digest_mode=1, scheduled_time=1612179932, window_time=300, dispatch_time=1612179970, run_time=51347.420, result_count=0, alert_actions=\"\", sid=\"rt_scheduler__admin_U0EtRW5kcG9pbnRQcm90ZWN0aW9u__RMD5ef3c08822811b7cd_at_1612179932_62.25751\", suppressed=1, thread_id=\"AlertNotifierWorker-0\", workload_pool=\"\"",
    "_serial": "2",
    "_si": [
        "splunk",
        "_internal"
    ],
    "_sourcetype": "scheduler",
    "_subsecond": ".804",
    "_time": "2021-02-02T04:01:57.804+02:00"
}]
Mur des cas
Type de résultat Valeur/Description Type
Message de sortie*

L'action ne doit pas échouer ni arrêter l'exécution d'un playbook :

Si l'opération réussit et que des résultats sont disponibles : "Successfully returned results for the query "{0}" in Splunk".format(query)

Si l'opération réussit et qu'aucun résultat n'est disponible : "No results were found for the query "{0}" in Splunk".format(query)

Message asynchrone : "Waiting for query {0} to finish execution.".format(query name)

Si l'option "Arrêter si le nombre d'entités est insuffisant" est activée et que le nombre de types d'entités disponibles pour les "clés d'entité" fournies est insuffisant (is_success=false) : l'action n'a pas pu créer la requête, car le nombre de types d'entités fournis pour les "clés d'entité" spécifiées était insuffisant. Veuillez désactiver le paramètre "Arrêter si le nombre d'entités est insuffisant" ou fournir au moins une entité pour chaque ".. Clé d'entité" spécifiée.

L'action doit échouer et arrêter l'exécution d'un playbook :

if fatal error, like wrong credentials, no connection to server, other: "Error executing action "Execute Entity Query". Reason: {0}''.format(error.Stacktrace)

Si 400 : "Error executing action "Execute Entity Query". Reason: {0}''.format(messages/text)

Général
Tableau du mur des cas

Nom : Splunk Query Results

Colonnes : en fonction des résultats.

Général

Connecteurs

Pour en savoir plus sur la configuration des connecteurs dans Google SecOps, consultez Ingérer vos données (connecteurs).

Connecteur de requêtes Splunk

Le connecteur envoie les requêtes qui font partie de la liste dynamique (whitelist), récupère les résultats et crée une fiche basée sur les résultats obtenus.

Exemples de requêtes Splunk pour afficher les journaux

  1. Les requêtes doivent être saisies en tant que règles de liste dynamique (whitelist).

  2. Les requêtes de recherche comportant plusieurs filtres doivent utiliser un espace comme séparateur entre les filtres de recherche (par exemple, index=cim_modactions sourcetype=modular_alerts:risk).

  3. Si vous utilisez plusieurs règles de liste dynamique (whitelist) au lieu de saisir plusieurs filtres de recherche séparés par des espaces dans la même règle, une recherche distincte est exécutée pour chaque règle ajoutée.

    • index=cim_modactions
    • sourcetype=modular_alerts:send_data_to_siemplify
    • index=_internal sourcetype=splunkd
    • component=sendmodalert
    • action=send_data_to_siemplify
    • index=_internal source=/opt/splunk/var/log/splunk/send_data_to_siemplify_modalert.log

Paramètres du connecteur

Pour configurer le connecteur, utilisez les paramètres suivants :

Paramètres
Product Field Name Obligatoire

Saisissez le nom du champ source pour récupérer le nom Product Field.

La valeur par défaut est device_product.

Event Field Name Obligatoire

Saisissez le nom du champ source pour récupérer le nom Event Field.

La valeur par défaut est app.

API Root Obligatoire

Racine de l'API de l'instance Splunk.

La valeur par défaut est https://IP:8089.

Username Obligatoire

Nom d'utilisateur du compte Splunk.

Password Obligatoire

Mot de passe du compte Splunk.

API Token Optional

Jeton d'API Splunk.

Si ce champ contient une valeur, le jeton d'API est prioritaire sur les autres méthodes d'authentification.

Verify SSL Obligatoire

Si cette option est cochée, vérifie que le certificat SSL de la connexion au serveur CrowdStrike est valide.

Cette option est décochée par défaut.

Environment Field Name Optional

Nom du champ dans lequel le nom de l'environnement est stocké.

Rule Generator Field Obligatoire

Nom du champ utilisé pour mapper la valeur du générateur de règles.

Alert Name Field Name Obligatoire

Nom de l'alerte.

Events Count Limit Per Query Optional

Nombre maximal d'événements à récupérer par requête.

Max Day Backwards Optional

Nombre de jours dans le passé à partir desquels récupérer les événements.

Aggregate Events Query Optional

Si cette option est activée, le connecteur regroupe tous les événements dans une seule alerte.

Désactivé par défaut

PythonProcessTimeout (Seconds) Obligatoire

Délai avant expiration du processus Python exécutant le script actuel.

La valeur par défaut est de 60 secondes.

Proxy Server Address Optional

Adresse du serveur proxy à utiliser.

Proxy Username Optional

Nom d'utilisateur du proxy pour l'authentification.

Proxy Password Optional

Mot de passe du proxy pour l'authentification.

Environment Regex Pattern Optional

Modèle d'expression régulière à exécuter sur la valeur trouvée dans le champ Environment Field Name.

La valeur par défaut .* récupère tout et renvoie la valeur inchangée.

Ce paramètre vous permet de manipuler le champ "environment" à l'aide d'une logique d'expression régulière.

Si le modèle d'expression régulière est nul ou vide, ou si la valeur de l'environnement est nulle, le résultat final de l'environnement est l'environnement par défaut.

Règles du connecteur

Le connecteur est compatible avec le proxy.

Connecteur d'extraction Splunk

extraire les alertes et les événements de Splunk vers Google SecOps ;

Paramètres du connecteur

Pour configurer le connecteur, utilisez les paramètres suivants :

Paramètres
Product Field Name Obligatoire

Saisissez le nom du champ source pour récupérer le nom Product Field.

La valeur par défaut est device_product.

Event Field Name Obligatoire

Saisissez le nom du champ source pour récupérer le nom Event Field.

La valeur par défaut est name.

Environment Field Name Optional

Nom du champ dans lequel le nom de l'environnement est stocké.

Si le champ d'environnement est introuvable, l'environnement de résultat est "" .

La valeur par défaut est "".

Environment Regex Pattern Optional

Modèle d'expression régulière à exécuter sur la valeur trouvée dans le champ Environment Field Name.

La valeur par défaut .* récupère tout et renvoie la valeur inchangée.

Ce paramètre vous permet de manipuler le champ "environment" à l'aide d'une logique d'expression régulière.

Si le modèle d'expression régulière est nul ou vide, ou si la valeur de l'environnement est nulle, le résultat final de l'environnement est "".

PythonProcessTimeout (Seconds) Obligatoire

Délai avant expiration du processus Python exécutant le script actuel.

La valeur par défaut est de 60 secondes.

Server Address Obligatoire

Adresse IP du serveur d'API Splunk.

Port Obligatoire

Port de l'instance Splunk.

La valeur par défaut est 8089.

Username Obligatoire

Nom d'utilisateur du compte Splunk.

Password Obligatoire

Mot de passe du compte Splunk.

Time Frame Optional

Période de récupération des alertes.

La valeur par défaut est de 1 heure.

Exemples :

Si la valeur est définie sur 1 minute, le connecteur récupère les alertes à partir d'une minute auparavant.

Si la valeur est définie sur trois heures, le connecteur récupère les alertes émises au cours des trois dernières heures.

Si la valeur est définie sur un jour ou une semaine, le connecteur récupère les alertes à partir d'un jour (24 heures) ou d'une semaine auparavant, respectivement.

Alerts Count Limit Optional

Nombre d'alertes renvoyées par le connecteur par itération.

La valeur par défaut est 100.

Use SSL Optional

Cochez cette case pour activer la connexion SSL ou TLS.

Cette option est décochée par défaut.

Proxy Server Address Optional

Adresse du serveur proxy à utiliser.

Proxy Username Optional

Nom d'utilisateur du proxy pour l'authentification.

Proxy Password Optional

Mot de passe du proxy pour l'authentification.

Règles du connecteur

Le connecteur est compatible avec les proxys.

Connecteur d'événements notables Splunk ES

Ingérez les événements notables depuis Splunk ES.

Définir la priorité de la demande

La priorité de la demande est définie par le paramètre Urgency dans l'événement notable. Seul ce paramètre est pris en compte lors de l'ingestion de l'événement notable dans Google SecOps.

Paramètres du connecteur

Pour configurer le connecteur, utilisez les paramètres suivants :

Paramètres
Product Field Name Obligatoire

Saisissez le nom du champ source pour récupérer le nom Product Field.

La valeur par défaut est Product Name.

Event Field Name Obligatoire

Saisissez le nom du champ source pour récupérer le nom Event Field.

La valeur par défaut est index.

Environment Field Name Optional

Nom du champ dans lequel le nom de l'environnement est stocké.

Si le champ d'environnement est introuvable, l'environnement par défaut est utilisé.

La valeur par défaut est "".

Environment Regex Pattern Optional

Modèle d'expression régulière à exécuter sur la valeur trouvée dans le champ Environment Field Name.

La valeur par défaut .* récupère tout et renvoie la valeur inchangée.

Ce paramètre vous permet de manipuler le champ "environment" à l'aide d'une logique d'expression régulière.

Si le modèle d'expression régulière est nul ou vide, ou si la valeur de l'environnement est nulle, l'environnement final est l'environnement par défaut.

Script Timeout (Seconds) Obligatoire

Délai avant expiration du processus Python exécutant le script actuel.

La valeur par défaut est de 180 secondes.

Server Address Obligatoire

Adresse du serveur de l'instance Splunk.

La valeur par défaut est https://:8089.

Username Optional

Nom d'utilisateur du compte Splunk.

Password Optional

Mot de passe du compte Splunk.

API Token Obligatoire

Jeton d'API Splunk.

Si ce champ contient une valeur, le jeton API est prioritaire par rapport aux autres méthodes d'authentification.

Lowest Urgency To Fetch Obligatoire

Niveau d'urgence le plus faible utilisé pour récupérer les événements notables.

Les valeurs possibles sont les suivantes :

  • Informational
  • Low
  • Medium
  • High
  • Critical

La valeur par défaut est Medium.

Fetch Max Hours Backwards Optional

Nombre d'heures dans le passé à partir desquelles récupérer les événements notables.

La valeur par défaut est de 1 heure.

Only Drilldown Events Optional

Si cette option est activée, le connecteur tente de récupérer les événements d'analyse sans récupérer les événements de base. Ce paramètre nécessite que l'option Fetch Base Events soit activée.

Désactivé par défaut

Padding Time Optional

Nombre d'heures à utiliser comme marge intérieure.

Si aucune valeur n'est fournie, ce paramètre ne s'applique pas.

La valeur maximale est de 12 heures.

Max Notable Events To Fetch Optional

Nombre d'événements notables à traiter par itération de connecteur.

La valeur par défaut est 10.

Use whitelist as a blacklist Obligatoire

Si elle est activée, la liste dynamique est utilisée comme liste de blocage.

Désactivé par défaut

Verify SSL Obligatoire

Si cette option est cochée, vérifie que le certificat SSL de la connexion au serveur CrowdStrike est valide.

Cette option est décochée par défaut.

Proxy Server Address Optional

Adresse du serveur proxy à utiliser.

Proxy Username Optional

Nom d'utilisateur du proxy pour l'authentification.

Proxy Password Optional

Mot de passe du proxy pour l'authentification.

Query Filter Optional

Filtre de requête supplémentaire envoyé à Splunk pour obtenir des événements notables.

La valeur fournie ici est ajoutée à la clause de requête WHERE.

Extract Base Events Optional

Si cette option est activée, le connecteur extrait les événements de base liés à l'événement notable à l'aide des informations sur le job. Dans les autres cas, le connecteur crée un événement Google SecOps basé sur l'événement notable.

Si ce paramètre est défini sur True, mais que le connecteur ne peut pas fonctionner avec les jobs, il utilise les informations sur les événements notables comme mécanisme de secours.

Cette option est activée par défaut.

Multivalue Fields Optional

Liste de champs séparés par une virgule contenant plusieurs entités.

Par exemple, si un champ contient deux noms d'hôte, l'événement notable est divisé en deux événements Google SecOps pour mapper correctement les entités.

Notable Event Data Along Base Event Optional

Si cette option est activée, le connecteur ajoute des événements Google SecOps en fonction de l'événement notable, en plus des événements de base.

Désactivé par défaut

Rule Generator Field Name Optional

Nom du champ utilisé pour mapper la valeur du générateur de règles.

Seules les informations sur l'événement notable lui-même sont utilisées pour le mappage. Les événements sont ignorés. Si une valeur non valide est fournie, le connecteur définit le champ sur la valeur rule_name.

Alert Name Source Optional

Source du nom de l'alerte.

Les valeurs possibles sont les suivantes :

  • Search Name
  • Rule Name

La valeur par défaut est Search Name.

Alert Start Time Field Optional

Champ de l'événement notable Splunk à utiliser comme start_time de l'alerte.

Si le champ est vide, non valide ou ne peut pas être analysé en tant que code temporel, le connecteur revient au comportement par défaut en utilisant le champ _time.

Utiliser le paramètre Query Filter

Si vous devez affiner les événements notables en fonction de paramètres spécifiques, utilisez le paramètre Query Filter. La valeur fournie dans ce paramètre est ajoutée à la clause WHERE de la requête envoyée pour obtenir les événements notables.

Voici un exemple de requête envoyée :

(`get_notable_index` OR `get_sequenced_index`) | eval `get_event_id_meval`,
rule_id=event_id | tags outputfield=tag | `mvappend_field(tag,orig_tag)` |
`notable_xref_lookup` | `get_correlations` | `get_current_status` | `get_owner`
| `get_urgency` | typer | where (urgency="medium" AND urgency="low") AND
(status_label="Unassigned" OR status_label="New")  | tail 50 | fields *

Par exemple, si Query Filter = isTesting = True, la requête s'affiche comme suit :

search (`get_notable_index` OR `get_sequenced_index`) | eval epoch=_time | eval
`get_event_id_meval`,rule_id=event_id | tags outputfield=tag |
`mvappend_field(tag,orig_tag)` | `notable_xref_lookup` | `get_correlations` |
`get_current_status` | `get_owner` | `get_urgency` | typer | where
(urgency!="informational" AND urgency!="low" **AND isTesting = "True"**) |
fields *

Règles du connecteur

Le connecteur Splunk ES utilise une liste dynamique et une liste de blocage (whitelist et blacklist). Le connecteur utilise le champ search_name de l'événement pour le comparer à la liste dynamique.

Événement de connecteur

[{
    "indicator": "2012/06/29_21:50", 
    "tlp": "TLP:RED", 
    "itype": "mal_url", 
    "severity": "very-high", 
    "classification": "public", 
    "detail": "", 
    "confidence": 50, 
    "actor": "", 
    "feed_name": "import", 
    "source": "admin", 
    "feed_site_netloc": "localhost", 
    "campaign": "", 
    "type": "url", 
    "id": "anomali:indicator-578a9be5-0e03-4ec0-940d-4b1842f40fd0", 
    "date_last": "2020-07-15 08:12:07 AM",
"Url": "indicator"
  },{
    "indicator": "2010/12/19_16:35", 
    "tlp": "TLP:RED", 
    "itype": "mal_url", 
    "severity": "very-high", 
    "classification": "public", 
    "detail": "", 
    "confidence": 50, 
    "actor": "", 
    "feed_name": "import", 
    "source": "admin", 
    "feed_site_netloc": "localhost", 
    "campaign": "", 
    "type": "url", 
    "id": "anomali:indicator-52cadd07-330a-45fd-962f-32e22d36a89a", 
    "date_last": "2020-07-15 08:12:07 AM"
  }]

Jobs

Pour en savoir plus sur les jobs, consultez Configurer un nouveau job et Planification avancée.

Synchroniser les événements Splunk ES fermés

Synchronise les événements notables Splunk ES fermés et les alertes Google SecOps.

Paramètres

Nom à afficher du paramètre Type Valeur par défaut Est obligatoire Description
Adresse du serveur Chaîne https://IP:8089 Oui Adresse du serveur de l'instance Splunk.
Nom d'utilisateur Chaîne N/A Non Nom d'utilisateur du compte Splunk.
Mot de passe Mot de passe N/A Non Mot de passe du compte Splunk.
Jeton d'API Mot de passe N/A Oui Jeton d'API Splunk. Le jeton API est prioritaire par rapport aux autres méthodes d'authentification lorsque ce champ n'est pas vide.
Nombre maximal d'heures en arrière Integer 24 Oui Spécifiez le nombre d'heures de synchronisation des états. Par défaut : 24 heures.
Vérifier le protocole SSL Case à cocher Cochée Oui Si cette option est activée, vérifiez que le certificat SSL de la connexion au serveur Splunk est valide.

Synchroniser les commentaires Splunk ES

Ce job synchronisera les commentaires dans les événements Splunk ES et les demandes Google SecOps.

Paramètres

Nom à afficher du paramètre Type Valeur par défaut Est obligatoire Description
Adresse du serveur Chaîne https://IP:8089 Oui Adresse du serveur de l'instance Splunk.
Nom d'utilisateur Chaîne N/A Non Nom d'utilisateur du compte Splunk.
Mot de passe Mot de passe N/A Non Mot de passe du compte Splunk.
Jeton d'API Mot de passe N/A Oui Jeton d'API Splunk. Le jeton API est prioritaire par rapport aux autres méthodes d'authentification lorsque ce champ n'est pas vide.
Vérifier le protocole SSL Case à cocher Cochée Oui Si cette option est activée, vérifiez que le certificat SSL de la connexion au serveur Splunk est valide.

Vous avez encore besoin d'aide ? Obtenez des réponses de membres de la communauté et de professionnels Google SecOps.