Intégrer OpenSearch à Google SecOps
Ce document explique comment intégrer OpenSearch à Google Security Operations.
Cas d'utilisation
L'intégration OpenSearch répond aux cas d'utilisation d'orchestration et d'investigation de sécurité suivants :
Chasse aux menaces automatisée : recherchez régulièrement des indicateurs de compromission spécifiques ou des schémas suspects dans tous les index OpenSearch à l'aide de requêtes Lucene et DSL.
Ingestion centralisée des alertes : ingérez des documents d'OpenSearch en tant qu'alertes exploitables dans Google SecOps, afin de vous assurer que les événements de sécurité de votre lac de données sont priorisés et examinés.
Récupération de données contextuelles : enrichissez les cas de sécurité existants en extrayant automatiquement les journaux ou les données historiques associés d'OpenSearch pour fournir aux analystes un contexte plus approfondi lors d'une investigation.
Mappage de données flexible : mappez de manière dynamique les niveaux de gravité et les tags d'environnement des documents OpenSearch aux normes Google SecOps pour assurer la cohérence entre les différentes sources de journaux.
Avant de commencer
Avant de configurer l'intégration dans la plate-forme Google SecOps, vérifiez que vous disposez des éléments suivants :
Fichier de certificat CA : fichier d'autorité de certification valide pour sécuriser la connexion.
Dernière version de l'intégration : assurez-vous d'utiliser la version la plus récente de l'intégration OpenSearch.
Certificat encodé en base64 : le contenu de votre fichier de certificat CA doit être converti en chaîne base64 avant la configuration.
Pour configurer l'intégration avec un certificat CA, procédez comme suit :
- Ouvrez la page des paramètres de configuration de l'intégration.
- Collez la chaîne encodée en base64 dans le champ Fichier de certificat CA.
- Cochez la case Vérifier le protocole SSL.
- Cliquez sur Test (Tester) pour vérifier que l'intégration est correctement configurée.
Paramètres d'intégration
L'intégration OpenSearch nécessite les paramètres suivants :
| Paramètre | Description |
|---|---|
Server Address |
Obligatoire. URL du point de terminaison de l'instance OpenSearch, y compris le protocole et le port (par exemple, |
Username |
Facultatif. Nom d'utilisateur utilisé pour s'authentifier auprès de l'instance OpenSearch. |
Password |
Facultatif. Mot de passe associé au nom d'utilisateur spécifié. |
API Token |
Facultatif. Jeton d'API utilisé pour l'authentification à la place d'un nom d'utilisateur et d'un mot de passe. |
Authenticate |
Facultatif. Si cette option est sélectionnée, l'intégration authentifie la connexion au serveur OpenSearch à l'aide des identifiants fournis. |
Verify SSL |
Facultatif. Si cette option est sélectionnée, l'intégration valide le certificat SSL lors de la connexion au serveur OpenSearch. |
CA Certificate File |
Facultatif. Contenu du fichier de certificat de l'autorité de certification au format PEM, utilisé pour valider le certificat SSL du serveur. |
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 en savoir plus sur la configuration et la prise en charge de plusieurs instances, consultez Prendre en charge plusieurs instances.
Actions
Pour en savoir plus sur les actions, consultez Répondre aux actions en attente depuis votre bureau et Exécuter une action manuelle dans votre demande.
Recherche avancée dans ES
Utilisez l'action Recherche ES avancée pour exécuter une requête de recherche préconfigurée sur le serveur OpenSearch et récupérer les résultats au format dictionnaire.
Cette action ne s'exécute pas sur les entités Google SecOps.
Entrées de l'action
L'action Recherche ES avancée nécessite les paramètres suivants :
| Paramètre | Description |
|---|---|
Index |
Facultatif. Modèle de recherche pour l'index OpenSearch (par exemple, La valeur par défaut est |
Query |
Facultatif. Requête de recherche à effectuer à l'aide de la syntaxe Lucene (par exemple, La valeur par défaut est |
Limit |
Facultatif. Nombre maximal de documents à renvoyer. Définissez cette valeur sur La valeur par défaut est |
Display Field |
Facultatif. Liste de champs spécifiques à renvoyer, séparés par une virgule. La valeur par défaut est |
Search Field |
Facultatif. Champ spécifique à rechercher lorsque La valeur par défaut est |
Timestamp Field |
Facultatif. Nom du champ utilisé pour le filtrage basé sur le temps. Si La valeur par défaut est |
Oldest Date |
Facultatif. Date de début de la recherche. L'action renvoie les enregistrements qui se sont produits à cet horodatage ou après. Vous pouvez fournir un code temporel UTC exact ( La valeur par défaut est |
Earliest Date |
Facultatif. Date de fin de la recherche. L'action renvoie les enregistrements qui se sont produits à cette date et heure ou avant. Vous pouvez fournir un code temporel UTC exact ( La valeur par défaut est |
Sorties de l'action
L'action Recherche ES avancée fournit les résultats suivants :
| Type de sortie de l'action | Disponibilité |
|---|---|
| Pièce jointe du mur des cas | Non disponible |
| Lien vers le mur des cas | Non disponible |
| Tableau du mur des cas | Non disponible |
| Table d'enrichissement | Non disponible |
| Résultat JSON | Non disponible |
| Messages de sortie | Disponible |
| Résultat du script | Disponible |
Résultat du script
Le tableau suivant liste la valeur de la sortie du résultat du script lorsque vous utilisez l'action Recherche ES avancée :
| Nom du résultat du script | Valeur |
|---|---|
results |
RESULTS |
Recherche DSL
Utilisez l'action Recherche DSL pour effectuer une recherche complète dans tous les index OpenSearch et récupérer les résultats au format dictionnaire.
Cette action ne s'exécute pas sur les entités Google SecOps.
Entrées de l'action
L'action Recherche DSL nécessite les paramètres suivants :
| Paramètre | Description |
|---|---|
Index |
Facultatif. Modèle de recherche pour l'index OpenSearch (par exemple, La valeur par défaut est |
Query |
Facultatif. Requête de recherche à effectuer à l'aide de la syntaxe Lucene (par exemple, La valeur par défaut est |
Limit |
Facultatif. Nombre maximal de documents à renvoyer. Définissez cette valeur sur La valeur par défaut est |
Sorties de l'action
L'action Recherche DSL fournit les résultats suivants :
| Type de sortie de l'action | Disponibilité |
|---|---|
| Pièce jointe du mur des cas | Non disponible |
| Lien vers le mur des cas | Non disponible |
| Tableau du mur des cas | Non disponible |
| Table d'enrichissement | Non disponible |
| Résultat JSON | Disponible |
| Messages de sortie | Disponible |
| Résultat du script | Disponible |
Résultat JSON
L'exemple suivant montre le résultat JSON reçu lors de l'utilisation de l'action Recherche DSL :
[
{
"_score": 0.2876821,
"_type": "person",
"_id": "2",
"_source": {
"lastname": "Smith",
"name": "John",
"job_description": "Systems administrator"
},
"_index": "accounts"
}, {
"_score": 0.28582606,
"_type": "person",
"_id": "1",
"_source":
{
"lastname": "Doe",
"name": "John",
"job_description": "Systems administrator and Linux specialist"
},
"_index": "accounts"
}
]
Résultat du script
Le tableau suivant liste la valeur de la sortie du résultat du script lors de l'utilisation de l'action Recherche DSL :
| Nom du résultat du script | Valeur |
|---|---|
results |
RESULTS |
Ping
Utilisez l'action Ping pour tester la connectivité à OpenSearch.
Cette action ne s'exécute pas sur les entités Google SecOps.
Entrées de l'action
Aucune.
Sorties de l'action
L'action Ping fournit les résultats suivants :
| Type de sortie de l'action | Disponibilité |
|---|---|
| Pièce jointe du mur des cas | Non disponible |
| Lien vers le mur des cas | Non disponible |
| Tableau du mur des cas | Non disponible |
| Table d'enrichissement | Non disponible |
| Résultat JSON | Non disponible |
| Messages de sortie | Disponible |
| Résultat du script | Disponible |
Résultat du script
Le tableau suivant répertorie la valeur de la sortie du résultat du script lorsque vous utilisez l'action Ping :
| Nom du résultat du script | Valeur |
|---|---|
| is_success | true ou false |
Recherche ES simple
Utilisez l'action Recherche ES simple pour effectuer une recherche de base dans tous les champs indexés d'OpenSearch et récupérer les résultats au format dictionnaire.
Cette action ne s'exécute pas sur les entités Google SecOps.
Entrées de l'action
L'action Recherche ES simple nécessite les paramètres suivants :
| Paramètre | Description |
|---|---|
Index |
Facultatif. Modèle de recherche pour l'index OpenSearch (par exemple, La valeur par défaut est |
Query |
Facultatif. Requête de recherche à effectuer à l'aide de la syntaxe Lucene (par exemple, La valeur par défaut est |
Limit |
Facultatif. Nombre maximal de documents à renvoyer. Définissez cette valeur sur La valeur par défaut est |
Sorties de l'action
L'action Recherche ES simple fournit les résultats suivants :
| Type de sortie de l'action | Disponibilité |
|---|---|
| Pièce jointe du mur des cas | Non disponible |
| Lien vers le mur des cas | Non disponible |
| Tableau du mur des cas | Non disponible |
| Table d'enrichissement | Non disponible |
| Résultat JSON | Disponible |
| Messages de sortie | Disponible |
| Résultat du script | Disponible |
Résultat JSON
L'exemple suivant montre le résultat JSON reçu lors de l'utilisation de l'action Simple ES Search :
[{
"_score": 0.2876821,
"_type": "person",
"_id": "2",
"_source":
{
"lastname": "Smith",
"name": "John",
"job_description": "Systems administrator"
},
"_index": "accounts"
},
{
"_score": 0.28582606,
"_type": "person",
"_id": "1",
"_source":
{
"lastname": "Doe",
"name": "John",
"job_description": "Systems administrator and Linux specialist"
},
"_index": "accounts"
}
]
Résultat du script
Le tableau suivant liste la valeur de la sortie du résultat du script lors de l'utilisation de l'action Recherche ES simple :
| Nom du résultat du script | Valeur |
|---|---|
results |
RESULTS |
Connecteurs
Pour en savoir plus sur la configuration des connecteurs dans Google SecOps, consultez Ingérer vos données (connecteurs).
Connecteur OpenSearch
Utilisez le connecteur OpenSearch pour rechercher des index OpenSearch spécifiés à l'aide d'une requête Lucene fournie et ingérer des documents en tant qu'alertes dans Google SecOps.
Entrées du connecteur
Le connecteur OpenSearch nécessite les paramètres suivants :
| Paramètre | Description |
|---|---|
Product Field Name |
Obligatoire. Nom du champ dans lequel le nom du produit est stocké. Le nom du produit a principalement un impact sur le mappage. Pour simplifier et améliorer le processus de mappage du connecteur, la valeur par défaut est résolue en une valeur de remplacement référencée à partir du code. Toute entrée non valide pour ce paramètre est résolue par défaut en une valeur de remplacement. La valeur par défaut est |
Event Field Name |
Obligatoire. Nom du champ qui détermine le nom de l'événement (sous-type). La valeur par défaut est |
Script Timeout (Seconds) |
Obligatoire. Délai avant expiration, en secondes, du processus Python qui exécute le script actuel. La valeur par défaut est |
Server Address |
Obligatoire. URL du point de terminaison de l'instance OpenSearch, y compris le protocole et le port (par exemple, |
Username |
Facultatif. Nom d'utilisateur utilisé pour s'authentifier auprès de l'instance OpenSearch. |
Password |
Facultatif. Mot de passe associé au nom d'utilisateur spécifié. |
Authenticate |
Facultatif. Si cette option est sélectionnée, l'intégration authentifie la connexion au serveur OpenSearch à l'aide des identifiants fournis. |
API Token |
Facultatif. Jeton d'API utilisé pour l'authentification à la place d'un nom d'utilisateur et d'un mot de passe. |
Verify SSL |
Facultatif. Si cette option est sélectionnée, l'intégration valide le certificat SSL lors de la connexion au serveur OpenSearch. |
Alert Name Field |
Obligatoire. Nom du champ contenant le nom de l'alerte (par exemple, |
Timestamp Field |
Obligatoire. Nom du champ contenant le code temporel (par exemple, |
Environment Field Name |
Facultatif. Nom du champ dans lequel le nom de l'environnement est stocké. Si le champ "environment" n'est pas renseigné, le connecteur utilise la valeur par défaut. La valeur par défaut est |
Indexes |
Facultatif. Le modèle d'index à rechercher. Utilisez |
Query |
Facultatif. Requête de recherche à effectuer à l'aide de la syntaxe Lucene. |
Alerts Count Limit |
Obligatoire. Nombre maximal d'alertes à extraire en un seul cycle. La valeur par défaut est |
Max Days Backwards |
Obligatoire. Nombre de jours avant la date actuelle pour récupérer les alertes. Ce paramètre peut s'appliquer à l'itération initiale du connecteur après sa première activation, ou à la valeur de remplacement d'un code temporel de connecteur expiré. La valeur par défaut est |
Severity Field Name |
Facultatif. Nom du champ utilisé pour extraire la valeur de gravité de l'alerte. Si le champ contient des valeurs numériques (entiers ou flottants), le connecteur les mappe automatiquement aux niveaux de gravité Google SecOps (par exemple, |
Proxy Server Address |
Facultatif. Adresse du serveur proxy à utiliser. |
Proxy Username |
Facultatif. Nom d'utilisateur permettant de s'authentifier auprès du serveur proxy. |
Proxy Password |
Facultatif. Mot de passe utilisé pour s'authentifier auprès du serveur proxy. |
Environment Regex Pattern |
Facultatif. Modèle d'expression régulière à exécuter sur la valeur trouvée dans le champ Utilisez la valeur par défaut 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. |
Connecteur OpenSearch DSL
Utilisez le connecteur DSL OpenSearch pour ingérer des documents en tant qu'alertes dans Google SecOps en effectuant des appels d'API REST à l'aide de requêtes DSL (Domain Specific Language).
Entrées du connecteur
Le connecteur OpenSearch DSL nécessite les paramètres suivants :
| Paramètre | Description |
|---|---|
Product Field Name |
Obligatoire. Nom du champ dans lequel le nom du produit est stocké. Le nom du produit a principalement un impact sur le mappage. Pour simplifier et améliorer le processus de mappage du connecteur, la valeur par défaut est résolue en une valeur de remplacement référencée à partir du code. Toute entrée non valide pour ce paramètre est résolue par défaut en une valeur de remplacement. La valeur par défaut est La valeur par défaut est |
Event Field Name |
Obligatoire. Nom du champ qui détermine le nom de l'événement (sous-type). La valeur par défaut est |
Script Timeout (Seconds) |
Obligatoire. Délai avant expiration, en secondes, du processus Python qui exécute le script actuel. La valeur par défaut est |
Server Address |
Obligatoire. URL du point de terminaison de l'instance OpenSearch, y compris le protocole (par exemple, |
Port |
Obligatoire. Port utilisé pour se connecter au serveur d'API OpenSearch. |
Query |
Obligatoire. Requête DSL utilisée pour la recherche au format JSON. Pour améliorer la stabilité du connecteur, nous vous recommandons d'inclure une clé d'horodatage de tri par ordre croissant dans votre requête. |
Index |
Obligatoire. Index utilisé pour la recherche. Utilisez |
Timestamp Field |
Obligatoire. Nom du champ contenant le code temporel (par exemple, |
Alert Field Name |
Obligatoire. Nom du champ contenant le nom de l'alerte (par exemple, |
Description Field |
Facultatif. Nom du champ contenant la description de l'alerte (par exemple, |
Severity |
Obligatoire. Niveau de gravité statique à attribuer à toutes les alertes ingérées. Ce paramètre est utilisé si La valeur par défaut est |
Alert Severity |
Facultatif. Gravité à attribuer aux alertes. Ce paramètre est prioritaire sur Si vous souhaitez utiliser le mappage dynamique à l'aide de |
Severity Field Name |
Facultatif. Nom du champ utilisé pour extraire la valeur de gravité de l'alerte. Si le champ contient des valeurs numériques (entiers ou flottants), le connecteur les mappe automatiquement aux niveaux de gravité Google SecOps (par exemple, |
Alerts Count Limit |
Facultatif. Nombre maximal d'alertes à extraire en un seul cycle. La valeur par défaut est |
Authenticate |
Facultatif. Si cette option est sélectionnée, le connecteur authentifie la connexion à l'aide des identifiants fournis. |
Username |
Facultatif. Nom d'utilisateur utilisé pour s'authentifier auprès de l'instance OpenSearch. |
Password |
Facultatif. Mot de passe utilisé pour l'authentification auprès de l'instance OpenSearch. |
Use SSL |
Facultatif. Si cette option est sélectionnée, le connecteur active une connexion SSL/TLS au serveur. |
Proxy Server Address |
Facultatif. Adresse du serveur proxy à utiliser pour la connexion. |
Proxy Username |
Facultatif. Nom d'utilisateur permettant de s'authentifier auprès du serveur proxy. |
Proxy Password |
Facultatif. Mot de passe utilisé pour s'authentifier auprès du serveur proxy. |
Environment Field Name |
Facultatif. Nom du champ dans lequel le nom de l'environnement est stocké. Si le champ "environment" n'est pas renseigné, le connecteur utilise la valeur par défaut. La valeur par défaut est |
Environment Regex Pattern |
Facultatif. Modèle d'expression régulière à exécuter sur la valeur trouvée dans le champ Utilisez la valeur par défaut 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. La valeur par défaut est |
Compatibilité avec la notation
Le connecteur accepte trois notations différentes pour le mappage de champs. Par exemple, pour mapper event.type, vous pouvez fournir _source_event_type, event_type ou event.type.
Cela s'applique aux paramètres suivants :
Product Field NameEvent Field NameSeverity Field NameEnvironment Field NameTimestamp FieldAlert Field NameDescription Field(connecteur DSL uniquement)
Mapper la gravité dans le connecteur
Si le Severity Field Name contient des valeurs numériques (entiers ou flottants), le connecteur les mappe comme suit :
- Critique : 100
- Élevé : 80 ≤ x < 100
- Moyenne : 60 ≤ x < 80
- Faible : 40 ≤ x < 60
- Informatif : x < 40
Pour les valeurs de chaîne, vous devez mettre à jour le fichier severity_map_config.json dans le dossier des scripts du connecteur.
Exemple de configuration
Pour mapper un champ event.severity contenant "Malicious", "Unknown" ou "Benign" :
- Saisissez
event.severitydans le paramètre Severity Field Name (Nom du champ de gravité). - Mettez à jour
severity_map_config.json:
{
"event.severity": {
"Malicious": 100,
"Unknown": 60,
"Benign": -1
},
"Default": 50
}
Vous avez encore besoin d'aide ? Obtenez des réponses de membres de la communauté et de professionnels Google SecOps.