Utiliser les extensions d'analyseur

Google Security Operations propose plusieurs méthodes pour définir la manière dont les données des journaux bruts d'origine sont analysées et normalisées dans un enregistrement de modèle de données unifié (UDM).

  • Analyseurs par défaut: instructions prédéfinies de mappage de données gérées par Google Security Operations qui mappent les données de journaux brutes d'origine aux champs UDM.
  • Analyseurs personnalisés: instructions personnalisées de mappage de données créées et gérées par un client qui répondent à ses besoins spécifiques en matière d'analyse de données.
  • Extensions d'analyseur: instructions supplémentaires de mappage de données qui étendent un analyseur par défaut ou personnalisé afin de mapper des champs supplémentaires dans le journal brut d'origine. Cela ne remplace pas complètement un analyseur par défaut ou personnalisé, mais étend les instructions de mappage existantes dans un analyseur par défaut ou personnalisé.

Ce document explique comment utiliser les extensions d'analyseur.

Avant de commencer

Les documents suivants expliquent les concepts préalables qu'il est important de connaître lorsque vous utilisez des extensions d'analyseur:

À propos des extensions d'analyseur

Une extension d'analyseur vous permet de créer des instructions de mappage supplémentaires en plus de celles définies dans un analyseur par défaut ou personnalisé pour répondre à un cas d'utilisation unique. Cette fonctionnalité est destinée à étendre un analyseur par défaut ou personnalisé existant. Une extension d'analyseur ne remplace pas un analyseur par défaut ou personnalisé. Vous ne pouvez pas créer d'analyseur à l'aide d'une extension d'analyseur.

L'extension d'analyseur lit le journal brut d'origine et insère les valeurs extraites dans des champs spécifiques de l'enregistrement UDM. L'enregistrement UDM contient des données définies à la fois par l'analyseur par défaut ou personnalisé et par l'extension d'analyseur.

Les instructions de mappage des données dans une extension d'analyseur sont prioritaires sur celles d'un analyseur par défaut ou personnalisé. En cas de conflit dans les instructions de mappage, l'extension d'analyseur remplace une valeur définie par l'analyseur par défaut ou personnalisé. Par exemple, si l'analyseur par défaut mappe un champ de journal brut au champ UDM event.metadata.description et que l'extension d'analyseur mappe un champ de journal brut différent au même champ UDM, l'extension d'analyseur remplace la valeur définie par l'analyseur par défaut. Les champs répétés constituent une exception. Vous pouvez configurer l'extension d'analyseur pour ajouter des valeurs lors de l'écriture de données dans un champ répété.

Vous créez une extension d'analyseur par type de journal. Chaque type de journal est identifié par une étiquette d'ingestion unique. Consultez la page Analyseurs par défaut compatibles pour obtenir la liste des types de journaux.

Pour créer une extension d'analyseur, Google Security Operations doit pouvoir ingérer et normaliser les journaux bruts d'origine à l'aide d'un analyseur par défaut ou personnalisé. L'extension d'analyseur extrait des données supplémentaires du journal brut d'origine, puis les fusionne dans l'enregistrement UDM.

Les extensions d'analyseur sont compatibles avec les types d'instructions de mappage suivants:

  • Type d'extrait de code: vous écrivez un code d'analyseur semblable aux analyseurs par défaut et personnalisés. Les journaux bruts d'origine peuvent avoir l'un des formats de données compatibles pour le type de journal.
  • Type de champ de données: vous spécifiez les champs de départ et de destination dans l'interface de l'application. Les journaux bruts d'origine doivent être formatés comme suit :
    • JSON, XML ou CSV natif.
    • En-tête Syslog et format JSON, XML ou CSV natif. Vous pouvez créer une instruction de mappage de type de champ de données pour un sous-ensemble de types de journaux dans Analyseurs par défaut compatibles. Recherchez celles qui sont au format JSON, XML, CSV, SYSLOG + JSON, SYSLOG + XML ou SYSLOG + CSV.

