Créer des extensions d'analyseur avec Gemini

Compatible avec :

Ce guide explique comment les analystes de sécurité et les ingénieurs de détection peuvent utiliser des requêtes en langage naturel pour améliorer les analyseurs de journaux par défaut. Grâce à la fonctionnalité d'extension d'analyseur IA, vous pouvez rapidement extraire des champs supplémentaires, appliquer une logique conditionnelle et mapper des journaux bruts au modèle de données unifié (UDM) sans écrire de syntaxe d'analyseur complexe ni d'expressions régulières.

Lorsqu'un analyseur de source du journal par défaut dans Google SecOps analyse votre source du journal, il peut omettre des attributs personnalisés spécifiques au client, des champs facultatifs ou une télémétrie spécialisée. La fonctionnalité d'extension d'analyseur IA vous permet d'effectuer les opérations suivantes :

  • Extraire des champs supplémentaires à partir de journaux bruts et les mapper à des champs UDM standards ou à des additional.fields personnalisés.
  • Appliquer une logique conditionnelle et des transformations de valeurs, par exemple en mappant des actions de chaîne à des types énumérés UDM.
  • Affiner les extensions générées de manière interactive lors de sessions de chat multitour sans partir de zéro.

Terminologie clé

  • Modèle de données unifié (UDM) : structure de données standard utilisée dans Google SecOps pour stocker et analyser les données de journaux.

Avant de commencer

Avant de commencer, vérifiez que les conditions préalables suivantes sont remplies :

  • Quotas d'utilisation : vous pouvez exécuter un maximum de 10 sessions de génération d'extensions d'analyseur IA par période de 24 heures, avec un maximum de cinq messages par session.

Bonnes pratiques pour rédiger des requêtes

Pour obtenir des extensions d'analyseur précises dès la première tentative, suivez ces consignes :

  1. Spécifiez explicitement la source et la cible : indiquez clairement quelle partie du journal brut extraire et quel chemin de champ UDM exact elle remplit, par exemple principal.ip, target.user.email_addresses ou security_result.action.
  2. Utilisez des guillemets pour les littéraux de correspondance exacte : lorsque vous faites référence à des chaînes littérales, des délimiteurs ou des exemples de valeurs dans des journaux non structurés, mettez-les entre guillemets, par exemple "198.51.100.0" ou "allow".
  3. Gérez les champs personnalisés à l'aide de additional.fields : pour les attributs propriétaires ou spécifiques à un fournisseur qui ne disposent pas d'un champ UDM dédié, demandez à l'IA de les mapper dans additional.fields avec un nom de clé clair, par exemple additional.fields["application"].

Générer une extension d'analyseur

Vous pouvez démarrer le workflow d'extension d'analyseur à partir de l'un des emplacements suivants dans Google SecOps :

  • Page des paramètres des analyseurs : accédez à la page Analyseurs pour sélectionner et étendre n'importe quel analyseur de journaux existant.
  • Page de recherche : lorsque vous examinez des journaux sur la page Recherche, ouvrez le flux de création d'extension directement à partir d'un événement avec des champs non analysés.

Pour générer une extension d'analyseur à partir de la page des paramètres Analyseurs, procédez comme suit :

  1. Dans Google SecOps, accédez à la page des paramètres Analyseurs.
  2. Recherchez le type de journal que vous souhaitez étendre.
  3. Cliquez sur le menu à côté de l'analyseur, puis sélectionnez l'option permettant de l'étendre.
  4. Dans le champ JOURNAL BRUT, collez un exemple du journal que vous souhaitez analyser.
  5. Dans la section Méthode d'extension, sélectionnez l'onglet Générer avec l'IA.
  6. Dans le champ de requête, saisissez une description en anglais simple de l'extraction.
  7. Cliquez sur Confirmer.

    Le système génère le code d'extension et met à jour la sortie UDM.

Affiner l'extension d'analyseur

Vous pouvez créer et affiner votre extension d'analyseur de manière itérative lors de sessions de chat multitour. Lorsque vous envoyez une requête de suivi, l'IA applique vos nouvelles instructions en plus de l'extension générée précédemment. Les mappages et la logique conditionnelle existants des tours précédents sont conservés automatiquement, sauf si vous demandez explicitement à les remplacer ou à les supprimer.

  1. Dans le champ de requête, saisissez une instruction de suivi pour ajuster le code généré.
  2. Cliquez sur Confirmer.
  3. Après chaque requête, prévisualisez le code d'extension généré, examinez les exemples de sorties UDM, puis confirmez ou ajustez la logique.

