Collecter les journaux Datadog

Compatible avec :

Présentation

Ce parseur extrait les champs des journaux Datadog, effectue plusieurs mutations et correspondances Grok pour structurer les données, et mappe les champs extraits à l'UDM. Il gère différents formats de journaux dans le champ message, y compris les paires clé/valeur et les objets JSON, et convertit des champs spécifiques en libellés et champs supplémentaires conformes à l'UDM.

Avant de commencer

Assurez-vous de remplir les conditions préalables suivantes :

  • Instance Google SecOps.
  • Accès privilégié à Google Cloud IAM.
  • Accès privilégié à Cloud Storage.
  • l'accès des utilisateurs à logs_write_archive ;

Option 1 : Partage de journaux Datadog via la configuration Cloud Storage

Configurer l'intégration de Datadog avec la plate-forme Google Cloud

Créer un bucket de stockage Google Cloud

  1. Connectez-vous à la console Google Cloud .
  2. Accédez à la page Buckets Cloud Storage.

    Accéder à la page "Buckets"

  3. Cliquez sur Créer.

  4. Sur la page Créer un bucket, saisissez les informations concernant votre bucket. Après chacune de ces étapes, cliquez sur Continuer pour passer à l'étape suivante :

    1. Dans la section Premiers pas, procédez comme suit :

      1. Saisissez un nom unique qui répond aux exigences de dénomination des buckets (par exemple, datadog-data).
      2. Pour activer l'espace de noms hiérarchique, cliquez sur la flèche d'expansion pour développer la section Optimiser pour les charges de travail orientées fichiers et à forte intensité de données, puis sélectionnez Activer l'espace de noms hiérarchique sur ce bucket.

      3. Pour ajouter une étiquette de bucket, cliquez sur la flèche de développement pour développer la section Étiquettes.

      4. Cliquez sur Ajouter un libellé, puis spécifiez une clé et une valeur pour votre libellé.

    2. Dans la section Choisir l'emplacement de stockage de vos données, procédez comme suit :

      1. Sélectionnez un type d'emplacement.
      2. Utilisez le menu déroulant du type d'emplacement pour sélectionner un emplacement où les données d'objets de votre bucket seront stockées de manière permanente.
        • Si vous sélectionnez le type d'emplacement birégional, vous pouvez également choisir d'activer la réplication turbo à l'aide de la case à cocher correspondante.
      3. Pour configurer la réplication entre buckets, développez la section Configurer la réplication entre buckets.
    3. Dans la section Choisir une classe de stockage pour vos données, sélectionnez une classe de stockage par défaut pour le bucket, ou bien classe automatique pour une gestion automatique des classes de stockage des données de votre bucket.

    4. Dans la section Choisir comment contrôler l'accès aux objets, sélectionnez non pour appliquer la protection contre l'accès public, puis sélectionnez un modèle de contrôle des accès pour les objets de votre bucket.

    5. Dans la section Choisir comment protéger les données d'objet, procédez comme suit :

      1. Sélectionnez l'une des options sous Protection des données que vous souhaitez définir pour votre bucket.
      2. Pour choisir comment vos données d'objet seront chiffrées, cliquez sur la flèche d'expansion intitulée Chiffrement des données, puis sélectionnez une méthode de chiffrement des données.
  5. Cliquez sur Créer.

Créer un compte de service Google Cloud

  1. Accédez à IAM et administration > Comptes de service.
  2. Créez un compte de service.
  3. Attribuez-lui un nom descriptif (par exemple, datadog-user).
  4. Attribuez au compte de service le rôle Administrateur des objets de l'espace de stockage sur le bucket Cloud Storage que vous avez créé à l'étape précédente.
  5. Créez une clé SSH pour le compte de service.
  6. Téléchargez un fichier de clé JSON pour le compte de service. Conservez ce fichier dans un endroit sécurisé.

Configurer Datadog pour envoyer des journaux à Cloud Storage

  1. Connectez-vous à Datadog à l'aide d'un compte avec accès privilégié.
  2. Accédez à Journaux > Transfert de journaux.
  3. Cliquez sur + Créer une archive.
  4. Sélectionnez Google Cloud Storage.
  5. Saisissez les paramètres requis, puis cliquez sur Enregistrer.

Option 2 : Partager les journaux Datadog via la configuration Webhook

Configurer des flux

Il existe deux points d'entrée différents pour configurer les flux dans la plate-forme Google SecOps :

  • Paramètres SIEM> Flux
  • Plate-forme de contenu > Packs de contenu