Lorsque vous créez une extension d'analyseur, tenez compte des points suivants:

  • Les données peuvent être mappées à n'importe quel champ UDM compatible avec les types de données standards et les valeurs répétées.
  • Vous ne pouvez pas mapper des données avec les champs UDM suivants :
    • event.idm.read_only_udm.additional
    • event.idm.graph.entity.additional
  • Avant de créer une instruction de mappage de données, assurez-vous que votre instance Google Security Operations a ingéré des journaux bruts d'origine au cours des 30 derniers jours pour le type de journal, et que ces journaux bruts contiennent le champ que vous prévoyez de définir dans les critères de condition préalable. Ces journaux bruts d'origine permettent de valider les instructions de mappage des données.
  • Une fois qu'une extension d'analyseur est active, elle commence à analyser les données entrantes. Vous ne pouvez pas analyser les données de journaux brutes rétroactivement.

Cycle de vie d'une extension d'analyseur

Le cycle de vie des extensions d'analyseur comprend les états suivants:

  • DRAFT: nouvelle extension d'analyseur qui n'a pas encore été envoyée.
  • VALIDATING: Google Security Operations valide les instructions de mappage par rapport aux journaux bruts existants pour s'assurer que les champs sont analysés sans erreur.
  • LIVE: l'extension d'analyseur a été validée et est maintenant en production. Il s'agit d'extraire les données des journaux bruts entrants et de les transformer en enregistrements UDM.
  • FAILED: la validation de l'extension d'analyseur a échoué.

Ouvrir la page "Extensions d'analyseur"

Procédez comme indiqué dans l'une des sections suivantes pour accéder à la page Parser Extensions (Extensions d'analyseur).