L'exemple de workflow suivant montre comment l'affinage itératif crée une extension d'analyseur sur plusieurs tours :

  1. Tour 1 (extraction initiale) :
    • Requête utilisateur : "Extract source IP '198.51.100.0' to principal.ip and destination IP '198.51.100.1' to target.ip."
    • Résultat : l'IA génère une extension mappant principal.ip et target.ip.
  2. Tour 2 (mappage additif) :
    • Requête utilisateur : "Also map virtual system string 'vsys1' to observer.administrative_domain."
    • Résultat : l'IA met à jour l'extension pour mapper observer.administrative_domain tout en conservant les mappages d'adresses IP du tour 1.
  3. Tour 3 (affinage conditionnel) :
    • Requête utilisateur : "In addition, map action string 'allow' to security_result[0].action as ALLOW."
    • Résultat : l'IA intègre le mappage d'énumération d'action conditionnelle en plus de toutes les extractions précédentes.

Valider l'extension d'analyseur

  1. Cliquez sur Valider.
  2. Consultez les métriques de validation une fois le processus terminé.

Accéder aux informations de référence

Utilisez les exemples suivants pour créer des requêtes précises.

Requêtes de journaux structurés

Pour les journaux structurés dans lesquels les données sont organisées en clés, attributs ou balises XML nommés, spécifiez les noms ou les chemins des champs dans votre requête.

Exemple de journal structuré au format JSON

{
  "insertId": "u0mlpdesys",
  "logName": "projects/sample-project-id/logs/cloudaudit.googleapis.com%2Fdata_access",
  "protoPayload": {
    "authenticationInfo": {
      "principalEmail": "analyst@example-domain.com"
    },
    "methodName": "GenerateAccessToken",
    "requestMetadata": {
      "callerIp": "203.0.113.195",
      "callerSuppliedUserAgent": "google-cloud-sdk gcloud/392.0.0"
    },
    "resourceName": "projects/-/serviceAccounts/110649196922301550006",
    "serviceName": "iamcredentials.googleapis.com"
  }
}

Exemples de requêtes pour les journaux structurés

Instruction de requête Champ ou clé source Champ UDM cible
"Map principalEmail to principal.user.email_addresses." principalEmail principal.user.email_addresses
"Extract callerIp to principal.ip and methodName to metadata.product_event_type." callerIp, methodName principal.ip, metadata.product_event_type
"Map resourceName to target.resource.name and serviceName to target.application." resourceName, serviceName target.resource.name, target.application
"From XML tags, map /Event/System/Hostname to principal.hostname." /Event/System/Hostname principal.hostname

Requêtes de journaux non structurés

Pour les journaux non structurés, spécifiez les valeurs littérales directement à partir de l'exemple de journal, des références positionnelles ou des libellés descriptifs.

Exemple de message syslog non structuré

<14>Nov  9 18:52:45 198.51.100.1 1,2021/11/09 18:52:45,007051000184334,TRAFFIC,start,2561,2021/11/09 18:52:45,198.51.100.0,198.51.100.1,0.0.0.0,0.0.0.0,any allow,,,ping,vsys1,LAN,LAN,ethernet1/2,ethernet1/2,LFPpan,2021/11/09 18:52:45,9729,6,0,0,2048,0,0x100000,icmp,allow,444,444,0,6

Exemples de requêtes pour les journaux non structurés

Instruction de requête Exemple de valeur littérale ou de description Champ UDM cible
"Extract source IP '198.51.100.0' to principal.ip and destination IP '198.51.100.1' to target.ip." '198.51.100.0', '198.51.100.1' principal.ip, target.ip
"Extract the application string 'ping' from the log and map it to additional.fields['application']." 'ping' additional.fields["application"]
"Map rule name 'any allow' to security_result.rule_id." 'any allow' security_result[0].rule_id
"Extract sent bytes and received bytes into network.sent_bytes and network.received_bytes." Compteurs d'octets numériques dans le journal network.sent_bytes, network.received_bytes

Requêtes de logique conditionnelle

Décrivez la logique conditionnelle pour normaliser les valeurs de journaux bruts en énumérations UDM spécifiques.

  • Normalisation de l'énumération "If the firewall action in the log is 'allow', set security_result.action to ALLOW; otherwise set security_result.action to BLOCK."
  • Mappage de champ conditionnel : "If the protocol is 'icmp', map the ICMP type and code into network.icmp.type and network.icmp.code."
  • Mappage d'état : "When the log status contains 'success' or '0', set security_result.severity to INFO; if it contains 'error', set it to ERROR."

Limites d'utilisation

Pour maintenir des performances optimales et la disponibilité des ressources, la fonctionnalité d'extension d'analyseur IA applique les quotas d'utilisation suivants :

  • 10 sessions par période de 24 heures : chaque client dispose d'un maximum de 10 sessions de génération d'extensions d'analyseur IA par période de 24 heures.
  • 5 messages par session : au cours d'une même session, vous pouvez envoyer jusqu'à cinq messages, y compris votre requête initiale et les tours d'affinage suivants, pour créer et affiner votre extension d'analyseur.

Si vous atteignez la limite de messages par session, vous pouvez enregistrer votre extension actuelle ou démarrer une nouvelle session.

Étape suivante

Vous avez encore besoin d'aide ? Obtenez des réponses auprès des membres de la communauté et des professionnels Google SecOps.