Collecter les journaux Datadog
Présentation
Cet analyseur extrait des champs des journaux Datadog, effectue plusieurs mutations et mises en correspondance Grok pour structurer les données, puis mappe les champs extraits sur l'UDM. Il gère différents formats de journal dans le champ message, y compris les paires clé-valeur et les objets JSON, et convertit des champs spécifiques en libellés conformes à la norme UDM et en champs supplémentaires.
Avant de commencer
- Assurez-vous de disposer d'une instance Google SecOps.
- Assurez-vous de disposer d'un accès privilégié à Google Cloud IAM.
- Assurez-vous de disposer d'un accès privilégié à Google Cloud Storage.
- Assurez-vous de disposer d'un accès utilisateur
logs_write_archive
à Datadog.
Option 1: Partage des journaux Datadog via la configuration de Cloud Storage
Configurer l'intégration de Datadog à Google Cloud Platform
- Configurez une intégration pour Google Cloud Platform dans Datadog. Pour en savoir plus, consultez la page Configuration de l'intégration Datadog à Google Cloud.
Créer un bucket Google Cloud Storage
- Connectez-vous à Google Cloud Console.
Accédez à la page Buckets Cloud Storage.
Cliquez sur Créer.
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:
Dans la section Premiers pas, procédez comme suit :
- Saisissez un nom unique qui répond aux exigences de dénomination des buckets (par exemple, datadog-data).
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.
Pour ajouter une étiquette de bucket, cliquez sur la flèche de développement pour développer la section Étiquettes.
Cliquez sur Ajouter un libellé, puis spécifiez une clé et une valeur pour votre libellé.
Dans la section Choisir l'emplacement de stockage de vos données, procédez comme suit :
- Sélectionnez un type d'emplacement.
- 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.
- Pour configurer la réplication entre buckets, développez la section Configurer la réplication entre buckets.
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.
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.
Dans la section Choisir comment protéger les données d'objet, procédez comme suit:
- Sélectionnez l'une des options sous Protection des données que vous souhaitez définir pour votre bucket.
- 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.
Cliquez sur Créer.
Créer un compte de service Google Cloud
- Accédez à IAM et administration > Comptes de service.
- Créez un compte de service.
- Attribuez-lui un nom descriptif (par exemple, datadog-user).
- 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.
- Créez une clé SSH pour le compte de service.
- 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 vers Cloud Storage
- Connectez-vous à Datadog avec un compte avec accès privilégié.
- Accédez à Logs > Log Forwarding (Journaux > Transfert de journaux).
- Cliquez sur + Créer une archive.
- Sélectionnez Google Cloud Storage.
- Saisissez les paramètres requis, puis cliquez sur Enregistrer.
Option 2: Partage des journaux Datadog via la configuration d'un webhook
Configurer un flux dans Google SecOps pour ingérer les journaux Datadog
- Accédez à Paramètres du SIEM > Flux.
- Cliquez sur Ajouter.
- Dans le champ Nom du flux, saisissez un nom pour le flux (par exemple, Journaux Datadog).
- Sélectionnez Webhook comme type de source.
- Sélectionnez Datadog comme type de journal.
- Cliquez sur Suivant.
- Facultatif: spécifiez des valeurs pour les paramètres d'entrée suivants :
- Délimiteur de fractionnement: délimiteur utilisé pour séparer les lignes de journal, par exemple
\n
. - Espace de noms des éléments: espace de noms des éléments.
- Libellés d'ingestion: libellé appliqué aux événements de ce flux.
- Délimiteur de fractionnement: délimiteur utilisé pour séparer les lignes de journal, par exemple
- Cliquez sur Suivant.
- Vérifiez la configuration du flux dans l'écran Finaliser, puis cliquez sur Envoyer.
- 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 cette action rend l'ancienne clé secrète obsolète.
- Dans l'onglet Détails, copiez l'URL du point de terminaison du flux dans le champ Informations sur le point de terminaison. Vous devez spécifier cette URL de point de terminaison dans votre application cliente.
- Cliquez sur OK.
Créer une clé API pour le flux webhook
Accédez à Google Cloud Console > Identifiants.
Cliquez sur Créer des identifiants, puis sélectionnez Clé API.
Limitez l'accès de la clé API à l'API Chronicle.
Spécifier l'URL du point de terminaison
- Dans votre application cliente, spécifiez l'URL du point de terminaison HTTPS fournie dans le flux de webhook.
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 plutôt que dans l'URL.
Si votre client webhook n'est pas compatible avec 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 permettant de s'authentifier 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
- Connectez-vous à Datadog avec un compte avec accès privilégié.
- Accédez à Logs > Log Forwarding (Journaux > Transfert de journaux).
- Sélectionnez Destinations personnalisées.
- Cliquez sur + Créer une destination.
- Spécifiez les valeurs des paramètres d'entrée suivants :
- Choisir un type de destination: sélectionnez HTTP.
- Nommez la destination: donnez un nom descriptif au webhook (par exemple, Webhook Google SecOps).
- Configurez la destination: saisissez ENDPOINT_URL, suivi de API_KEY et de SECRET.
- Configurer les paramètres d'authentification: ajoutez un en-tête général comme celui-ci. Cela ne déformera pas la requête HTTP et permettra à Datadog de créer le webhook.
- Nom de l'en-tête:
Accept
. - Valeur d'en-tête:
application/json
.
- Nom de l'en-tête:
- Cliquez sur Enregistrer.
Liens de référence
Tableau 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 "ID de l'appareil:". |
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 |
Le code temporel collecté 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 renseigner 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" sont mappés sur "LOW", "WARN" est mappé sur "MEDIUM", et les autres valeurs ne sont pas mappées explicitement dans l'extrait de code fourni. |
tags |
read_only_udm.additional.fields |
Chaque balise du tableau tags est analysée en paires clé-valeur et ajoutée en tant que champs supplémentaires. |
N/A | read_only_udm.metadata.event_type |
Définissez ce champ sur "STATUS_UPDATE" si le champ host est présent, et sur "GENERIC_EVENT" dans le cas contraire. |
Modifications
2023-07-21
- Analyseur créé.