Depuis la barre de navigation

  1. Dans la barre de navigation, sélectionnez Paramètres, Paramètres SIEM, puis Analyseurs.
  2. Identifiez le type de journal que vous souhaitez étendre dans la table Parsers (Analyseurs).
  3. Accédez à cette ligne, puis cliquez sur le menu .
  4. Cliquez sur Create Extension (Créer l'extension).
  1. Utilisez la recherche dans le journal brut pour rechercher des enregistrements semblables à ceux qui seront analysés.
  2. Sélectionnez un événement dans le panneau Événements > Chronologie.
  3. Développez le panneau Données d'événement.
  4. Cliquez sur le bouton Gérer l'analyseur.
  5. Dans la boîte de dialogue Manage Parser (Gérer l'analyseur), sélectionnez Create Extension (Créer une extension), puis cliquez sur Next (Suivant). La page Parser Extensions (Extensions d'analyseur) s'ouvre en mode Édition. Vous pouvez commencer à définir l'extension d'analyseur.

Créer une extension d'analyseur

Cette section explique comment créer une extension d'analyseur après avoir ouvert la page "Extensions d'analyseur". Les champs disponibles sur la page Extensions d'analyseur varient en fonction de la structure du journal brut.

  1. Examinez l'exemple de signature brute dans le panneau Raw Log (Journal brut) pour vérifier qu'il est représentatif des journaux que l'extension d'analyseur traitera. Utilisez l'exemple de journal brut comme référence lorsque vous créez l'extension d'analyseur.

    • Si vous avez accédé à la page Parser Extensions (Extensions d'analyseur) à partir de la recherche de journaux bruts, le panneau affiche le journal brut d'origine que vous avez sélectionné dans les résultats de recherche.

    • si vous avez accédé à la page Parser Extensions (Extensions d'analyseur) dans la barre de navigation, un exemple de journal brut pour ce type de journal s'affiche.

  2. Sélectionnez Extension Method (Méthode d'extension). Sélectionnez l'une des options suivantes :

    • Mapper les champs de données: créez un mappage des champs de données. Utilisez les champs d'application pour définir le champ de journal brut d'origine et le champ UDM de destination.

    • Écrire un extrait de code: créez un extrait de code pour tous les formats de journaux compatibles. L'extrait de code utilise la même syntaxe d'analyseur que les analyseurs par défaut et personnalisés. Pour en savoir plus sur la syntaxe de l'analyseur, consultez la page Syntaxe de l'analyseur.

Continuez avec l'une des sous-sections suivantes, spécifiques à la méthode d'extension sélectionnée.

Créer une instruction de mappage des champs de données

Créez une instruction de mappage des champs de données lorsque les journaux bruts entrants sont au format JSON, XML, CSV, en-tête Syslog plus JSON, en-tête Syslog avec XML ou en-tête Syslog avec le format CSV. Définissez le chemin d'accès au nom du champ d'origine et au champ UDM de destination dans l'instruction de mappage de données.

  1. Dans le sélecteur Repeated Fields (Champs répétés), spécifiez la manière dont l'extension d'analyse enregistre une valeur dans des champs compatibles avec un tableau de valeurs.

    • Ajouter des valeurs: la valeur est ajoutée à l'ensemble existant de valeurs stockées dans le champ.
    • Replace values (Remplacer des valeurs): la valeur remplace toutes les valeurs précédemment stockées par la nouvelle.

    Certains champs UDM, tels que principal.ip et entity.asset.hostname, stockent un tableau de valeurs. Ces champs répétés sont identifiés par le libellé repeated dans la liste des champs du modèle de données unifié. Pour en savoir plus, consultez la section Sélecteur de champs répétés.

  2. Si les champs Syslog et Target apparaissent, cela signifie que Google Security Operations a détecté que le journal brut inclut un en-tête Syslog.

    Si la suite Google Security Operations identifie que l'exemple de journal brut n'est pas natif au format JSON, XML ou CSV, et qu'il possède un en-tête Syslog, les champs Syslog et Target s'affichent. Utilisez les champs suivants pour définir des modèles d'expression régulière et Grok qui prétraitent l'en-tête Syslog et extraient la partie structurée du journal. La partie structurée du journal peut être mappée à l'aide de champs de données.

    • Champ Syslog: spécifiez le modèle d'extraction, à l'aide de Grok et d'expressions régulières, qui identifie l'en-tête Syslog et le message de journal brut.
    • Champ Target (Cible) : spécifiez le nom de la variable dans le modèle d'extraction qui stocke la partie structurée du journal.

    Pour en savoir plus sur la définition d'un modèle d'extraction à l'aide de Grok et d'expressions régulières, consultez la section Définir les champs de l'extracteur Syslog.

    L'image suivante montre comment ajouter un modèle d'extraction et un nom de variable aux champs Syslog et Target, respectivement.

    Champs de l'extracteur Syslog

    Les champs Syslog et Target sont obligatoires et fonctionnent ensemble pour séparer l'en-tête Syslog de la partie structurée du journal.

  3. Après avoir saisi les valeurs dans les champs Syslog et Target (Cible), cliquez sur le bouton Validate (Valider). Le processus de validation recherche les erreurs de syntaxe et d'analyse, puis renvoie l'un des éléments suivants:

    • Opération réussie: les champs de mappage de données s'affichent. Définissez le reste de l'extension d'analyseur.
    • Échec: un message d'erreur s'affiche. Corrigez la condition d'erreur avant de continuer.
  4. Vous pouvez également définir une instruction de condition préalable.

    L'instruction de condition préalable n'identifie qu'un sous-ensemble de journaux bruts d'origine traités par l'extension d'analyseur en faisant correspondre une valeur statique à un champ du journal brut. Si un journal brut entrant répond aux critères de condition préalable, c'est-à-dire que les valeurs correspondent, l'extension d'analyseur applique l'instruction de mappage. Si ce n'est pas le cas, l'extension d'analyseur n'applique pas l'instruction de mappage.

    Remplissez les champs suivants :

    • Champ de condition préalable: saisissez le chemin d'accès complet au champ si le format des données du journal est JSON ou XML, ou la position de la colonne si le format de données est CSV.
    • Opérateur de condition préalable: sélectionnez EQUALS ou NOT EQUALS.
    • Valeur de la condition préalable: saisissez la valeur qui doit correspondre aux données dans le champ de condition préalable.
  5. Définissez l'instruction de mappage des données:

    • Champ de données brutes: saisissez le chemin d'accès complet au champ si le format des données du journal est JSON ou XML, ou la position de la colonne si le format de données est CSV.
    • Champ de destination: saisissez le nom complet du champ UDM dans lequel la valeur sera stockée (par exemple, udm.metadata.collected_timestamp.seconds).
  6. Cliquez sur Envoyer pour enregistrer les instructions de mappage.

  7. Google Security Operations valide l'instruction de mappage.

    • Si le processus de validation aboutit, l'état passe à Live (En ligne) et l'instruction de mappage commence à traiter les données de journal entrantes.
    • Si le processus de validation échoue, l'état passe à Failed (Échec) et une erreur s'affiche dans le champ "Raw Log" (Journal brut).

    Voici un exemple d'erreur de validation.

    ERROR: generic::unknown: pipeline.ParseLogEntry failed: LOG_PARSING_CBN_ERROR:
    "generic::invalid_argument: pipeline failed: filter mutate (7) failed: copy failure:
    copy source field \"jsonPayload.dest_instance.region\" must not be empty
    (try using replace to provide the value before calling copy)
    
    "LOG: {"insertId":"14suym9fw9f63r","jsonPayload":{"bytes_sent":"492",
    "connection":{"dest_ip":"10.12.12.33","dest_port":32768,"protocol":6,
    "src_ip":"10.142.0.238","src_port":22},"end_time":"2023-02-13T22:38:30.490546349Z",
    "packets_sent":"15","reporter":"SRC","src_instance":{"project_id":"example-labs",
    "region":"us-east1","vm_name":"example-us-east1","zone":"us-east1-b"},
    "src_vpc":{"project_id":"example-labs","subnetwork_name":"default",
    "vpc_name":"default"},"start_time":"2023-02-13T22:38:29.024032655Z"},
    "logName":"projects/example-labs/logs/compute.googleapis.com%2Fvpc_flows",
    "receiveTimestamp":"2023-02-13T22:38:37.443315735Z","resource":{"labels":
    {"location":"us-east1-b","project_id":"example-labs",
      "subnetwork_id":"00000000000000000000","subnetwork_name":"default"},
      "type":"gce_subnetwork"},"timestamp":"2023-02-13T22:38:37.443315735Z"}
    

Consultez la section Champs dans une instruction de mappage de données pour obtenir la liste de tous les champs possibles dans une extension d'analyseur.

Champs dans une instruction de mappage de données

Cette section décrit tous les champs pouvant être définis dans une extension d'analyseur.

fieldName Description
Système Syslog Modèle défini par l'utilisateur qui prétraite et sépare un en-tête Syslog de la potion structurée d'un journal brut.
Cible Nom de variable dans le champ Syslog qui stocke la partie structurée du journal.
Champ Precondition Identifiant de champ dans le journal brut contenant la valeur à comparer. Utilisé dans une instruction de condition préalable.
Opérateur de condition préalable Sélectionnez EQUALS ou NOT EQUALS. Utilisé dans une instruction de condition préalable.
Valeur de la condition préalable Valeur statique qui sera comparée au champ de condition préalable dans le journal brut. Utilisé dans une instruction de condition préalable.
Champ de données brutes

Utilisé dans une instruction de mappage.

Si le format de données est JSON, définissez le chemin d'accès au champ, par exemple : jsonPayload.connection.dest_ip.

Si le format de données est XML, définissez le chemin d'accès complet au champ, par exemple : /Event/Reason-Code.

Si les données sont au format CSV, définissez la position d'index de la colonne. Les positions d'index commencent à 1.

Champ de destination

Utilisé dans une instruction de mappage.

Définissez le chemin d'accès complet au champ UDM dans lequel les données seront stockées. Exemple :

udm.network.dhcp.opcode

ou

graph.entity.asset.hostname

Créer une instruction de mappage d'extraits de code

Un extrait de code utilise une syntaxe de type Logstash pour définir comment extraire et transformer les valeurs dans le journal brut d'origine et les attribuer à l'enregistrement UDM. Un extrait de code utilise la même syntaxe et les mêmes sections d'instruction qu'un analyseur par défaut ou personnalisé. Les sections d'un extrait de code sont les suivantes:

  • Section 1. Extrayez les données du journal d'origine.
  • Section 2. Transformer les données extraites
  • Section 3. Attribuez une ou plusieurs valeurs à un champ UDM.
  • Section 4. Liez les champs d'événement UDM à la clé @output.

L'exemple suivant est un extrait de code.

Voici un exemple de journal brut:

{
    "insertId": "00000000",
    "jsonPayload": {
        ...section omitted for brevity...
        "packets_sent": "4",
        ...section omitted for brevity...
    },
    "timestamp": "2022-05-03T01:45:00.150614953Z"
}

Voici un exemple d'extrait de code qui mappe la valeur de jsonPayload.packets_sent au champ UDM network.sent_bytes.

mutate {
 replace => {
    "jsonPayload.packets_sent" => ""
 }
}

filter {
    # Section 1. extract the data from the original JSON log
    json {
        source => "message"
        array_function => "split_columns"
        on_error => "_not_json"
    }

    if [_not_json] {
        drop {
            tag => "TAG_UNSUPPORTED"
        }

    } else {
        # Section 2. transform the extracted data
        if [jsonPayload][packets_sent] not in ["",0] {
            mutate {
                convert => {
                    "jsonPayload.packets_sent" => "uinteger"
                }
            }

            # Section 3. assign the value to a UDM field
            mutate {
                copy => {
                    "udm.network.sent_bytes" => "jsonPayload.packets_sent"
                }
                on_error => "_exception"
            }

            if ![_exception] {
                # Section 4. Bind the UDM fields to the @output key
                mutate {
                    merge => {
                        "@output" => "event"
                    }
                }
            }
        }
    }
}
  1. Cliquez sur Envoyer pour enregistrer les instructions de mappage.

  2. Google Security Operations valide l'instruction de mappage.

    • Si le processus de validation aboutit, l'état passe à Live (En ligne) et l'instruction de mappage commence à traiter les données de journal entrantes.
    • Si le processus de validation échoue, l'état passe à Failed (Échec) et une erreur s'affiche dans le champ "Raw Log" (Journal brut).

Afficher une extension d'analyseur existante

  1. Dans la barre de navigation, sélectionnez Paramètres, Paramètres SIEM, puis Analyseurs.
  2. Dans la liste "Analyseurs", identifiez le type de journal avec une extension d'analyseur. Elle est identifiée par le texte EXTENSION à côté du nom.
  3. Accédez à cette ligne, puis cliquez sur le menu .
  4. Cliquez sur Afficher l'extension.
  5. L'onglet Afficher l'analyseur personnalisé/précompilé > Extension s'affiche avec des informations sur l'extension d'analyse. Le panneau récapitulatif affiche l'extension d'analyseur LIVE par défaut. S'il existe un

Modifier une extension d'analyseur

  1. Ouvrez l'onglet Afficher l'analyseur personnalisé/précompilé > Onglet "Extension". Consultez la section Afficher une extension d'analyseur existante pour savoir comment ouvrir la page.
  2. Cliquez sur le bouton Modifier l'extension. La page Parser Extensions (Extensions d'analyseur) s'affiche.
  3. Modifiez l'extension paser.
    • Pour annuler et supprimer les modifications, cliquez sur Supprimer le brouillon.
  4. Lorsque vous avez terminé de modifier l'extension d'analyse, cliquez sur Envoyer.
  5. Si vous envoyez la modification, le processus de validation s'exécute pour valider la nouvelle configuration.

Supprimer une extension d'analyseur

  1. Ouvrez l'onglet Afficher l'analyseur personnalisé/précompilé > Onglet "Extension". Consultez la section Afficher une extension d'analyseur existante pour savoir comment ouvrir cette page.

  2. Cliquez sur le bouton Modifier l'extension. La page Parser Extensions (Extensions d'analyseur) s'affiche.

  3. Cliquez sur le bouton Supprimer l'extension.

