Collecter les journaux Oracle Cloud Infrastructure – Oracle Cloud Guard
Ce document explique comment configurer Oracle Cloud Infrastructure Cloud Guard pour envoyer des journaux à Google Security Operations à l'aide de webhooks.
Oracle Cloud Guard est un service de sécurité natif du cloud qui surveille et identifie les menaces, et contribue à maintenir une stratégie de sécurité solide sur Oracle Cloud Infrastructure (OCI). Cloud Guard examine les ressources OCI pour détecter les faiblesses de sécurité liées à la configuration et les activités anormales. Lorsque Cloud Guard détecte un écart par rapport à une règle de détecteur, il crée un événement de problème qui fournit une surveillance complète de la sécurité dans votre location OCI. Cette intégration utilise le service OCI Events et OCI Functions pour transférer les événements de problèmes Cloud Guard vers Google SecOps en temps quasi réel.
Avant de commencer
Assurez-vous de remplir les conditions préalables suivantes :
- Une instance Google SecOps
- Un locataire Oracle Cloud Infrastructure actif avec Cloud Guard activé
- Accès administrateur à la console Oracle Cloud Infrastructure
- Autorisations permettant de créer et de gérer des applications OCI Functions
- Autorisations permettant de créer des règles OCI Events et des thèmes de notifications
- Accès à OCI Cloud Shell ou à un environnement local avec la CLI Fn Project installée
- Docker installé (pour créer des fonctions OCI en local)
- Accès à la Google Cloud Console (pour créer une clé API)
Créer un flux de webhook dans Google SecOps
Créer le flux
- Accédez à Paramètres SIEM> Flux.
- Cliquez sur Ajouter un flux.
- Sur la page suivante, cliquez sur Configurer un seul flux.
- Dans le champ Nom du flux, saisissez un nom pour le flux (par exemple,
OCI Cloud Guard Problems). - Sélectionnez Webhook comme Type de source.
- Sélectionnez Oracle Cloud Infrastructure – Oracle Cloud Guard comme type de journal.
- Cliquez sur Suivant.
- Spécifiez les valeurs des paramètres d'entrée suivants :
- Délimiteur de fractionnement (facultatif) : laissez ce champ vide (chaque appel de fonction envoie un seul événement).
- Espace de noms de l'élément : espace de noms de l'élément
- Libellés d'ingestion : libellé à appliquer aux événements de ce flux
- Cliquez sur Suivant.
- Vérifiez la configuration de votre nouveau flux sur l'écran Finaliser, puis cliquez sur Envoyer.
Générer et enregistrer une clé secrète
Après avoir créé le flux, vous devez générer une clé secrète pour l'authentification :
- Sur la page d'informations sur le flux, cliquez sur Générer une clé secrète.
- Une boîte de dialogue affiche la clé secrète.
- Copiez et enregistrez la clé secrète de manière sécurisée.
Important : La clé secrète ne s'affiche qu'une seule fois et ne peut pas être récupérée ultérieurement. Si vous la perdez, vous devrez en générer une nouvelle.
Obtenir l'URL du point de terminaison du flux
- Accédez à l'onglet Détails du flux.
- Dans la section Endpoint Information (Informations sur le point de terminaison), copiez l'URL du point de terminaison du flux.
Le format d'URL est le suivant :
https://malachiteingestion-pa.googleapis.com/v2/unstructuredlogentries:batchCreateou
https://<REGION>-malachiteingestion-pa.googleapis.com/v2/unstructuredlogentries:batchCreateEnregistrez cette URL pour les étapes suivantes.
Cliquez sur OK.
Créer une clé API Google Cloud
Chronicle nécessite une clé API pour l'authentification. Créez une clé API restreinte dans la Google Cloud Console.
Créer la clé API
- Accédez à la page "Identifiants" de la console Google Cloud.
- Sélectionnez votre projet (celui associé à votre instance Chronicle).
- Cliquez sur Créer des identifiants> Clé API.
- Une clé API est créée et affichée dans une boîte de dialogue.
- Cliquez sur Modifier la clé API pour restreindre la clé.
Restreindre la clé API
- Sur la page des paramètres de la clé API :
- Nom : saisissez un nom descriptif (par exemple,
Chronicle Webhook API Key).
- Nom : saisissez un nom descriptif (par exemple,
- Sous Restrictions relatives aux API :
- Sélectionnez Restreindre la clé.
- Dans le menu déroulant Sélectionner des API, recherchez et sélectionnez API Google SecOps (ou API Chronicle).
- Cliquez sur Enregistrer.
- Copiez la valeur de la clé API dans le champ Clé API en haut de la page.
Enregistrez la clé API de manière sécurisée.
Activer le répondeur d'événements Cloud Guard
Cloud Guard utilise le répondeur d'événements cloud pour émettre les détails du problème vers le service OCI Events. Le répondeur d'événements Cloud fait partie de la recette Responder. Il doit être activé et configuré pour s'exécuter automatiquement.
Activer la règle d'événement Cloud dans la recette Responder
- Connectez-vous à la console Oracle Cloud Infrastructure.
- Ouvrez le menu de navigation et sélectionnez Identité et sécurité > Cloud Guard > Recettes.
- Sélectionnez Recettes de réponses.
- Cliquez sur la recette de réponse associée à votre cible.
- Dans la section Règles de réponse, recherchez la règle Événements Cloud.
- Si l'état est Désactivé :
- Ouvrez le menu Actions (trois points), puis sélectionnez Modifier.
- Définissez l'état sur Activé.
- Cliquez sur Enregistrer.
Configurer l'exécution automatique sur la cible
- Dans la console Oracle Cloud Infrastructure, ouvrez le menu de navigation et sélectionnez Identité et sécurité > Cloud Guard > Configuration > Cibles.
- Sélectionnez le compartiment cible.
- Sous Ressources, sélectionnez Recettes Responder.
- Cliquez sur le lien de la recette de réponse.
- Localisez la règle de réponse Événement Cloud.
- Ouvrez le menu Actions (trois points), puis sélectionnez Modifier.
- Définissez le déclencheur de règle sur Exécuter automatiquement.
- Cochez la case CONFIRMER L'EXÉCUTION AUTOMATIQUE.
Cliquez sur Enregistrer.
Créer une application OCI Functions
Créez une application OCI Functions qui hébergera la fonction chargée de transférer les événements Cloud Guard vers Google SecOps.
Créer l'application
- Dans la console Oracle Cloud Infrastructure, ouvrez le menu de navigation et sélectionnez Services pour les développeurs > Fonctions > Applications.
- Sélectionnez le compartiment dans lequel vous souhaitez créer l'application.
- Cliquez sur Créer une application.
- Fournissez les informations de configuration suivantes :
- Nom : saisissez
cloudguard-chronicle-forwarder. - VCN : sélectionnez un VCN avec accès à Internet (requis pour que la fonction puisse atteindre le point de terminaison du webhook Chronicle).
- Sous-réseaux : sélectionnez un sous-réseau public ou un sous-réseau privé avec une passerelle NAT configurée.
- Nom : saisissez
- Cliquez sur Créer.
Créer et déployer la fonction
Utilisez OCI Cloud Shell ou un environnement local avec Fn Project CLI pour créer et déployer la fonction.
- Ouvrez OCI Cloud Shell depuis la console Oracle Cloud Infrastructure (cliquez sur l'icône Cloud Shell dans la barre de navigation supérieure).
Configurez le contexte Fn pour votre application OCI Functions :
fn list context fn use context <your-region-context> fn update context oracle.compartment-id <compartment_OCID> fn update context registry <region-key>.ocir.io/<tenancy-namespace>/cloudguard-chronicleInitialisez une nouvelle fonction Python :
fn init --runtime python cloudguard-to-chronicle cd cloudguard-to-chronicleRemplacez le contenu du fichier
func.pypar le code suivant :import io import json import logging import requests from fdk import response def handler(ctx, data: io.BytesIO = None): """ OCI Function that receives Cloud Guard events from OCI Events Service and forwards them to Google SecOps (Chronicle) webhook endpoint. """ logger = logging.getLogger() try: cfg = ctx.Config() chronicle_endpoint = cfg.get("CHRONICLE_ENDPOINT") chronicle_api_key = cfg.get("CHRONICLE_API_KEY") chronicle_secret = cfg.get("CHRONICLE_SECRET") if not all([chronicle_endpoint, chronicle_api_key, chronicle_secret]): logger.error("Missing required configuration: CHRONICLE_ENDPOINT, CHRONICLE_API_KEY, or CHRONICLE_SECRET") return response.Response( ctx, response_data=json.dumps({"error": "Missing configuration"}), headers={"Content-Type": "application/json"}, status_code=500 ) event_data = json.loads(data.getvalue()) logger.info(f"Received Cloud Guard event: {event_data.get('eventType', 'unknown')}") webhook_url = f"{chronicle_endpoint}?key={chronicle_api_key}&secret={chronicle_secret}" headers = { "Content-Type": "application/json" } resp = requests.post( webhook_url, json=event_data, headers=headers, timeout=30 ) if resp.status_code >= 200 and resp.status_code < 300: logger.info(f"Successfully forwarded event to Chronicle (HTTP {resp.status_code})") else: logger.error(f"Failed to forward event to Chronicle (HTTP {resp.status_code}): {resp.text}") return response.Response( ctx, response_data=json.dumps({"status": resp.status_code}), headers={"Content-Type": "application/json"}, status_code=200 ) except Exception as e: logger.error(f"Error processing Cloud Guard event: {str(e)}") return response.Response( ctx, response_data=json.dumps({"error": str(e)}), headers={"Content-Type": "application/json"}, status_code=500 )Remplacez le contenu du fichier
requirements.txt:fdk>=0.1.0 requests>=2.25.0Déployez la fonction dans l'application :
fn -v deploy --app cloudguard-chronicle-forwarderAttendez la fin du déploiement.
Configurer les variables d'environnement de la fonction
- Dans la console Oracle Cloud Infrastructure, ouvrez le menu de navigation et sélectionnez Services pour les développeurs > Fonctions > Applications.
- Cliquez sur l'application cloudguard-chronicle-forwarder.
- Sous Ressources, sélectionnez Fonctions.
- Cliquez sur la fonction cloudguard-to-chronicle.
- Sous Ressources, sélectionnez Configuration.
Cliquez sur Modifier, puis ajoutez les paires clé-valeur suivantes :
Clé Valeur CHRONICLE_ENDPOINTURL du point de terminaison du webhook Chronicle (par exemple, https://malachiteingestion-pa.googleapis.com/v2/unstructuredlogentries:batchCreate)CHRONICLE_API_KEYClé API Google Cloud créée pour le webhook Chronicle CHRONICLE_SECRETClé secrète du webhook Chronicle Cliquez sur Enregistrer.
Créer des stratégies IAM pour OCI Functions
Les services OCI Functions et Events nécessitent des stratégies IAM pour appeler la fonction.
Créer un groupe dynamique pour la fonction
- Dans la console Oracle Cloud Infrastructure, ouvrez le menu de navigation et sélectionnez Identité et sécurité > Domaines.
- Sélectionnez le domaine Par défaut.
- Sous Ressources du domaine d'identité, sélectionnez Groupes dynamiques.
- Cliquez sur Créer un groupe dynamique.
Fournissez les informations de configuration suivantes :
- Nom : saisissez
cloudguard-chronicle-functions. - Description : saisissez
Dynamic group for Cloud Guard to Chronicle forwarder function. - Règles de correspondance : saisissez la règle suivante :
ALL {resource.type = 'fnfunc', resource.compartment.id = '<compartment_OCID>'}- Nom : saisissez
Cliquez sur Créer.
Créer des stratégies IAM
- Dans la console Oracle Cloud Infrastructure, ouvrez le menu de navigation et sélectionnez Identité et sécurité > Règles.
- Assurez-vous d'être dans le compartiment racine.
- Cliquez sur Créer une règle.
- Fournissez les informations de configuration suivantes :
- Nom : saisissez
cloudguard-chronicle-policy. - Description : saisissez
Allows Events Service to invoke Cloud Guard Chronicle forwarder function. - Compartiment : assurez-vous que le compartiment racine est sélectionné.
- Nom : saisissez
- Dans la section Créateur de règles, activez l'option Afficher l'éditeur manuel.
Dans le champ Statement (Déclaration), saisissez les instructions de règle suivantes :
Allow dynamic-group cloudguard-chronicle-functions to use fn-function in compartment <compartment_name> Allow dynamic-group cloudguard-chronicle-functions to use fn-invocation in compartment <compartment_name> Allow service cloudguardevents to use fn-function in compartment <compartment_name> Allow service cloudguardevents to use fn-invocation in compartment <compartment_name>Cliquez sur Créer.
Créer une règle OCI Events pour Cloud Guard
Créez une règle d'événements qui déclenche la fonction OCI lorsque Cloud Guard détecte, ignore ou corrige un problème.
Créer la règle "Événements"
Dans la console Oracle Cloud Infrastructure, ouvrez le menu de navigation et sélectionnez Observabilité et gestion > Service d'événements > Règles.
Cliquez sur Créer une règle.
Fournissez les informations de configuration suivantes :
- Nom à afficher : saisissez
cloudguard-to-chronicle. - Description : saisissez
Forwards Cloud Guard problem events to Google SecOps via OCI Functions.
- Nom à afficher : saisissez
Dans la section Conditions de la règle :
- Définissez Condition sur Type d'événement.
- Définissez Nom du service sur Cloud Guard.
- Définissez Type d'événement sur les options suivantes (sélectionnez-en plusieurs) :
- Problème détecté
- Ignoré : problème
- Problème résolu
Dans la section Actions :
- Définissez Type d'action sur Fonctions.
- Définissez Function Compartment sur le compartiment contenant l'application de fonction.
- Définissez Function Application sur cloudguard-chronicle-forwarder.
- Définissez Function sur cloudguard-to-chronicle.
Cliquez sur Créer une règle.
Facultatif : Filtrer par niveau de risque
Pour ne transférer que les problèmes de gravité élevée, ajoutez un filtre d'attribut à la règle "Événements" :
- Dans la section Conditions de la règle, cliquez sur + Autre condition.
- Définissez Condition sur Attribut.
- Définissez Nom de l'attribut sur
riskLevel. Définissez les valeurs des attributs sur les niveaux de risque souhaités :
CRITICALHIGH
Vérifier l'intégration
Tester la fonction manuellement
- Dans la console Oracle Cloud Infrastructure, ouvrez le menu de navigation et sélectionnez Services pour les développeurs > Fonctions > Applications.
- Cliquez sur l'application cloudguard-chronicle-forwarder.
- Sous Ressources, sélectionnez Fonctions.
- Cliquez sur la fonction cloudguard-to-chronicle.
Cliquez sur Appeler pour tester la fonction avec des exemples de données ou utilisez OCI Cloud Shell :
echo '{"eventType":"com.oraclecloud.cloudguard.problemdetected","cloudEventsVersion":"0.1","eventID":"test-event-001","data":{"compartmentId":"ocid1.compartment.oc1..example","resourceName":"test-problem","additionalDetails":{"riskLevel":"HIGH","problemDescription":"Test problem for integration verification","status":"OPEN","region":"us-ashburn-1"}}}' | fn invoke cloudguard-chronicle-forwarder cloudguard-to-chronicleVérifiez les journaux de la fonction en accédant à Services pour les développeurs > Fonctions > Applications > cloudguard-chronicle-forwarder, puis en sélectionnant la section Journaux.
Recherchez les entrées de journal confirmant le transfert réussi :
Received Cloud Guard event: com.oraclecloud.cloudguard.problemdetected Successfully forwarded event to Chronicle (HTTP 200)
Valider dans Google SecOps
- Connectez-vous à Google SecOps.
- Accédez à Rechercher et recherchez les événements dont le type de journal est
OCI_CLOUDGUARD. - Vérifiez que les événements de problème Cloud Guard apparaissent dans les résultats de recherche.
Si les événements n'apparaissent pas :
- Vérifiez l'URL du point de terminaison du webhook Chronicle, la clé API et la clé secrète dans la configuration de la fonction.
- Vérifiez que la règle "Événements" se trouve dans la région OCI appropriée (région de reporting Cloud Guard).
- Vérifiez que le répondeur d'événements Cloud est activé et configuré pour s'exécuter automatiquement.
- Examiner les journaux de fonction pour détecter les messages d'erreur
Référence des types d'événements Cloud Guard
Cloud Guard émet les types d'événements suivants via le service OCI Events :
| Type d'événement | Déclencheur |
|---|---|
com.oraclecloud.cloudguard.problemdetected |
Un nouveau problème est détecté |
com.oraclecloud.cloudguard.problemdismissed |
Un problème est ignoré |
com.oraclecloud.cloudguard.problemremediated |
Un problème est résolu |
com.oraclecloud.cloudguard.sightingdetected |
Une nouvelle observation est détectée |
Référence des méthodes d'authentification
Les flux de webhook Chronicle sont compatibles avec plusieurs méthodes d'authentification. Choisissez la méthode acceptée par votre fournisseur.
Méthode 1 : En-têtes personnalisés (recommandée)
Si votre fournisseur accepte les en-têtes HTTP personnalisés, utilisez cette méthode pour renforcer la sécurité.
Format de la demande :
POST <ENDPOINT_URL> HTTP/1.1 Content-Type: application/json x-goog-chronicle-auth: <API_KEY> x-chronicle-auth: <SECRET_KEY> { "event": "data", "timestamp": "2025-01-15T10:30:00Z" }
Avantages :
- Clé API et code secret non visibles dans l'URL
- Plus sécurisé (les en-têtes ne sont pas enregistrés dans les journaux d'accès au serveur Web)
- Méthode privilégiée lorsque le fournisseur la prend en charge
Méthode 2 : Paramètres de requête
Si votre fournisseur n'accepte pas les en-têtes personnalisés, ajoutez les identifiants à l'URL.
Format de l'URL :
<ENDPOINT_URL>?key=<API_KEY>&secret=<SECRET_KEY>Exemple :
https://malachiteingestion-pa.googleapis.com/v2/unstructuredlogentries:batchCreate?key=AIzaSyD...&secret=abcd1234...Format de la demande :
POST <ENDPOINT_URL>?key=<API_KEY>&secret=<SECRET_KEY> HTTP/1.1 Content-Type: application/json { "event": "data", "timestamp": "2025-01-15T10:30:00Z" }
Inconvénients :
- Identifiants visibles dans l'URL
- Peut être consigné dans les journaux d'accès au serveur Web
- Moins sécurisé que les en-têtes
Méthode 3 : Hybride (URL + en-tête)
Certaines configurations utilisent une clé API dans l'URL et une clé secrète dans l'en-tête.
Format de la demande :
POST <ENDPOINT_URL>?key=<API_KEY> HTTP/1.1 Content-Type: application/json x-chronicle-auth: <SECRET_KEY> { "event": "data", "timestamp": "2025-01-15T10:30:00Z" }
Noms des en-têtes d'authentification
Chronicle accepte les noms d'en-tête suivants pour l'authentification :
Pour la clé API :
x-goog-chronicle-auth(recommandé)X-Goog-Chronicle-Auth(non sensible à la casse)
Pour la clé secrète :
x-chronicle-auth(recommandé)X-Chronicle-Auth(non sensible à la casse)
Limites et bonnes pratiques concernant les webhooks
Limites de requêtes
| Limite | Valeur |
|---|---|
| Taille maximale des requêtes | 4 Mo |
| RPS (requêtes par seconde) max. | 15 000 |
| Délai avant expiration de la requête | 30 seconds |
| Comportement de nouvelle tentative | Automatique avec intervalle exponentiel entre les tentatives |
Table de mappage UDM
| Champ de journal | Mappage UDM | Logique |
|---|---|---|
| contentType | additional.fields | Fusionné à partir de différents champs supplémentaires |
| cloudEventsVersion | additional.fields | |
| data.additionalDetails.reason | additional.fields | |
| data.additionalDetails.tenantId | additional.fields | |
| data.additionalDetails.problemType | additional.fields | |
| data.resourceName | additional.fields | |
| data.resourceId | additional.fields | |
| état | additional.fields | |
| problem_recommendation | additional.fields | |
| compartment_id | additional.fields | |
| compartment_name | additional.fields | |
| product_event | extensions.auth.type | Définissez sur "AUTHTYPE_UNSPECIFIED" si product_event correspond à la connexion. |
| data.additionalDetails.problemDescription | metadata.description | Valeur de data.additionalDetails.problemDescription si elle n'est pas vide, sinon data.additionalDetails.description |
| data.additionalDetails.description | metadata.description | |
| has_user | metadata.event_type | Défini sur USER_RESOURCE_ACCESS si has_user et has_target_resource, USER_UNCATEGORIZED si has_user, USER_LOGIN si product_event correspond à la connexion, STATUS_UPDATE si has_principal, sinon GENERIC_EVENT |
| has_target_resource | metadata.event_type | |
| product_event | metadata.event_type | |
| has_principal | metadata.event_type | |
| eventType | metadata.product_event_type | Valeur de eventType si elle n'est pas vide, sinon product_event |
| product_event | metadata.product_event_type | |
| eventID | metadata.product_log_id | Valeur copiée directement |
| version | metadata.product_version | Valeur copiée directement |
| observateur | observer.domain.name | Domaine extrait de l'observateur à l'aide de grok |
| observateur | observer.hostname | Valeur de l'observateur si l'adresse IP n'est pas disponible |
| observateur | observer.ip | Valeur de l'observateur si l'adresse IP |
| principal | principal.administrative_domain | Domaine extrait de principal ou principal_host à l'aide de grok |
| principal_host | principal.administrative_domain | |
| data.additionalDetails.problemAdditionalDetails.public_ips | principal.asset.ip | Valeur de data.additionalDetails.problemAdditionalDetails.public_ips si elle n'est pas vide, sinon vnicDetails.0.vnicPublicIp si elle n'est pas vide, sinon de principal si l'adresse IP, sinon principal_host si l'adresse IP |
| vnicDetails.0.vnicPublicIp | principal.asset.ip | |
| principal | principal.asset.ip | |
| principal_host | principal.asset.ip | |
| principal | principal.hostname | Valeur du principal si ce n'est pas une adresse IP, sinon principal_host si ce n'est pas une adresse IP |
| principal_host | principal.hostname | |
| data.additionalDetails.problemAdditionalDetails.public_ips | principal.ip | Valeur de data.additionalDetails.problemAdditionalDetails.public_ips si elle n'est pas vide, sinon vnicDetails.0.vnicPublicIp si elle n'est pas vide, sinon de principal si l'adresse IP, sinon principal_host si l'adresse IP |
| vnicDetails.0.vnicPublicIp | principal.ip | |
| principal | principal.ip | |
| principal_host | principal.ip | |
| data.additionalDetails.region | principal.location.name | Valeur copiée directement |
| principal_port | principal.port | Conversion en entier à partir de principal_port |
| data.additionalDetails.resourceName | principal.resource.name | Valeur de data.additionalDetails.resourceName si elle n'est pas vide, sinon data.additionalDetails.principalResourceName |
| data.additionalDetails.principalResourceName | principal.resource.name | |
| data.additionalDetails.resourceId | principal.resource.product_object_id | Valeur de data.additionalDetails.resourceId si elle n'est pas vide, sinon data.additionalDetails.principalResourceId |
| data.additionalDetails.principalResourceId | principal.resource.product_object_id | |
| data.additionalDetails.resourceType | principal.resource.resource_subtype | Valeur de data.additionalDetails.resourceType si elle n'est pas vide, sinon data.additionalDetails.principalResourceType |
| data.additionalDetails.principalResourceType | principal.resource.resource_subtype | |
| data.additionalDetails.resourceName | principal.user.userid | Valeur extraite de data.additionalDetails.resourceName si data.additionalDetails.resourceType == "User", sinon extraite de data.additionalDetails.principalResourceName si data.additionalDetails.principalResourceType == "User" |
| data.additionalDetails.principalResourceName | principal.user.userid | |
| action | security_result.action | Définissez la valeur sur BLOCK si l'action correspond à un blocage, sur ALLOW en cas de réussite, sur FAIL en cas d'échec ou sur UNKNOWN dans le cas contraire. |
| action | security_result.action_details | Valeur copiée directement |
| data.additionalDetails.tacticName | security_result.attack_details.tactics | Valeur copiée directement dans tactic_data.name, puis fusionnée |
| data.additionalDetails.techniqueName | security_result.attack_details.techniques | Valeur copiée directement dans technique_data.name, puis fusionnée |
| data.additionalDetails.confidence | security_result.confidence_score | Valeur copiée directement |
| sightingType | security_result.detection_fields | Libellés sightingType, sightingScore et riskScore fusionnés |
| sightingScore | security_result.detection_fields | |
| riskScore | security_result.detection_fields | |
| data.additionalDetails.detectorRuleId | security_result.rule_id | Valeur copiée directement |
| data.additionalDetails.detectorRuleType | security_result.rule_name | Valeur copiée directement |
| de gravité, | security_result.severity | Définissez sur "INFORMATIONAL" si la gravité est "INFO", sur "LOW" si elle est "Low", sur "MEDIUM" si elle est "WARN", sur "HIGH" si elle est "High" et sur "CRITICAL" si elle est "Critical". |
| de gravité, | security_result.severity_details | Valeur copiée directement |
| cible | target.administrative_domain | Domaine extrait de target ou target_host à l'aide de grok |
| target_host | target.administrative_domain | |
| cible | target.hostname | Valeur de la cible si elle n'est pas une adresse IP, sinon target_host si elle n'est pas une adresse IP |
| target_host | target.hostname | |
| cible | target.ip | Valeur de la cible si elle est une adresse IP, sinon target_host si elle est une adresse IP |
| target_host | target.ip | |
| target_port | target.port | Conversion en entier à partir de target_port |
| targetId | target.resource.attribute.labels | Fusionné à partir de différents champs de libellé |
| labels | target.resource.attribute.labels | |
| vnicAttachmentId | target.resource.attribute.labels | |
| vnicAttachmentDisplayName | target.resource.attribute.labels | |
| subnets | target.resource.attribute.labels | |
| instance_ocid | target.resource.attribute.labels | |
| route_table_ocids | target.resource.attribute.labels | |
| security_list_ocids | target.resource.attribute.labels | |
| data.additionalDetails.impactedResourceName | target.resource.name | Valeur de data.additionalDetails.impactedResourceName si elle n'est pas vide, sinon vnicDetails.0.vnicDisplayName |
| vnicDetails.0.vnicDisplayName | target.resource.name | |
| data.additionalDetails.impactedResourceId | target.resource.product_object_id | Valeur de data.additionalDetails.impactedResourceId si elle n'est pas vide, sinon vnicDetails.0.vnicId |
| vnicDetails.0.vnicId | target.resource.product_object_id | |
| data.additionalDetails.impactedResourceType | target.resource.resource_subtype | Valeur copiée directement |
| target_url | target.url | Valeur copiée directement |
| target_user | target.user.userid | Valeur copiée directement |
| produit | metadata.product_name | Valeur copiée directement |
| vendor | metadata.vendor_name | Valeur copiée directement |
data.additionalDetails.tacticName |
security_result.attack_details.tactics.name |
Mappé à partir du journal des modifications |
data.additionalDetails.techniqueName |
security_result.attack_details.techniques.name |
Mappé à partir du journal des modifications |
Journal des modifications
Afficher le journal des modifications pour ce parseur
Vous avez encore besoin d'aide ? Obtenez des réponses de membres de la communauté et de professionnels Google SecOps.