Intégrer OpenSearch à Google SecOps
Version de l'intégration : 1.0
Ce document explique comment intégrer OpenSearch à Google Security Operations.
Cas d'utilisation
L'intégration OpenSearch répond aux cas d'utilisation suivants en matière d'orchestration et d'investigation de sécurité :
Chasse aux menaces automatisée : effectuez des recherches périodiques dans tous les index OpenSearch pour trouver des indicateurs de compromission (IoC) spécifiques ou des schémas suspects à l'aide de requêtes Lucene et DSL.
Ingestion centralisée des alertes : ingérez des documents depuis OpenSearch sous forme d'alertes exploitables dans Google SecOps. Vous vous assurez ainsi que les événements de sécurité de votre data lake sont priorisés et font l'objet d'une enquête.
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 à partir d'OpenSearch. Les analystes disposent ainsi d'un contexte plus approfondi lors d'une investigation.
Mappage flexible des données : mappez de manière dynamique les niveaux de gravité et les tags d'environnement des documents OpenSearch aux normes Google SecOps pour maintenir 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 dernière version de l'intégration OpenSearch.
Certificat encodé en Base64 : le contenu de votre fichier de certificat d'autorité de certification doit être converti en chaîne Base64 avant la configuration.
Pour configurer l'intégration avec un certificat d'autorité de certification, 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 de l'autorité de certification.
- Cochez la case Vérifier le protocole SSL.
- Cliquez sur Test 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 l'authentification 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 en remplacement 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 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 depuis Votre bureau et Effectuer une action manuelle.
Recherche avancée ES
Utilisez l'action Advanced ES Search (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'applique pas aux entités Google SecOps.
Entrées d'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 à exécuter à 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 temporel. 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 à cette heure 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 heure ou avant. Vous pouvez fournir un code temporel UTC exact ( La valeur par défaut est |
Sorties d'action
L'action Recherche ES avancée fournit les sorties suivantes :
| Type de sortie de l'action | Disponibilité |
|---|---|
| Pièce jointe au 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 Recherche ES avancée :
| Nom du résultat du script | Valeur |
|---|---|
results |
RESULTS |
Recherche DSL
Utilisez l'action DSL Search 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'applique pas aux entités Google SecOps.
Entrées d'action
L'action DSL Search 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 à exécuter à 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 d'action
L'action Recherche DSL fournit les sorties suivantes :
| Type de sortie de l'action | Disponibilité |
|---|---|
| Pièce jointe au 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 DSL 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 répertorie la valeur de la sortie du résultat du script lorsque vous utilisez 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'applique pas aux entités Google SecOps.
Entrées d'action
Aucune.
Sorties d'action
L'action Ping fournit les résultats suivants :
| Type de sortie de l'action | Disponibilité |
|---|---|
| Pièce jointe au 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 du résultat du script lorsque vous utilisez l'action Ping :
| Nom du résultat du script | Valeur |
|---|---|
| is_success | true ou false |
Recherche simple ES
Utilisez l'action Simple ES Search (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'applique pas aux entités Google SecOps.
Entrées d'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 à exécuter à 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 d'action
L'action Simple ES Search fournit les sorties suivantes :
| Type de sortie de l'action | Disponibilité |
|---|---|
| Pièce jointe au 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 répertorie la valeur de la sortie du résultat du script lorsque vous utilisez l'action Simple ES Search :
| Nom du résultat du script | Valeur |
|---|---|
results |
RESULTS |
Connecteurs
Pour savoir comment configurer des connecteurs dans Google SecOps, consultez Ingérer vos données (connecteurs).
Connecteur OpenSearch
Utilisez le connecteur OpenSearch pour rechercher des index OpenSearch spécifiques à 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 en une valeur de remplacement par défaut. La valeur par défaut est |
Event Field Name |
Obligatoire. Nom du champ qui détermine le nom (sous-type) de l'événement. 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 l'authentification 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 en remplacement 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 l'horodatage (par exemple, |
Environment Field Name |
Facultatif. Nom du champ dans lequel le nom de l'environnement est stocké. Si le champ "environment" (environnement) est manquant, le connecteur utilise la valeur par défaut. La valeur par défaut est |
Indexes |
Facultatif. Modèle d'index à rechercher. Utilisez |
Query |
Facultatif. Requête de recherche à exécuter à 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 précédant la date actuelle pour récupérer les alertes. Ce paramètre peut s'appliquer à l'itération initiale du connecteur après l'avoir activé pour la première fois, ou à la valeur de remplacement pour 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 nombres à virgule flottante), 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 utilisé pour 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, l'environnement par défaut est sélectionné. |
Connecteur DSL OpenSearch
Utilisez le connecteur OpenSearch DSL 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 DSL 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 en une valeur de remplacement par défaut. La valeur par défaut est La valeur par défaut est |
Event Field Name |
Obligatoire. Nom du champ qui détermine le nom (sous-type) de l'événement. 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 de l'API OpenSearch. |
Query |
Obligatoire. Requête DSL utilisée pour la recherche au format JSON. Pour améliorer la stabilité du connecteur, il est recommandé 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 l'horodatage (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 avec |
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 nombres à virgule flottante), 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 l'authentification 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 utilisé pour 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" (environnement) est manquant, 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, l'environnement par défaut est sélectionné. La valeur par défaut est |
Compatibilité avec la notation
Le connecteur accepte trois notations différentes pour le mappage des 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 Severity Field Name contient des valeurs numériques (entiers ou nombres à virgule flottante), le connecteur les mappe comme suit :
- Critique : 100
- Élevée : 80 ≤ x < 100
- Moyenne : 60 ≤ x < 80
- Faible : 40 ≤ x < 60
- Information : 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 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.