Lorsque vous modifiez une extension d'analyseur, vous pouvez la supprimer à tout moment. Cliquez sur l'une des options suivantes:

  • Supprimer le brouillon
  • Supprimer l'extension qui a échoué

En savoir plus sur le sélecteur de champs répétés

Certains champs UDM stockent un tableau de valeurs, tels que principal.ip et Entity.asset.hostname. Si vous créez une extension d'analyseur pour stocker des données dans un champ répété, cette option vous permet de contrôler si la valeur est ajoutée au tableau ou si elle remplace toutes les valeurs existantes définies par l'analyseur par défaut. Les champs répétés sont identifiés par le libellé répété dans la liste de champs du modèle de données unifié.

Si l'option Appends values (Ajouter des valeurs) est sélectionnée, l'extension d'analyseur ajoute la valeur extraite au tableau de valeurs existantes dans le champ UDM. Si l'option Replace Values (Remplacer les valeurs) est sélectionnée, l'extension d'analyseur remplace le tableau de valeurs existantes dans le champ UDM par la valeur extraite. Le sélecteur Champs répétés n'a aucune incidence sur la manière dont les données sont stockées dans les champs qui ne sont pas répétés.

Une extension d'analyseur ne peut mapper des données avec un champ répété que lorsque ce champ se trouve au niveau le plus bas de la hiérarchie. Par exemple, le mappage de valeurs avec udm.principal.ip est accepté, car le champ répété ip se trouve au niveau le plus bas de la hiérarchie et principal n'est pas un champ répété. Le mappage des valeurs avec udm.intermediary.hostname n'est pas accepté, car intermediary est un champ répété et ne se trouve pas au niveau le plus bas de la hiérarchie.