Configurer des flux à partir de Paramètres SIEM > Flux

Pour configurer un flux, procédez comme suit :

  1. Accédez à Paramètres SIEM > Flux.
  2. Cliquez sur Add New Feed (Ajouter un flux).
  3. Sur la page suivante, cliquez sur Configurer un seul flux.
  4. Dans le champ Nom du flux, saisissez un nom pour le flux (par exemple, Journaux Datadog).
  5. Sélectionnez Webhook comme type de source.
  6. Sélectionnez Datadog comme type de journal.
  7. Cliquez sur Suivant.
  8. Facultatif : Spécifiez les valeurs des paramètres d'entrée suivants :
    • Délimiteur de fractionnement : délimiteur utilisé pour séparer les lignes de journaux, tel que \n.
  9. Cliquez sur Suivant.
  10. Vérifiez la configuration du flux sur l'écran Finaliser, 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 stockez la clé secrète. Vous ne pourrez plus afficher cette clé secrète. Si nécessaire, vous pouvez générer une nouvelle clé secrète, mais l'ancienne deviendra obsolète.
  13. Dans l'onglet Détails, copiez l'URL du point de terminaison du flux à partir du champ Informations sur le point de terminaison. Vous devez spécifier cette URL de point de terminaison dans votre application cliente.
  14. Cliquez sur OK.

Configurer des flux depuis le Hub de contenu

Indiquez les valeurs des champs suivants :

  • Délimiteur de fractionnement : délimiteur utilisé pour séparer les lignes de journaux, tel que \n.

Options avancées

  • Nom du flux : valeur préremplie qui identifie le flux.
  • Type de source : méthode utilisée pour collecter les journaux dans Google SecOps.
  • Espace de noms de l'élément : espace de noms associé au flux.
  • Libellés d'ingestion : libellés appliqués à tous les événements de ce flux.

  • Cliquez sur Générer une clé secrète pour générer une clé secrète permettant d'authentifier ce flux.

  • Copiez et stockez la clé secrète. Vous ne pourrez plus afficher cette clé secrète. Si nécessaire, vous pouvez générer une nouvelle clé secrète, mais l'ancienne deviendra obsolète.

  • Dans l'onglet Détails, copiez l'URL du point de terminaison du flux à partir du champ Informations sur le point de terminaison. Vous devez spécifier cette URL de point de terminaison dans votre application cliente.

Créer une clé API pour le flux de webhook

  1. Accédez à la consoleGoogle Cloud > Identifiants.

    Accéder à "Identifiants"

  2. Cliquez sur Créer des identifiants, puis sélectionnez Clé API.

  3. Restreignez l'accès à la clé API à l'API Chronicle.

Spécifier l'URL du point de terminaison

  1. Dans votre application cliente, spécifiez l'URL du point de terminaison HTTPS fournie dans le flux de webhook.
  2. Activez l'authentification en spécifiant la clé API et la clé secrète dans l'en-tête personnalisé au format suivant :

    X-goog-api-key = API_KEY
    X-Webhook-Access-Key = SECRET
    

    Recommandation : Spécifiez la clé API en tant qu'en-tête au lieu de la spécifier dans l'URL.

  3. Si votre client de webhook n'accepte pas les en-têtes personnalisés, vous pouvez spécifier la clé API et la clé secrète à l'aide de paramètres de requête au format suivant :

    ENDPOINT_URL?key=API_KEY&secret=SECRET
    

    Remplacez les éléments suivants :

    • ENDPOINT_URL : URL du point de terminaison du flux.
    • API_KEY : clé API pour l'authentification auprès de Google SecOps.
    • SECRET : clé secrète que vous avez générée pour authentifier le flux.

Configurer Datadog pour envoyer des journaux à un webhook

  1. Connectez-vous à Datadog à l'aide d'un compte avec accès privilégié.
  2. Accédez à Journaux > Transfert de journaux.
  3. Sélectionnez Destinations personnalisées.
  4. Cliquez sur + Créer une destination.
  5. Spécifiez les valeurs des paramètres d'entrée suivants :
    1. Choisissez un type de destination : sélectionnez HTTP.
    2. Nommez la destination : donnez un nom descriptif au webhook (par exemple, Webhook Google SecOps).
    3. Configurez la destination : saisissez ENDPOINT_URL, suivi de API_KEY et SECRET.
    4. Configurer les paramètres d'authentification : ajoutez un en-tête général comme suit. Cela ne déformera pas la requête HTTP et permettra à Datadog de terminer la création du webhook.
      • Nom de l'en-tête : Accept.
      • Valeur d'en-tête : application/json.
    5. Cliquez sur Enregistrer.

