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 satisfait toutes les dépendances, tous les chemins réseau et toutes les autorisations d'accès requis.
Google SecOps est compatible avec deux méthodes d'ingestion :
Ingestion basée sur le push : Splunk évalue les alertes en local et envoie 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 en mode pull : les connecteurs Google SecOps interrogent périodiquement 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 basée sur le 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 que les conditions suivantes sont remplies avant de configurer l'ingestion basée sur le push :
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 Search Head à l'aide de Splunk Deployer ou du serveur de déploiement.
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 journaux et les alertes modulaires.
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.
Vérifiez que vous disposez d'un compte Google SecOps avec des autorisations d'administrateur pour générer des clés API (Paramètres > Avancés > API). Assurez-vous que la clé API générée est associée à un rôle disposant des autorisations de création d'alertes et de demandes.
Si vous prévoyez d'ingérer des événements bruts à partir de recherches transformées (par exemple, des recherches utilisant
stats,chartoutimechart), assurez-vous quedispatch.buckets = 1est configuré danssavedsearches.confsur vos Search Heads.
Ingestion basée sur l'extraction
L'ingestion basée sur l'extraction, les actions de playbook et les jobs de synchronisation nécessitent Google SecOps (ou un agent à distance) pour établir des connexions administratives entrantes à Splunk.
Vérifiez que vous remplissez les conditions suivantes avant de configurer des connecteurs, des actions ou des jobs de type "pull" :
Connectivité réseau : vérifiez la visibilité réseau de Google SecOps (ou de votre agent distant) vers le port de l'API REST de gestion Splunk (par défaut :
8089/TCP).Certificat CA personnalisé : si votre instance Splunk utilise un certificat CA privé ou interne, vérifiez que vous exécutez l'intégration Splunk version 26.0 ou ultérieure dans Google SecOps.
Authentification : obtenez des identifiants utilisateur Splunk valides (nom d'utilisateur et mot de passe) ou générez un jeton Splunk Bearer (pour activer cette méthode d'authentification sur la plate-forme Splunk, l'authentification par jeton est requise).
Autorisations du rôle Splunk : assurez-vous que le compte Splunk utilisé pour l'authentification dispose d'un rôle avec les autorisations suivantes :
searchschedule_searchedit_tcp(obligatoire uniquement si vous utilisez l'action Envoyer l'événement)edit_notable_events(obligatoire uniquement si vous utilisez l'action Mettre à jour les événements notables ou les jobs de synchronisation Splunk ES)
Autorisations de datastore et de recherche : vérifiez que le compte d'authentification a accès aux datastores Splunk pertinents pour les composants que vous avez choisis :
- Connecteur Splunk pour l'extraction : autorisations de lecture pour le tableau de conversion
siemplify_alerts(rempli lorsqueTA-Siemplifyest 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écessitent pas
TA-Siemplify). - Autorisations d'écriture et de saisie sur l'index cible si vous utilisez l'action Envoyer un événement.
- Autorisations de recherche sur les index d'événements cibles (ne nécessitent pas
- Connecteur et jobs d'événements notables Splunk ES : une installation active de Splunk Enterprise Security (ES), des autorisations de lecture pour l'index
notableet l'accès à la macroget_notable_index(ne nécessite pasTA-Siemplify).
- Connecteur Splunk pour l'extraction : autorisations de lecture pour le tableau de conversion
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 | 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. Lorsque ce champ n'est pas vide, le jeton API est prioritaire par rapport aux autres méthodes d'authentification. |
| 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 obtenir des instructions sur la configuration d'une intégration dans Google SecOps, consultez Configurer des intégrations.
Vous pourrez apporter des modifications ultérieurement, si nécessaire. Une fois que vous avez 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 dans Votre bureau et Effectuer une action manuelle.
Récupérer 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 | Obligatoire | Description |
|---|---|---|---|---|
| Limite 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 lors de la recherche d'événements liés à l'hôte. Si rien n'est fourni, l'action n'utilisera pas l'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 : "Aucun événement n'a été trouvé pour les hôtes suivants dans Splunk :\n {0}".format(entity.identifier) Si l'opération aboutit 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 ou autre) : "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". Motif : {0}''.format(messages/text) |
Général |
| Table 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 : L'action doit échouer et arrêter l'exécution d'un playbook : |
Général |
Splunk Csv Viewer
Paramètres
| Paramètre | Type | Valeur par défaut | 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 | Obligatoire | Description |
|---|---|---|---|---|
| Mode Recherche | LDD | Intelligente Valeurs possibles :
|
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. |
| Résultats de | Chaîne | Il y a 24 h | Non | Spécifiez l'heure de début de la requête. 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. |
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 la requête aboutit, mais qu'aucun résultat n'est disponible : "Aucun résultat n'a été trouvé pour la requête "{0}" dans 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 : Si une erreur fatale se produit, comme des identifiants incorrects, une absence de connexion au serveur, etc. : "Erreur lors de l'exécution de l'action "SplunkQuery". Motif : {0}''.format(error.Stacktrace) Si le code d'erreur est 400 : "Erreur lors de l'exécution de l'action "SplunkQuery". Motif : {0}''.format(messages/text) |
Général |
| Table du mur des cas | Nom : Résultats de la requête Splunk Colonnes : en fonction des résultats. |
Général |
Envoyer un événement
Envoyez un événement à Splunk.
Paramètres
| Nom à afficher du paramètre | Type | Valeur par défaut | 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 succès : "Un événement a bien été ajouté à l'index "{0}" dans Splunk.".format(index) 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 "Envoyer un événement". Motif : {0}''.format(error.Stacktrace) Si le code d'erreur est 400 : "Erreur lors de l'exécution de l'action "Envoyer l'événement". Motif : {0}''.format(messages/text) |
Général |
Mettre à jour les grands événements
Mettez à jour les événements notables dans Splunk ES.
Paramètres
| Nom à afficher du paramètre | Type | Valeur par défaut | Obligatoire | Description |
|---|---|---|---|---|
| ID des é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 | Indiquez le nouveau niveau d'urgence de l'événement notable. |
| Nouveau propriétaire | Chaîne | N/A | Oui | Indiquez le nouveau propriétaire de l'événement notable. |
| Commentaire | Chaîne | N/A | Oui | Indiquez le commentaire pour 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 : Si une erreur fatale s'est produite (par exemple, des identifiants incorrects, aucune connexion au serveur, etc.) : print "Error executing action "Update Notable Events". Motif : {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 facilement des informations sur les entités.
Par exemple, vous pouvez résoudre le cas d'utilisation dans lequel vous souhaitez voir le nombre d'événements des points de terminaison concernés par les hachages fournis sans créer de requêtes complexes. 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 "Execute Entity Query" (Exécuter une requête d'entité), vous devez renseigner les paramètres de l'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 multi-entités | ET |
Vous pouvez laisser tous les autres champs vides.
Si le cas d'utilisation consiste à déterminer le nombre de points de terminaison affectés par les hachages fournis, la configuration de "Execute Entity Query" (Exécuter une requête d'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 | Obligatoire | Description |
|---|---|---|---|---|
| Mode Recherche | LDD | Intelligente Valeurs possibles :
|
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 24 h | Non | Spécifiez l'heure de début de la requête. 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. |
| 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 "Nom d'hôte" 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 "Hachage de fichier". Pour en savoir plus, veuillez consulter la documentation de l'action. |
| Clé de l'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 URL. Pour en savoir plus, veuillez consulter 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 "Adresse e-mail". Pour en savoir plus, veuillez consulter 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 hachages de fichier dans le champ d'application, l'action n'exécutera pas la requête si ce paramètre est activé. |
| Opérateur multi-entités | 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'applique aux 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 la requête aboutit, mais qu'aucun résultat n'est disponible : "Aucun résultat n'a été trouvé pour la requête "{0}" dans Splunk".format(query) Message asynchrone : "En attente de l'exécution de la requête {0}".format(nom de la requête) 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 est 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 : 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 "Exécuter une requête d'entité". Motif : {0}''.format(error.Stacktrace) Si le code d'erreur est 400 : "Erreur lors de l'exécution de l'action "Exécuter la requête d'entité". Motif : {0}''.format(messages/text) |
Général |
| Table du mur des cas | Nom : Résultats de la requête Splunk 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).
Splunk Query Connector
Le connecteur envoie les requêtes qui font partie de la liste dynamique (whitelist), récupère les résultats et crée une demande en fonction des résultats obtenus.
Exemples de requêtes Splunk pour afficher les journaux
Les requêtes doivent être saisies en tant que règles de la liste dynamique (
whitelist).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).Si vous utilisez plusieurs règles de liste dynamique (
whitelist) au lieu de saisir plusieurs filtres de recherche délimité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_modactionssourcetype=modular_alerts:send_data_to_siemplifyindex=_internal sourcetype=splunkdcomponent=sendmodalertaction=send_data_to_siemplifyindex=_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 La valeur par défaut est |
Event Field Name |
Obligatoire
Saisissez le nom du champ source pour récupérer le nom La valeur par défaut est |
API Root |
Obligatoire
Racine de l'API de l'instance Splunk. La valeur par défaut est |
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, elle vérifie que le certificat SSL de la connexion au serveur CrowdStrike est valide. (case 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 La valeur par défaut Ce paramètre vous permet de manipuler le champ "environment" à l'aide de la 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. |
Règles du connecteur
Le connecteur est compatible avec le proxy.
Splunk Pull Connector
transférer les alertes et é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 La valeur par défaut est |
Event Field Name |
Obligatoire
Saisissez le nom du champ source pour récupérer le nom La valeur par défaut est |
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 La valeur par défaut Ce paramètre vous permet de manipuler le champ "environment" à l'aide de la 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 de l'API Splunk. |
Port |
Obligatoire
Port de l'instance Splunk. La valeur par défaut est |
Username |
Obligatoire
Nom d'utilisateur du compte Splunk. |
Password |
Obligatoire
Mot de passe du compte Splunk. |
Time Frame |
Optional
Période pour récupérer les alertes. La valeur par défaut est de 1 heure. Exemples : Si la valeur est définie sur une minute, le connecteur récupère les alertes à partir d'une minute avant. 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, 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. (case 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 le proxy.
Connecteur d'événements notables Splunk ES
Ingérez les événements notables depuis Splunk ES.
Définir la priorité d'une 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 La valeur par défaut est |
Event Field Name |
Obligatoire
Saisissez le nom du champ source pour récupérer le nom La valeur par défaut est |
Environment Field Name |
Optional
Nom du champ dans lequel le nom de l'environnement est stocké. Si le champ d'environnement n'est pas trouvé, 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 La valeur par défaut Ce paramètre vous permet de manipuler le champ "environment" à l'aide de la 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 |
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 d'API est prioritaire sur les 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 :
La valeur par défaut est |
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 Désactivé par défaut |
Padding Time |
Optional
Nombre d'heures qui seront utilisées comme marge intérieure. Si aucune valeur n'est fournie, ce paramètre n'est pas applicable. 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 cette option 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, elle vérifie que le certificat SSL de la connexion au serveur CrowdStrike est valide. (case 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 les é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 d'informations sur le job. Dans le cas contraire, le connecteur crée un événement Google SecOps en fonction de l'événement notable. Si ce paramètre est défini sur Cette option est activée par défaut. |
Multivalue Fields |
Optional
Liste de champs séparés par une virgule et 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
S'il est activé, 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 la mise en correspondance. Les autres événements sont ignorés. Si une valeur non valide est fournie, le connecteur définit le champ sur la valeur |
Alert Name Source |
Optional
Source du nom de l'alerte. Les valeurs possibles sont les suivantes :
La valeur par défaut est |
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 des listes dynamiques et des listes de blocage (whitelist et blacklist). Il 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 job et Planification avancée.
Synchroniser les événements fermés Splunk ES
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 | 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. Lorsque ce champ n'est pas vide, le jeton API est prioritaire par rapport aux autres méthodes d'authentification. |
| Nombre maximal d'heures en arrière | Integer | 24 | Oui | Spécifiez le nombre d'heures en arrière pour synchroniser les é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 synchronise 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 | 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. Lorsque ce champ n'est pas vide, le jeton API est prioritaire par rapport aux autres méthodes d'authentification. |
| 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 auprès des membres de la communauté et des professionnels Google SecOps.