Le tableau suivant fournit des exemples de la manière dont la configuration des champs répétés affecte l'enregistrement UDM généré.

Sélection de champs répétés Exemple de journal Configuration de l'extension d'analyseur Résultat généré
Ajouter des valeurs {"protoPayload":{"@type":"type.AuditLog","authenticationInfo":{"principalEmail":"admin@cmmar.co"},"requestMetadata":{"callerIp":"1.1.1.1, 2.2.2.2"}}} Champ de condition préalable: protoPayload.requestMetadata.callerIp
Valeur de la condition préalable: " "
Opérateur de condition préalable: NOT_EQUALS
Champ de données brutes: protoPayload.requestMetadata.callerIp
Champ de destination: event.idm.read_only_udm.principal.ip
metadata:{event_timestamp:{}.....}principal:{Ip:"1.1.1.1, 2.2.2.2"} } }
Ajouter des valeurs {"protoPayload":{"@type":"type.AuditLog","authenticationInfo":{"principalEmail":"admin@cmmar.co"},"requestMetadata":{"callerIp":"2.2.2.2, 3.3.3.3", "name":"Akamai Ltd"}}} Condition préalable 1 :
Champ de condition préalable:protoPayload.requestMetadata.callerIp
Valeur de la condition préalable: " "
Opérateur de condition préalable: NOT_EQUALS
Champ de données brutes: protoPayload.requestMetadata.callerIp
Champ de destination: event.idm.read_only_udm.principal.ip

