Collecter les journaux Datadog

Compatible avec :

Ce document explique comment ingérer des journaux Datadog dans Google Security Operations. Datadog est une plate-forme cloud de surveillance et d'analyse qui collecte des métriques, des traces et des journaux à partir d'applications, d'infrastructures et de services cloud. Vous pouvez partager des journaux Datadog avec Google SecOps à l'aide de Cloud Storage ou d'un webhook.

Avant de commencer

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

  • Une instance Google SecOps
  • Accès des utilisateurs privilégiés à Datadog
  • Accès à la console Google Cloud (pour la création de clés API ou la configuration de Cloud Storage)

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

Configurer l'intégration de Datadog avec Google Cloud

Configurez une intégration pour Google Clouddans Datadog. Pour en savoir plus, consultez la section Configurer l'intégration de Datadog Google Cloud .

Créer un bucket Cloud Storage

  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 des étapes suivantes, cliquez sur Continuer pour passer à la suivante :

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

      1. Saisissez un nom unique qui répond aux exigences relatives aux noms 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.
    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 et sélectionnez un modèle de contrôle des accès pour les objets de votre bucket.

    5. Dans la section Choisissez comment protéger les données des objets, procédez comme suit :

      1. Sous Protection des données, sélectionnez les options 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é pour le compte de service et sélectionnez JSON comme type de clé.
  6. Téléchargez le fichier de clé JSON du compte de service. Conservez ce fichier de manière sécurisée.

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.

Configurer un flux dans Google SecOps pour ingérer les journaux du bucket Cloud Storage

  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, Datadog Logs GCS).
  5. Sélectionnez Google Cloud Storage V2 comme Type de source.
  6. Sélectionnez Datadog comme type de journal.
  7. Cliquez sur Obtenir un compte de service pour obtenir le compte de service unique de ce flux.
  8. Attribuez à ce compte de service le rôle Lecteur des objets Storage sur le bucket Cloud Storage créé précédemment.
  9. Cliquez sur Suivant.
  10. Spécifiez les valeurs des paramètres d'entrée suivants :
    • URI du bucket Storage : URI du bucket Cloud Storage au format gs://datadog-data.
    • 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. La valeur par défaut est de 180 jours.
    • Espace de noms de l'élément : espace de noms de l'élément.
    • Libellés d'ingestion : libellé appliqué aux événements de ce flux.
  11. Cliquez sur Suivant.
  12. Vérifiez la configuration du flux sur l'écran Finaliser, puis cliquez sur Envoyer.

Option 2 : Partage de journaux Datadog via la configuration de webhook