Table de mappage UDM

Champ de journal Mappage UDM Logique
_id read_only_udm.metadata.product_log_id Mappé directement à partir du champ _id.
alert read_only_udm.security_result.about.resource.attribute.labels Extrait du champ alert et ajouté en tant que libellé dans l'objet security_result.
attributes.@timestamp read_only_udm.metadata.event_timestamp L'horodatage de l'événement est extrait du champ attributes.@timestamp et converti en secondes et en nanosecondes.
attributes.@version read_only_udm.metadata.product_version Mappé directement à partir du champ attributes.@version.
attributes.level_value read_only_udm.security_result.about.resource.attribute.labels Extrait du champ attributes.level_value et ajouté en tant que libellé dans l'objet security_result.
attributes.logger_name read_only_udm.principal.application Mappé directement à partir du champ attributes.logger_name.
attributes._trace.baggage._sli_service read_only_udm.additional.fields Mappé directement à partir du champ attributes._trace.baggage._sli_service et ajouté en tant que champ supplémentaire.
attributes._trace.baggage.device_id read_only_udm.principal.asset.asset_id Mappé directement à partir du champ attributes._trace.baggage.device_id, avec le préfixe "Device Id:".
attributes._trace.origin.operation read_only_udm.metadata.product_event_type Mappé directement à partir du champ attributes._trace.origin.operation.
caller read_only_udm.security_result.about.resource.attribute.labels Extrait du champ caller et ajouté en tant que libellé dans l'objet security_result.
component read_only_udm.security_result.about.resource.attribute.labels Extrait du champ component et ajouté en tant que libellé dans l'objet security_result.
context.AlertName read_only_udm.security_result.threat_name Mappé directement à partir du champ context.AlertName.
context.BusArch read_only_udm.security_result.about.resource.attribute.labels Extrait du champ context.BusArch et ajouté en tant que libellé dans l'objet security_result.
context.CANDBVersion read_only_udm.security_result.about.resource.attribute.labels Extrait du champ context.CANDBVersion et ajouté en tant que libellé dans l'objet security_result.
context.esn read_only_udm.security_result.about.resource.attribute.labels Extrait du champ context.esn et ajouté en tant que libellé dans l'objet security_result.
context.ftcpVersion read_only_udm.security_result.about.resource.attribute.labels Extrait du champ context.ftcpVersion et ajouté en tant que libellé dans l'objet security_result.
context.ingestMessageId read_only_udm.security_result.about.resource.attribute.labels Extrait du champ context.ingestMessageId et ajouté en tant que libellé dans l'objet security_result.
context.redactedVin read_only_udm.security_result.about.resource.attribute.labels Extrait du champ context.redactedVin et ajouté en tant que libellé dans l'objet security_result.
context.vehicleId read_only_udm.security_result.about.resource.attribute.labels Extrait du champ context.vehicleId et ajouté en tant que libellé dans l'objet security_result.
date read_only_udm.metadata.collected_timestamp L'horodatage de collecte est extrait du champ date (renommé date1 dans l'analyseur) et converti en secondes et en nanosecondes.
host read_only_udm.principal.hostname Mappé directement à partir du champ host.
message read_only_udm.security_result.about.resource.attribute.labels Le champ message est analysé, et certaines de ses parties sont utilisées pour remplir les champs summary et json_data. La partie restante est traitée comme des paires clé-valeur et ajoutée en tant que libellés dans l'objet security_result.
msg read_only_udm.security_result.about.resource.attribute.labels Extrait du champ msg et ajouté en tant que libellé dans l'objet security_result.
service read_only_udm.metadata.product_name Mappé directement à partir du champ service.
status read_only_udm.security_result.severity La gravité est déterminée en fonction du champ status. "INFO", "DEBUG", "debug" et "info" correspondent à "LOW", "WARN" correspond à "MEDIUM", et les autres valeurs ne sont pas explicitement mappées dans l'extrait de code fourni.
tags read_only_udm.additional.fields Chaque tag du tableau tags est analysé en paires clé/valeur et ajouté en tant que champs supplémentaires.
N/A read_only_udm.metadata.event_type Définissez-le sur "STATUS_UPDATE" si le champ host est présent, et sur "GENERIC_EVENT" dans le cas contraire.

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