Condition préalable 2 :
Champ de données brutes: protoPayload.requestMetadata.name
Champ de destination: event.idm.read_only_udm.metadata.product_name

Événements générés par l'analyseur prédéfini avant d'appliquer l'extension.
metadata:{event_timestamp:{} ... principal:{ip:"1.1.1.1"}}}

Résultat après l'application de l'extension.
timestamp:{} idm:{read_only_udm:{metadata:{event_timestamp:{} .... product_name: "Akamai Ltd"}principal:{ip:"1.1.1.1, 2.2.2.2, 3.3.3.3"}}}

Remplacer des valeurs {"protoPayload":{"@type":"type..AuditLog","authenticationInfo":{"principalEmail":"admin@cmmar.co"},"requestMetadata":{"callerIp":"2.2.2.2"}}} Champ de condition préalable: protoPayload.authenticationInfo.principalEmail
Valeur de la condition préalable: " "
Opérateur de condition préalable: NOT_EQUALS
Champ de données brutes: protoPayload.authenticationInfo.principalEmail
Champ de destination: event.idm.read_only_udm.principal.ip
Événements UDM générés par l'analyseur prédéfini avant d'appliquer l'extension.
timestamp:{} idm:{read_only_udm:{metadata:{event_timestamp:{} ... principal:{ip:"1.1.1.1"}}}

Sortie UDM après application de l'extension timestamp:{} idm:{read_only_udm:{metadata:{event_timestamp:{} ....} principal:{ip:"2.2.2.2"}}}

En savoir plus sur les champs de l'extracteur Syslog

Les champs de l'extracteur Syslog vous permettent de séparer l'en-tête Syslog d'un journal structuré en définissant l'expression régulière Grok, ainsi qu'un jeton nommé dans le modèle d'expression régulière pour stocker la sortie.

Définir les champs de l'extracteur Syslog

Les valeurs des champs Syslog et Target fonctionnent ensemble pour définir la manière dont l'extension d'analyse sépare l'en-tête Syslog de la partie structurée d'un journal brut. Dans le champ Syslog, vous définissez une expression à l'aide d'une combinaison de Grok et d'une syntaxe d'expression régulière. L'expression inclut un nom de variable qui identifie la partie structurée du journal brut. Dans le champ Cible, indiquez ce nom de variable.

L'exemple suivant montre comment ces champs fonctionnent ensemble.

Voici un exemple de journal brut:

<13>1 2022-09-14T15:03:04+00:00 fieldname fieldname - - - {"timestamp": "2021-03-14T14:54:40.842152+0000","flow_id": 1885148860701096, "src_ip": "10.11.22.1","src_port": 51972,"dest_ip": "1.2.3.4","dest_port": 55291,"proto": "TCP"}

Le journal brut contient les sections suivantes:

  • En-tête Syslog: <13> 2022-09-14T15:03:04+00:00 fieldname fieldname - - -

  • Événement au format JSON: {"timestamp": "2021-03-14T14:54:40.842152+0000","flow_id": 1885148860701096, "src_ip": "10.11.22.1","src_port": 51972,"dest_ip": "1.2.3.4","dest_port": 55291,"proto": "TCP"}

Pour séparer l'en-tête Syslog de la partie JSON du journal brut, utilisez l'exemple d'expression suivant dans le champ Syslog: %{TIMESTAMP_ISO8601} %{WORD} %{WORD} ([- ]+)?%{GREEDYDATA:msg}

  • Cette partie de l'expression identifie l'en-tête Syslog : %{TIMESTAMP\_ISO8601} %{WORD} %{WORD} ([- ]+)?
  • Cette partie de l'expression capture le segment JSON du journal brut : %{GREEDYDATA:msg}

Cet exemple inclut le nom de variable msg. Vous choisissez le nom de la variable. L'extension d'analyseur extrait le segment JSON du journal brut et l'attribue à la variable msg.

Dans le champ Cible, saisissez le nom de la variable msg. La valeur stockée dans la variable msg est entrée dans les instructions de mappage des champs de données que vous créez dans l'extension d'analyseur.

À l'aide de l'exemple de journal brut, le segment suivant correspond à l'entrée de l'instruction de mappage de données:

{"timestamp": "2021-03-14T14:54:40.842152+0000","flow_id": 1885148860701096, "src_ip": "10.11.22.1","src_port": 51972,"dest_ip": "1.2.3.4","dest_port": 55291,"proto": "TCP"}

L'image suivante montre les champs Syslog et Target (Cible) remplis:

Champs de l&#39;extracteur Syslog

Le tableau suivant fournit des exemples supplémentaires avec des exemples de journaux, le modèle d'extraction Syslog, le nom de la variable Cible et le résultat.

Exemple de journal brut Champ Syslog Champ cible Résultat
<13>1 2022-07-14T15:03:04+00:00 suricata suricata - - - {\"timestamp\": \"2021-03-14T14:54:40.842152+0000\",\"flow_id\": 1885148860701096,\"in_iface\": \"enp94s0\",\"event_type\": \"alert\",\"vlan\": 522,\"src_ip\": \"1.1.2.1\",\"src_port\": 51972,\"dest_ip\": \"1.2.3.4\",\"dest_port\": 55291,\"proto\": \"TCP\"}" %{TIMESTAMP_ISO8601} %{WORD} %{WORD} ([- ]+)?%{GREEDYDATA:msg} msg field_mappings { field: "msg" value: "{\"timestamp\": \"2021-03-14T14:54:40.842152+0000\",\"flow_id\": 1885148860701096,\"in_iface\": \"enp94s0\",\"event_type\": \"alert\",\"vlan\": 522,\"src_ip\": \"1.1.2.1\",\"src_port\": 51972,\"dest_ip\": \"1.2.3.4\",\"dest_port\": 55291,\"proto\": \"TCP\"}" }
<13>1 2022-07-14T15:03:04+00:00 suricata suricata - - - {\"timestamp\": \"2021-03-14T14:54:40.842152+0000\"} - - - {\"timestamp\": \"2021-03-14T14:54:40.842152+0000\",\"flow_id\": 1885148860701096,\"in_iface\": \"enp94s0\",\"event_type\": \"alert\",\"vlan\": 522,\"src_ip\": \"1.1.2.1\",\"src_port\": 51972,\"dest_ip\": \"1.2.3.4\",\"dest_port\": 55291,\"proto\": \"TCP\"} %{TIMESTAMP_ISO8601} %{WORD} %{WORD} ([- ]+)?%{GREEDYDATA:msg1} ([- ]+)?%{GREEDYDATA:msg2} msg2 field_mappings { field: "msg2" value: "{\"timestamp\": \"2021-03-14T14:54:40.842152+0000\",\"flow_id\": 1885148860701096,\"in_iface\": \"enp94s0\",\"event_type\": \"alert\",\"vlan\": 522,\"src_ip\": \"1.1.2.1\",\"src_port\": 51972,\"dest_ip\": \"1.2.3.4\",\"dest_port\": 55291,\"proto\": \"TCP\"}" }
"<13>1 2022-07-14T15:03:04+00:00 suricata suricata - - - {\"timestamp\": \"2021-03-14T14:54:40.842152+0000\"} - - - {\"timestamp\": \"2021-03-14T14:54:40.842152+0000\",\"flow_id\": 1885148860701096,\"in_iface\": \"enp94s0\",\"event_type\": \"alert\",\"vlan\": 522,\"src_ip\": \"1.1.2.1\",\"src_port\": 51972,\"dest_ip\": \"1.2.3.4\",\"dest_port\": 55291,\"proto\": \"TCP\"}" %{TIMESTAMP_ISO8601} %{WORD} %{WORD} ([- ]+)?%{GREEDYDATA:message} ([- ]+)?%{GREEDYDATA:msg2} msg2 Error - message already exists in state and not overwritable.

Contrôler l'accès aux extensions d'analyseur

De nouvelles autorisations sont disponibles pour contrôler qui peut afficher et gérer les extensions d'analyseur. Par défaut, les extensions d'analyseur sont accessibles aux utilisateurs disposant du rôle Administrateur. Pour en savoir plus sur la gestion des utilisateurs et des groupes, ou sur l'attribution de rôles, consultez la page Contrôle des accès basé sur les rôles.

Les nouveaux rôles dans Google Security Operations sont résumés dans le tableau suivant.

Fonctionnalité Action Description
Parser Supprimer Supprimez les extensions d'analyseur.
Parser Modifier Créer et modifier des extensions d'analyseur
Parser View Affichez les extensions de l'analyseur.