Collecter les journaux d'accès aux applications personnalisées

Compatible avec :

Ce document explique comment ingérer des journaux d'accès aux applications personnalisées dans Google Security Operations à l'aide de méthodes d'ingestion en flux continu ou de stockage cloud.

Les journaux d'accès aux applications personnalisées enregistrent les événements d'authentification, les décisions d'autorisation et les modèles d'accès des applications propriétaires ou personnalisées. Ces journaux sont essentiels pour surveiller l'activité des utilisateurs, détecter les tentatives d'accès non autorisées et assurer la conformité avec les règles de sécurité.

Avant de commencer

Assurez-vous de remplir les conditions suivantes :

  • Une instance Google SecOps
  • Journaux d'accès aux applications personnalisées au format JSON, CSV ou texte structuré
  • Accès à l'un des éléments suivants :
    • Bucket Google Cloud Storage (pour l'ingestion GCS)
    • Bucket Amazon S3 (pour l'ingestion S3)
    • Compte de stockage Microsoft Azure (pour l'ingestion Azure Blob)
    • Fonctionnalité de point de terminaison de webhook (pour l'ingestion basée sur le push)
    • Amazon Kinesis Data Firehose (pour l'ingestion en flux continu)

Créer un type de journal personnalisé

Le type de journal CUSTOM_APPLICATION_ACCESS n'existe pas en tant qu'analyseur prédéfini dans Google SecOps. Vous devez créer un type de journal personnalisé avant d'ingérer des journaux.

  1. Accédez à Paramètres du SIEM > Types de journaux disponibles.
  2. Cliquez sur Demander un type de journal.
  3. Sous Créer vous-même un type de journal personnalisé, saisissez les informations suivantes :
    • Fournisseur/Produit : saisissez Custom Application Access Logs.
    • Type de journal : saisissez CUSTOM_APPLICATION_ACCESS.
  4. Cliquez sur Créer un type de journal.

  5. Patientez 10 minutes pour vous assurer que le nouveau type de journal est disponible dans tous les composants avant de créer des flux.

Choisir votre méthode d'ingestion

Sélectionnez la méthode d'ingestion qui correspond le mieux à votre infrastructure :

  • Google Cloud Storage (GCS) : à utiliser si votre application écrit des journaux dans des buckets GCS ou si vous pouvez exporter des journaux vers GCS
  • Amazon S3 : à utiliser si votre application écrit des journaux dans des buckets S3 ou si vous pouvez exporter des journaux vers S3
  • Azure Blob Storage : à utiliser si votre application écrit des journaux dans Azure Storage ou si vous pouvez exporter des journaux vers Azure
  • Webhook : à utiliser si votre application peut envoyer des requêtes HTTP POST à un point de terminaison externe
  • Amazon Kinesis Data Firehose : à utiliser si votre application écrit dans CloudWatch Logs ou si vous avez besoin d'un streaming en temps réel

Option 1 : Ingérer des données à partir de Google Cloud Storage

Créer un bucket Google Cloud Storage

  1. Accédez à Google Cloud Console.
  2. Sélectionnez votre projet ou créez-en un.
  3. Dans le menu de navigation, accédez à Cloud Storage> Buckets.
  4. Cliquez sur Créer un bucket.
  5. Fournissez les informations de configuration suivantes :

    Paramètre Valeur
    Nommer votre bucket Saisissez un nom unique (par exemple, custom-app-access-logs).
    Type d'emplacement Choisissez en fonction de vos besoins (région, birégion ou multirégion).
    Emplacement Sélectionnez l'emplacement (par exemple, us-central1).
    Classe de stockage Standard (recommandé pour les journaux auxquels vous accédez fréquemment)
    Access control (Contrôle des accès) Uniforme (recommandé)
    Outils de protection Facultatif : Activer la gestion des versions des objets ou la règle de conservation
  6. Cliquez sur Créer.

Configurer votre application pour écrire des journaux dans GCS

Configurez votre application personnalisée pour qu'elle écrive des journaux d'accès dans le bucket GCS que vous avez créé. Les journaux doivent être rédigés dans l'un des formats suivants :

  • Format JSON (recommandé) :

    {"timestamp": "2025-01-15T10:30:00Z", "user": "john.doe@example.com", "action": "login", "result": "success", "source_ip": "203.0.113.45", "application": "custom-app", "resource": "/api/users"}
    
  • Format CSV :

    timestamp,user,action,result,source_ip,application,resource
    2025-01-15T10:30:00Z,john.doe@example.com,login,success,203.0.113.45,custom-app,/api/users
    
  • JSON délimité par des retours à la ligne (NDJSON) :

    {"timestamp": "2025-01-15T10:30:00Z", "user": "john.doe@example.com", "action": "login", "result": "success"}
    {"timestamp": "2025-01-15T10:30:05Z", "user": "jane.smith@example.com", "action": "access", "result": "denied"}
    

Récupérer le compte de service Google SecOps

Google SecOps utilise un compte de service unique pour lire les données de votre bucket GCS. Vous devez accorder à ce compte de service l'accès à votre bucket.

  1. Accédez à Paramètres SIEM> Flux.
  2. Cliquez sur Add New Feed (Ajouter un flux).
  3. Cliquez sur Configurer un flux unique.
  4. Dans le champ Nom du flux, saisissez un nom pour le flux (par exemple, Custom Application Access Logs - GCS).
  5. Sélectionnez Google Cloud Storage V2 comme Type de source.
  6. Sélectionnez CUSTOM_APPLICATION_ACCESS_CUSTOM comme type de journal.
  7. Cliquez sur Obtenir un compte de service.
  8. Une adresse e-mail unique pour le compte de service s'affiche, par exemple :

    chronicle-12345678@chronicle-gcp-prod.iam.gserviceaccount.com
    
  9. Copiez cette adresse e-mail pour l'utiliser à l'étape suivante.

Accorder des autorisations IAM au compte de service Google SecOps

Le compte de service Google SecOps a besoin du rôle Lecteur des objets Storage sur votre bucket GCS.

  1. Accédez à Cloud Storage > Buckets.
  2. Cliquez sur le nom de votre bucket.
  3. Accédez à l'onglet Autorisations.
  4. Cliquez sur Accorder l'accès.
  5. Fournissez les informations de configuration suivantes :
    • Ajouter des comptes principaux : collez l'adresse e-mail du compte de service Google SecOps.
    • Attribuer des rôles : sélectionnez Lecteur des objets de l'espace de stockage.
  6. Cliquez sur Enregistrer.

Configurer le flux dans Google SecOps

  1. Revenez à la page de création du flux (ou accédez à Paramètres du SIEM> Flux> Ajouter un flux).
  2. Cliquez sur Suivant.
  3. Spécifiez les valeurs des paramètres d'entrée suivants :

    • URL du bucket de stockage : saisissez l'URI du bucket GCS avec le chemin d'accès au préfixe :

      gs://custom-app-access-logs/
      
    • Option de suppression de la source : sélectionnez l'option de suppression de votre choix :

      • Jamais : ne supprime jamais aucun fichier après les transferts (recommandé pour les tests).
      • Supprimer les fichiers transférés : supprime les fichiers après un transfert réussi.
      • Supprimer les fichiers transférés et les répertoires vides : supprime les fichiers et les répertoires vides après un transfert réussi.
    • Âge maximal des fichiers : incluez les fichiers modifiés au cours des derniers jours (180 jours par défaut).

    • 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 (par exemple, custom_app_access).

  4. Cliquez sur Suivant.

  5. Vérifiez la configuration de votre nouveau flux sur l'écran Finaliser, puis cliquez sur Envoyer.

Option 2 : Ingérer des données depuis Amazon S3

Créer un bucket Amazon S3

  1. Ouvrez la console Amazon S3.
  2. Cliquez sur Créer un bucket.
  3. Fournissez les informations de configuration suivantes :
    • Nom du bucket : saisissez un nom explicite pour le bucket (par exemple, custom-app-access-logs).
    • Région : sélectionnez la région dans laquelle votre application s'exécute (par exemple, us-east-1).
  4. Cliquez sur Créer.

Créer un utilisateur IAM avec accès à S3

  1. Ouvrez la console IAM.
  2. Cliquez sur Utilisateurs > Ajouter un utilisateur.
  3. Saisissez un nom d'utilisateur (par exemple, chronicle-s3-reader).
  4. Sélectionnez Accès programmatique.
  5. Cliquez sur Next: Permissions (Suivant : Autorisations).
  6. Sélectionnez Attach existing policies directly (Joindre directement des règles existantes).
  7. Recherchez et sélectionnez la règle AmazonS3FullAccess.
  8. Cliquez sur Next: Tags (Suivant : Tags).
  9. Cliquez sur Suivant : Relire.
  10. Cliquez sur Créer un utilisateur.
  11. Cliquez sur Download .csv file (Télécharger le fichier .csv) pour enregistrer la clé d'accès et la clé d'accès secrète pour référence ultérieure.
  12. Cliquez sur Fermer.

Configurer votre application pour écrire des journaux dans S3

Configurez votre application personnalisée pour écrire des journaux d'accès dans le bucket S3 que vous avez créé. Utilisez les mêmes formats de journaux que ceux décrits dans la section GCS (JSON, CSV ou NDJSON).

Configurer un flux dans Google SecOps pour ingérer des journaux depuis S3

  1. Accédez à Paramètres SIEM> Flux.
  2. Cliquez sur Add New Feed (Ajouter un flux).
  3. Cliquez sur Configurer un flux unique.
  4. Dans le champ Nom du flux, saisissez un nom pour le flux (par exemple, Custom Application Access Logs - S3).
  5. Sélectionnez Amazon S3 V2 comme type de source.
  6. Sélectionnez CUSTOM_APPLICATION_ACCESS_CUSTOM comme type de journal.
  7. Cliquez sur Suivant, puis sur Envoyer.
  8. Spécifiez les valeurs des paramètres d'entrée suivants :

    • URI S3 : saisissez l'URI du bucket au format suivant :

      s3://custom-app-access-logs/
      
    • Option de suppression de la source : sélectionnez l'option de suppression de votre choix.

    • Âge maximal des fichiers : incluez les fichiers modifiés au cours des derniers jours (180 jours par défaut).

    • ID de clé d'accès : clé d'accès utilisateur ayant accès au bucket S3.

    • Clé d'accès secrète : clé secrète de l'utilisateur ayant accès au bucket S3.

    • 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 (par exemple, custom_app_access).

  9. Cliquez sur Suivant, puis sur Envoyer.

Option 3 : Ingérer des données depuis Azure Blob Storage

Créer un compte de stockage Azure

  1. Dans le portail Azure, recherchez Comptes de stockage.
  2. Cliquez sur + Créer.
  3. Fournissez les informations de configuration suivantes :

    Paramètre Valeur
    Abonnement Sélectionnez votre abonnement Azure.
    Groupe de ressources Sélectionner une base de données existante ou en créer une
    Nom du compte de stockage Saisissez un nom unique (par exemple, customappaccesslogs).
    Région Sélectionnez la région (par exemple, East US).
    Performances Standard (recommandé)
    Redondance LRS (stockage localement redondant)
  4. Cliquez sur Examiner et créer.

  5. Examinez l'aperçu du compte, puis cliquez sur Créer.

  6. Attendez la fin du déploiement.

Obtenir les identifiants du compte de stockage

  1. Accédez au compte de stockage que vous venez de créer.
  2. Dans le volet de navigation de gauche, sélectionnez Clés d'accès sous Sécurité et mise en réseau.
  3. Cliquez sur Afficher les clés.
  4. Copiez et enregistrez les éléments suivants pour une utilisation ultérieure :
    • Nom du compte de stockage : customappaccesslogs
    • Touche 1 ou Touche 2 : clé d'accès partagée

Créer un conteneur d'objets blob

  1. Dans le même compte de stockage, sélectionnez Conteneurs dans le panneau de navigation de gauche.
  2. Cliquez sur + Conteneur.
  3. Fournissez les informations de configuration suivantes :
    • Nom : saisissez access-logs.
    • Niveau d'accès public : sélectionnez Privé (pas d'accès anonyme).
  4. Cliquez sur Créer.

Configurer votre application pour écrire des journaux dans Azure Blob Storage

Configurez votre application personnalisée pour qu'elle écrive les journaux d'accès dans le conteneur Azure Blob Storage que vous avez créé. Utilisez les mêmes formats de journaux que ceux décrits dans la section GCS (JSON, CSV ou NDJSON).

Configurer un flux dans Google SecOps pour ingérer les journaux d'Azure

  1. Accédez à Paramètres SIEM> Flux.
  2. Cliquez sur Add New Feed (Ajouter un flux).
  3. Cliquez sur Configurer un flux unique.
  4. Dans le champ Nom du flux, saisissez un nom pour le flux (par exemple, Custom Application Access Logs - Azure).
  5. Sélectionnez Microsoft Azure Blob Storage V2 comme Type de source.
  6. Sélectionnez CUSTOM_APPLICATION_ACCESS_CUSTOM comme type de journal.
  7. Cliquez sur Suivant.
  8. Spécifiez les valeurs des paramètres d'entrée suivants :

    • URI Azure : saisissez l'URL du point de terminaison du service Blob avec le chemin d'accès au conteneur :

      https://customappaccesslogs.blob.core.windows.net/access-logs/
      
    • Option de suppression de la source : sélectionnez l'option de suppression de votre choix.

    • Âge maximal des fichiers : incluez les fichiers modifiés au cours des derniers jours (180 jours par défaut).

    • Clé partagée : saisissez la valeur de la clé partagée (clé d'accès) que vous avez récupérée à partir du compte de stockage.

    • 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 (par exemple, custom_app_access)

  9. Cliquez sur Suivant.

  10. Vérifiez la configuration de votre nouveau flux sur l'écran Finaliser, puis cliquez sur Envoyer.

Option 4 : Ingérer à l'aide d'un webhook

Créer un flux de webhook dans Google SecOps

  1. Accédez à Paramètres SIEM> Flux.
  2. Cliquez sur Add New Feed (Ajouter un flux).
  3. Cliquez sur Configurer un flux unique.
  4. Dans le champ Nom du flux, saisissez un nom pour le flux (par exemple, Custom Application Access Logs - Webhook).
  5. Sélectionnez Webhook comme type de source.
  6. Sélectionnez CUSTOM_APPLICATION_ACCESS_CUSTOM comme type de journal.
  7. Cliquez sur Suivant.
  8. Spécifiez les valeurs des paramètres d'entrée suivants :
    • Délimiteur de fractionnement : saisissez \n pour fractionner les événements délimités par un saut de ligne (si vous envoyez plusieurs événements par requête).
    • 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 (par exemple, custom_app_access).
  9. Cliquez sur Suivant.
  10. 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

  1. Sur la page d'informations sur le flux, cliquez sur Générer une clé secrète.
  2. Une boîte de dialogue affiche la clé secrète.
  3. Copiez et enregistrez la clé secrète de manière sécurisée.

Obtenir l'URL du point de terminaison du flux

  1. Accédez à l'onglet Détails du flux.
  2. Dans la section Endpoint Information (Informations sur le point de terminaison), copiez l'URL du point de terminaison du flux.
  3. Le format d'URL est le suivant :

    https://malachiteingestion-pa.googleapis.com/v2/unstructuredlogentries:batchCreate
    
  4. Enregistrez cette URL pour les étapes suivantes.

  5. Cliquez sur OK.

Créer une clé API Google Cloud

Google SecOps nécessite une clé API pour l'authentification. Créez une clé API restreinte dans la Google Cloud Console.

  1. Accédez à la page Identifiants de la console Google Cloud.
  2. Sélectionnez votre projet (celui associé à votre instance Chronicle).
  3. Cliquez sur Créer des identifiants> Clé API.
  4. Une clé API est créée et affichée dans une boîte de dialogue.
  5. Cliquez sur Modifier la clé API pour la restreindre.
  6. Sur la page des paramètres Clé API :
    • Nom : saisissez un nom descriptif (par exemple, Chronicle Webhook API Key).
  7. Sous Restrictions relatives aux API :
    1. Sélectionnez Restreindre la clé.
    2. Dans le menu déroulant Sélectionner des API, recherchez et sélectionnez API Google SecOps (ou API Chronicle).
  8. Cliquez sur Enregistrer.
  9. Copiez la valeur de la clé API dans le champ Clé API en haut de la page.
  10. Enregistrez la clé API de manière sécurisée.

Configurer votre application pour envoyer des journaux via un webhook

Configurez votre application personnalisée pour qu'elle envoie des requêtes HTTP POST au point de terminaison du webhook Chronicle.

  • Créez l'URL du webhook :

    1. Ajoutez la clé API à l'URL du point de terminaison du flux :

      https://malachiteingestion-pa.googleapis.com/v2/unstructuredlogentries:batchCreate?key=<API_KEY>
      
    2. Remplacez <API_KEY> par la clé API que vous avez créée.

  • Format de la requête HTTP POST :

    POST https://malachiteingestion-pa.googleapis.com/v2/unstructuredlogentries:batchCreate?key=<API_KEY> HTTP/1.1
    Content-Type: application/json
    x-chronicle-auth: <SECRET_KEY>
    
    {"timestamp": "2025-01-15T10:30:00Z", "user": "john.doe@example.com", "action": "login", "result": "success", "source_ip": "203.0.113.45"}
    
  • Pour plusieurs événements (délimités par un saut de ligne) :

    POST https://malachiteingestion-pa.googleapis.com/v2/unstructuredlogentries:batchCreate?key=<API_KEY> HTTP/1.1
    Content-Type: application/json
    x-chronicle-auth: <SECRET_KEY>
    
    {"timestamp": "2025-01-15T10:30:00Z", "user": "john.doe@example.com", "action": "login", "result": "success"}
    {"timestamp": "2025-01-15T10:30:05Z", "user": "jane.smith@example.com", "action": "access", "result": "denied"}
    
  • Exemple utilisant curl :

    curl -X POST \
      "https://malachiteingestion-pa.googleapis.com/v2/unstructuredlogentries:batchCreate?key=YOUR_API_KEY" \
      -H "Content-Type: application/json" \
      -H "x-chronicle-auth: YOUR_SECRET_KEY" \
      -d '{"timestamp": "2025-01-15T10:30:00Z", "user": "john.doe@example.com", "action": "login", "result": "success", "source_ip": "203.0.113.45"}'
    

Option 5 : Ingestion à l'aide d'Amazon Kinesis Data Firehose

Créer un flux dans Google SecOps

  1. Accédez à Paramètres SIEM> Flux.
  2. Cliquez sur Add New Feed (Ajouter un flux).
  3. Cliquez sur Configurer un flux unique.
  4. Dans le champ Nom du flux, saisissez un nom pour le flux (par exemple, Custom Application Access Logs - Firehose).
  5. Sélectionnez Amazon Data Firehose comme type de source.
  6. Sélectionnez CUSTOM_APPLICATION_ACCESS_CUSTOM comme type de journal.
  7. Cliquez sur Suivant.
  8. Spécifiez les valeurs des paramètres d'entrée suivants :
    • Délimiteur de fractionnement : saisissez \n pour fractionner les journaux délimités par un retour à la ligne.
    • 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 (par exemple, custom_app_access).
  9. Cliquez sur Suivant.
  10. Vérifiez la configuration du flux, puis cliquez sur Envoyer.
  11. Cliquez sur Générer une clé secrète pour générer une clé secrète permettant d'authentifier ce flux.
  12. Copiez et enregistrez la clé secrète, car vous ne pourrez plus l'afficher.
  13. Accédez à l'onglet Détails.
  14. Copiez l'URL du point de terminaison du flux depuis le champ Informations sur le point de terminaison.
  15. Cliquez sur OK.

Créer une clé API pour le flux Amazon Data Firehose

  1. Accédez à la page Identifiants de la console Google Cloud à l'adresse https://console.cloud.google.com/apis/credentials.
  2. Cliquez sur Créer des identifiants, puis sélectionnez Clé API.
  3. Cliquez sur Modifier la clé API pour la restreindre.
  4. Sous Restrictions relatives aux API, sélectionnez Restreindre la clé.
  5. Recherchez et sélectionnez l'API Google SecOps.
  6. Cliquez sur Enregistrer.
  7. Copiez et enregistrez la clé API.

Construire l'URL du point de terminaison

  1. Ajoutez la clé API à l'URL du point de terminaison du flux au format suivant :

    <FEED_ENDPOINT_URL>?key=<API_KEY>
    
  2. Remplacez les éléments suivants :

    • <FEED_ENDPOINT_URL> : URL du point de terminaison du flux à l'étape précédente
    • <API_KEY> : clé API de l'étape précédente

    Exemple :

    https://malachiteingestion-pa.googleapis.com/v2/unstructuredlogentries:batchCreate?key=AIzaSyD...
    
  3. Enregistrez cette URL complète pour l'étape suivante.

Créer une stratégie IAM pour Firehose

  1. Dans la console AWS, accédez à IAM > Policies > Create policy > JSON.
  2. Collez le code JSON de la règle suivant :

    {
        "Version": "2012-10-17",
        "Statement": [
            {
                "Effect": "Allow",
                "Action": [
                    "firehose:PutRecord",
                    "firehose:PutRecordBatch"
                ],
                "Resource": "arn:aws:firehose:us-east-1:123456789012:deliverystream/CustomAppAccessToChronicle"
            }
        ]
    }
    
  3. Remplacez les éléments suivants :

    • us-east-1 : votre région AWS
    • 123456789012 : ID de votre compte AWS (numéro à 12 chiffres)
    • CustomAppAccessToChronicle : nom de votre flux de diffusion Firehose (vous le créerez à l'étape suivante)
  4. Nommez la règle CustomAppAccessFirehoseWritePolicy.

  5. Cliquez sur Créer une règle.

Créer un rôle IAM pour CloudWatch Logs

  1. Accédez à IAM > Rôles > Créer un rôle.
  2. Sélectionnez Règle de confiance personnalisée, puis collez :

    {
        "Version": "2012-10-17",
        "Statement": [
            {
                "Effect": "Allow",
                "Principal": {
                    "Service": "logs.us-east-1.amazonaws.com"
                },
                "Action": "sts:AssumeRole"
            }
        ]
    }
    
  3. Remplacez us-east-1 par votre région AWS.

  4. Cliquez sur Suivant.

  5. Recherchez et sélectionnez la règle CustomAppAccessFirehoseWritePolicy que vous avez créée à l'étape précédente.

  6. Cliquez sur Suivant.

  7. Nommez le rôle CloudWatchLogsToFirehoseRole.

  8. Cliquez sur Créer un rôle.

Créer un flux de diffusion Kinesis Data Firehose

  1. Dans la console AWS, accédez à Kinesis > Data Firehose > Create delivery stream.
  2. Fournissez les informations de configuration suivantes :

    • Source et destination :

      • Source : sélectionnez PUT direct ou autres sources.
      • Destination : sélectionnez Point de terminaison HTTP.
    • Nom du flux de diffusion :

      • Nom du flux de livraison : saisissez CustomAppAccessToChronicle.
    • Destination du point de terminaison HTTP :

      • URL du point de terminaison HTTP : saisissez l'URL complète du point de terminaison que vous avez créée précédemment (point de terminaison du flux + clé API).
      • Encodage du contenu : sélectionnez GZIP (recommandé pour économiser de la bande passante).
    • En-têtes HTTP personnalisés :

      • Cliquez sur Ajouter un en-tête HTTP personnalisé.
      • Nom de l'en-tête : saisissez X-Goog-Chronicle-Auth.
      • Valeur de l'en-tête : saisissez la clé secrète que vous avez enregistrée lors d'une étape précédente.
    • Paramètres de sauvegarde :

      • Sauvegarde des enregistrements sources dans Amazon S3 : sélectionnez Données ayant échoué uniquement (recommandé).
      • Bucket S3 : sélectionnez un bucket existant ou créez-en un pour les enregistrements ayant échoué.
    • Conseils concernant le tampon :

      • Taille de la mémoire tampon : saisissez 1 Mio (minimum pour les points de terminaison HTTP).
      • Intervalle de mise en mémoire tampon : saisissez 60 secondes.
    • Durée de la nouvelle tentative :

      • Durée de la nouvelle tentative : saisissez 300 secondes (5 minutes).
  3. Cliquez sur Créer un flux de diffusion.

  4. Attendez que l'état du flux de diffusion passe à Actif (1 à 2 minutes).

Configurer votre application pour écrire dans CloudWatch Logs

Configurez votre application personnalisée pour écrire des journaux d'accès dans un groupe de journaux CloudWatch. Créez ensuite un filtre d'abonnement pour diffuser les journaux vers Firehose.

  1. Dans la console AWS, accédez à CloudWatch > Journaux > Groupes de journaux.
  2. Créez un groupe de journaux ou sélectionnez-en un existant dans lequel votre application écrit les journaux.
  3. Cliquez sur l'onglet Filtres d'abonnement.
  4. Cliquez sur Créer > Créer un filtre d'abonnement Amazon Kinesis Data Firehose.
  5. Fournissez les informations de configuration suivantes :

    • Destination : sélectionnez le flux de diffusion CustomAppAccessToChronicle.
    • Accorder l'autorisation : sélectionnez le rôle CloudWatchLogsToFirehoseRole.
    • Nom du filtre d'abonnement : saisissez CustomAppAccessToChronicle.
    • Format du journal : sélectionnez Autre (Google SecOps gère l'analyse).
    • Modèle de filtre d'abonnement : laissez ce champ vide pour envoyer tous les événements.
  6. Cliquez sur Démarrer le streaming.

  7. Les journaux sont diffusés en temps réel vers Google SecOps via Firehose.

Créer un analyseur personnalisé

Après avoir ingéré les journaux, vous devez créer un analyseur personnalisé pour normaliser les données au format UDM.

  1. Accédez à Paramètres SIEM> Analyseurs.
  2. Cliquez sur Créer un analyseur.
  3. Sélectionnez CUSTOM_APPLICATION_ACCESS_CUSTOM comme type de journal.
  4. Utilisez l'éditeur d'analyseur pour créer des modèles Grok ou des extensions d'analyseur qui mappent vos champs de journaux aux champs UDM.

    Exemple de mappage de l'analyseur :

    Champ de journal personnalisé Champ UDM
    timestamp metadata.event_timestamp
    user principal.user.email_addresses
    action security_result.action
    result security_result.summary
    source_ip principal.ip
    application target.application
    resource target.resource.name
  5. Testez l'analyseur avec des exemples de journaux.

  6. Cliquez sur Enregistrer pour activer l'analyseur.

Pour obtenir des instructions détaillées sur la création d'analyseurs, consultez Options d'analyseur en libre-service.

Vérifier l'ingestion

Après avoir configuré le flux et l'analyseur, vérifiez que les journaux sont ingérés :

  1. Accédez à Rechercher > Recherche UDM.
  2. Exécutez la requête suivante :

    metadata.log_type = "CUSTOM_APPLICATION_ACCESS_CUSTOM"
    
  3. Vérifiez que les événements apparaissent dans les résultats de recherche.

  4. Vérifiez que les champs UDM sont correctement renseignés en fonction de la configuration de votre analyseur.

Table de mappage UDM

Champ de journal Mappage UDM Logique
supplémentaires Fusionné avec les libellés créés à partir de service, env, msg.attachment.fileName, msg.attachment.digest, msg.attachment.key, msg.attachment.authorizeId, msg.attachment.contentType, dest.type, type, msg.sortID, msg.refID, state.reported.applications_installed, state.reported.applications_status, state.reported.ota_queue, state.reported.VICMB_Deg_Battery_LimpHome, state.reported.VICMB_Inhibit_Propulsion, state.reported.VICMB_FA_LostComm_BPCM, state.reported.VICMB_FA_LostComm_SFAM1, state.reported.VICMB_Inhibit_HV, state.reported.VICMB_FA_LostComm_RIDM, state.reported.VICMB_FA_LostComm_RWAM1, state.reported.uname, meta.reported.battery_charging_rate_kw.timestamp, state.reported.battery_charging_rate_kw, meta.reported.cell.connected.timestamp, meta.reported.cell.packet_loss.timestamp, meta.reported.cell.average_ping_ms.timestamp, meta.reported.cell.bitrate.timestamp, meta.reported.cell.download_speed_bytes_per_sec.timestamp, meta.reported.cell.signal_strength.timestamp, meta.reported.cell.signal.timestamp, state.reported.cell.connected, state.reported.cell.packet_loss, state.reported.cell.average_ping_ms, state.reported.cell.bitrate, state.reported.cell.download_speed_bytes_per_sec, state.reported.cell.signal_strength, state.reported.cell.signal
request_time metadata.collected_timestamp Analysé à partir de request_time au format ISO8601
msg_1, msg.body metadata.description Valeur de msg_1 si elle n'est pas vide, sinon msg.body
user_id, src_email, otadata.1687965118.initiator metadata.event_type Défini sur "USER_UNCATEGORIZED" si l'un des champs user_id, src_email ou otadata.1687965118.initiator est présent, sinon "GENERIC_EVENT"
otadata.1687965118.deployment_id metadata.product_deployment_id Valeur copiée directement
version metadata.product_version Valeur copiée directement
response.status network.http.response_code Converti en entier
request_id principal.resource.product_object_id Valeur copiée directement
msg.attachment.url, otadata.1687965118.download_url principal.url Valeur de msg.attachment.url si elle n'est pas vide, sinon otadata.1687965118.download_url
src_email, otadata.1687965118.initiator principal.user.email_addresses Valeur de src_email si elle correspond à l'expression régulière d'adresse e-mail, sinon valeur de otadata.1687965118.initiator
user_id principal.user.userid Valeur copiée directement
level security_result.severity Définissez la valeur sur "INFORMATIONAL" si le niveau est "INFO".
metadata.product_name Définissez-le sur "Accès personnalisé aux applications".
metadata.vendor_name Définissez-le sur "Accès personnalisé aux applications".

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