Configurer des 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, Datadog Logs).
  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.

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

  1. Accédez à la console > Identifiants : Accéder à Identifiants.Google Cloud
  2. Cliquez sur Créer des identifiants, puis sélectionnez Clé API.
  3. Restreignez l'accès de 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 s'authentifier auprès de Google Security Operations.
    • 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 :
    • Choisissez un type de destination : sélectionnez HTTP.
    • Nommez la destination : donnez un nom descriptif au webhook (par exemple, Google SecOps Webhook).
    • Configurez la destination : collez l'ENDPOINT_URL du flux. Choisissez l'une des options d'authentification suivantes (et non les deux) :
      • Option A (recommandée) : laissez l'URL sans identifiants et transmettez API_KEY et SECRET en tant qu'en-têtes personnalisés (configurés à l'étape suivante).
      • Option B : ajoutez les identifiants à l'URL en tant que paramètres de requête, au format ENDPOINT_URL?key=API_KEY&secret=SECRET. N'utilisez cette option que si le client ne peut pas envoyer d'en-têtes personnalisés.
    • Configurer les paramètres d'authentification : Datadog nécessite au moins un en-tête d'authentification pour enregistrer la destination. Ajoutez l'en-tête suivant. Le point de terminaison du webhook l'ignore, il n'a donc aucune incidence sur la requête.
      • Nom de l'en-tête : Authorization.
      • Valeur d'en-tête : application/json.
  6. Cliquez sur Enregistrer.

Table de mappage UDM

Champ de journal Mappage UDM Logique
additional_field additional.fields Fusionné
anonymous_label additional.fields Fusionné
as_domain_label additional.fields Fusionné
as_name_label additional.fields Fusionné
as_number_label additional.fields Fusionné
as_type_label additional.fields Fusionné
auth_method_label additional.fields Fusionné
category_label additional.fields Fusionné
emitted_source_label additional.fields Fusionné
event_type_label additional.fields Fusionné
geo_continent_code_label additional.fields Fusionné
geo_continent_label additional.fields Fusionné
geo_continent_name_label additional.fields Fusionné
geo_country_code_label additional.fields Fusionné
geo_latitude_label additional.fields Fusionné
geo_longitude_label additional.fields Fusionné
geo_subdivision_code_label additional.fields Fusionné
geo_subdivision_name_label additional.fields Fusionné
geo_timezone_label additional.fields Fusionné
http_level_label additional.fields Fusionné
indicator_label additional.fields Fusionné
indicators_matched_label additional.fields Fusionné
infrastructure_label additional.fields Fusionné
intention_label additional.fields Fusionné
iso_code_label additional.fields Fusionné
new_template_variable_name_label additional.fields Fusionné
new_template_variable_preset_name_label additional.fields Fusionné
new_template_variable_value_label additional.fields Fusionné
new_widget_definition_background_color_label additional.fields Fusionné
new_widget_definition_layout_type_label additional.fields Fusionné
new_widget_definition_show_title_label additional.fields Fusionné
new_widget_definition_title_label additional.fields Fusionné
new_widget_definition_type_label additional.fields Fusionné
new_widget_id_label additional.fields Fusionné
new_widget_layout_height_label additional.fields Fusionné
new_widget_layout_width_label additional.fields Fusionné
new_widget_layout_x_label additional.fields Fusionné
new_widget_layout_y_label additional.fields Fusionné
record_attributes_asset_id_label additional.fields Fusionné
record_attributes_asset_name_label additional.fields Fusionné
record_attributes_asset_new_value_dashboard_definition_author_handle_label additional.fields Fusionné
record_attributes_asset_new_value_dashboard_definition_author_name_label additional.fields Fusionné
record_attributes_asset_new_value_dashboard_definition_description_label additional.fields Fusionné
record_attributes_asset_new_value_dashboard_definition_id_label additional.fields Fusionné
record_attributes_asset_new_value_dashboard_definition_reflow_type_label additional.fields Fusionné
record_attributes_asset_new_value_dashboard_definition_title_label additional.fields Fusionné
record_attributes_asset_new_value_dashboard_definition_url_label additional.fields Fusionné
record_attributes_asset_prev_value_dashboard_definition_author_handle_label additional.fields Fusionné
record_attributes_asset_prev_value_dashboard_definition_author_name_label additional.fields Fusionné
record_attributes_asset_prev_value_dashboard_definition_description_label additional.fields Fusionné
record_attributes_asset_prev_value_dashboard_definition_id_label additional.fields Fusionné
record_attributes_asset_prev_value_dashboard_definition_reflow_type_label additional.fields Fusionné
record_attributes_asset_prev_value_dashboard_definition_title_label additional.fields Fusionné
record_attributes_asset_prev_value_dashboard_definition_url_label additional.fields Fusionné
record_attributes_asset_type_label additional.fields Fusionné
record_attributes_contextMap_cfRay_label additional.fields Fusionné
record_attributes_contextMap_tradingAccountId_label additional.fields Fusionné
record_attributes_evt_name_label additional.fields Fusionné
record_attributes_network_client_geoip_as_number_label additional.fields Fusionné
record_attributes_network_client_geoip_as_type_label additional.fields Fusionné
record_attributes_network_client_geoip_location_latitude_label additional.fields Fusionné
record_attributes_network_client_geoip_location_longitude_label additional.fields Fusionné
record_attributes_network_client_geoip_subdivision_iso_code_label additional.fields Fusionné
record_attributes_network_client_geoip_subdivision_name_label additional.fields Fusionné
record_attributes_network_client_geoip_timezone_label additional.fields Fusionné
record_trace_id_label additional.fields Fusionné
request_id_label additional.fields Fusionné
risk_label additional.fields Fusionné
service_label additional.fields Fusionné
source_name_label additional.fields Fusionné
source_type_label additional.fields Fusionné
source_url_label additional.fields Fusionné
span_id_label additional.fields Fusionné
symbol_label additional.fields Fusionné
tag_label additional.fields Fusionné
template_variable_name_label additional.fields Fusionné
template_variable_preset_name_label additional.fields Fusionné
template_variable_value_label additional.fields Fusionné
timezone_label additional.fields Fusionné
tunnels_operator_label additional.fields Fusionné
tunnels_type_label additional.fields Fusionné
type_label additional.fields Fusionné
type_label1 additional.fields Fusionné
url_details_host_label additional.fields Fusionné
url_details_path_label additional.fields Fusionné
user_created_timestamp_label additional.fields Fusionné
widget_definition_background_color_label additional.fields Fusionné
widget_definition_layout_type_label additional.fields Fusionné
widget_definition_show_title_label additional.fields Fusionné
widget_definition_title_label additional.fields Fusionné
widget_definition_type_label additional.fields Fusionné
widget_id_label additional.fields Fusionné
widget_layout_height_label additional.fields Fusionné
widget_layout_width_label additional.fields Fusionné
widget_layout_x_label additional.fields Fusionné
widget_layout_y_label additional.fields Fusionné
eventMessage metadata.description Mappé directement
date1 metadata.event_timestamp Analysé en tant que ISO8601
record.date1 metadata.event_timestamp Analysé en tant que ISO8601
event_type metadata.event_type Mappé directement
has_principal metadata.event_type Mappé : true → NETWORK_CONNECTION, true → STATUS_UPDATE
has_user metadata.event_type Mappé : trueUSER_UNCATEGORIZED
attributes._trace.origin.operation metadata.product_event_type Mappé directement
eventType metadata.product_event_type Mappé directement
record_attributes_contextMap_eventType metadata.product_event_type Mappé directement
source metadata.product_event_type Mappé directement
_id metadata.product_log_id Mappé directement
record_attributes_thread_id metadata.product_log_id Mappé directement
threadID metadata.product_log_id Mappé directement
service metadata.product_name Mappé directement
attributes.@version metadata.product_version Mappé directement
attributes.http.method network.http.method Mappé directement
agnt network.http.parsed_user_agent Mappé directement
record_attributes_contextMap_userAgent network.http.parsed_user_agent Mappé directement
attributes.http.status_code network.http.response_code Renommé/Mappé
agnt network.http.user_agent Mappé directement
attributes.http.useragent network.http.user_agent Mappé directement
record_attributes_contextMap_userAgent network.http.user_agent Mappé directement
attributes.logger_name principal.application Mappé directement
service principal.application Mappé directement
attributes._trace.baggage.device_id principal.asset.asset_id Mappé directement
attributes.metadata.host_metadata.hostname principal.asset.hostname Mappé directement
attributes.usr.id principal.asset.hostname Mappé directement
attributes.network.client.geoip.ipAddress principal.asset.ip Fusionné
attributes.network.client.ip principal.asset.ip Fusionné
ip1 principal.asset.ip Fusionné
ipAddress principal.asset.ip Mappé directement
principal_ip_address principal.asset.ip Fusionné
record_attributes_network_client_ip principal.asset.ip Fusionné
org principal.group.group_display_name Mappé directement
attributes.org.uuid principal.group.product_object_id Mappé directement
attributes.metadata.host_metadata.hostname principal.hostname Mappé directement
attributes.usr.id principal.hostname Mappé directement
host principal.hostname Mappé directement
record_host principal.hostname Mappé directement
attributes.network.client.geoip.ipAddress principal.ip Fusionné
attributes.network.client.ip principal.ip Fusionné
ip1 principal.ip Fusionné
ipAddress principal.ip Mappé directement
principal_ip_address principal.ip Fusionné
record_attributes_network_client_ip principal.ip Fusionné
record_attributes_http_url_details_host_label principal.labels Fusionné
record_attributes_http_url_details_path_label principal.labels Fusionné
record_attributes_http_useragent_label principal.labels Fusionné
record_attributes_network_client_geoip_as_domain_label principal.labels Fusionné
record_attributes_network_client_geoip_as_route_label principal.labels Fusionné
record_attributes_network_client_geoip_city_name_label principal.labels Fusionné
record_attributes_network_client_geoip_continent_code_label principal.labels Fusionné
record_attributes_network_client_geoip_continent_name_label principal.labels Fusionné
record_attributes_network_client_geoip_country_iso_code_label principal.labels Fusionné
record_attributes_network_client_geoip_country_name_label principal.labels Fusionné
record_attributes_usr_id_label principal.labels Fusionné
attributes.network.client.geoip.city.name principal.location.city Mappé directement
attributes.network.client.geoip.country.name principal.location.country_or_region Mappé directement
port principal.port Renommé/Mappé
client_as_route_label principal.resource.attribute.labels Fusionné
client_type_label principal.resource.attribute.labels Fusionné
org_name_label principal.resource.attribute.labels Fusionné
record_attributes_usr_uuid_label principal.user.attribute.labels Fusionné
roles principal.user.attribute.roles Fusionné
attributes.usr.email principal.user.email_addresses Fusionné
email_id principal.user.email_addresses Fusionné
record_attributes_usr_email principal.user.email_addresses Fusionné
attributes.evt.actor.type principal.user.role_name Mappé directement
attributes.metadata.user_uuid principal.user.userid Mappé directement
attributes.usr.uuid principal.user.userid Mappé directement
record_attributes_contextMap_user principal.user.userid Mappé directement
user principal.user.userid Mappé directement
BusArch_label security_result.about.resource.attribute.labels Fusionné
CANDBVersion_label security_result.about.resource.attribute.labels Fusionné
alert_label security_result.about.resource.attribute.labels Fusionné
caller_label security_result.about.resource.attribute.labels Fusionné
component_label security_result.about.resource.attribute.labels Fusionné
esn_label security_result.about.resource.attribute.labels Fusionné
ftcpVersion_label security_result.about.resource.attribute.labels Fusionné
ingestMessageId_label security_result.about.resource.attribute.labels Fusionné
label security_result.about.resource.attribute.labels Fusionné
level_label security_result.about.resource.attribute.labels Fusionné
msg_label security_result.about.resource.attribute.labels Fusionné
query_label security_result.about.resource.attribute.labels Fusionné
redactedVin_label security_result.about.resource.attribute.labels Fusionné
updated_query_label security_result.about.resource.attribute.labels Fusionné
vehicleId_label security_result.about.resource.attribute.labels Fusionné
category1 security_result.category_details Fusionné
_id_label security_result.detection_fields Fusionné
action_label security_result.detection_fields Fusionné
org_uuid_label security_result.detection_fields Fusionné
record_attributes_http_method_label security_result.detection_fields Fusionné
record_message_label security_result.detection_fields Fusionné
record_source_label security_result.detection_fields Fusionné
record_status_label security_result.detection_fields Fusionné
status security_result.severity Mappé : "INFO", "DEBUG", "debug", "info" → LOW, (?i)WARN → MEDIUM
status security_result.severity_details Mappé directement
context.AlertName security_result.threat_name Mappé directement
src_ip_address src.ip Fusionné
record_attributes_contextMap_dd_service target.application Mappé directement
target_ip_address target.asset.ip Mappé : ^(?:[0-9]{1,3}[.]){3}[0-9]{1,3}$target_ip_address
target_ip_address target.ip Mappé : ^(?:[0-9]{1,3}[.]){3}[0-9]{1,3}$target_ip_address
record_attributes_contextMap_dd_version target.platform_version Mappé directement
logger_fqcn_label target.resource.attribute.labels Fusionné
logger_label target.resource.attribute.labels Fusionné
modified_fields_label target.resource.attribute.labels Fusionné
asset_name target.resource.name Mappé directement
asset_id target.resource.product_object_id Mappé directement
asset_type target.resource.type Mappé directement
record_attributes_contextMap_dd_env target.resource.type Mappé directement
record_attributes_contextMap_userId target.user.userid Mappé directement
record_attributes_user target.user.userid Mappé directement
N/A metadata.event_type Constante : NETWORK_CONNECTION
N/A network.http.parsed_user_agent Constante : parseduseragent
N/A security_result.severity Constante : LOW

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