Collecter les journaux Datadog
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
- Connectez-vous à la console Google Cloud .
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 des étapes suivantes, cliquez sur Continuer pour passer à la suivante :
Dans la section Premiers pas, procédez comme suit :
- Saisissez un nom unique qui répond aux exigences relatives aux noms 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é.
- Saisissez un nom unique qui répond aux exigences relatives aux noms des buckets (par exemple,
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.
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 et sélectionnez un modèle de contrôle des accès pour les objets de votre bucket.
Dans la section Choisissez comment protéger les données des objets, procédez comme suit :
- Sous Protection des données, sélectionnez les options 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é pour le compte de service et sélectionnez JSON comme type de clé.
- 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
- Connectez-vous à Datadog à l'aide d'un compte avec accès privilégié.
- Accédez à Journaux > Transfert de journaux.
- Cliquez sur + Créer une archive.
- Sélectionnez Google Cloud Storage.
- Saisissez les paramètres requis, puis cliquez sur Enregistrer.
Configurer un flux dans Google SecOps pour ingérer les journaux du bucket Cloud Storage
- Accédez à Paramètres SIEM> Flux.
- Cliquez sur Add New Feed (Ajouter un flux).
- Sur la page suivante, cliquez sur Configurer un seul flux.
- Dans le champ Nom du flux, saisissez un nom pour le flux (par exemple,
Datadog Logs GCS). - Sélectionnez Google Cloud Storage V2 comme Type de source.
- Sélectionnez Datadog comme type de journal.
- Cliquez sur Obtenir un compte de service pour obtenir le compte de service unique de ce flux.
- Attribuez à ce compte de service le rôle Lecteur des objets Storage sur le bucket Cloud Storage créé précédemment.
- Cliquez sur Suivant.
- 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.
- URI du bucket Storage : URI du bucket Cloud Storage au format
- Cliquez sur Suivant.
- 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 :
- Accédez à Paramètres SIEM> Flux.
- Cliquez sur Add New Feed (Ajouter un flux).
- Sur la page suivante, cliquez sur Configurer un seul flux.
- Dans le champ Nom du flux, saisissez un nom pour le flux (par exemple,
Datadog Logs). - Sélectionnez Webhook comme type de source.
- Sélectionnez Datadog comme type de journal.
- Cliquez sur Suivant.
- 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.
- Délimiteur de fractionnement : délimiteur utilisé pour séparer les lignes de journaux, tel que
- Cliquez sur Suivant.
- Vérifiez la configuration du flux sur 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 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.
- Cliquez sur OK.
Créer une clé API pour le flux de webhook
- Accédez à la console > Identifiants : Accéder à Identifiants.Google Cloud
- Cliquez sur Créer des identifiants, puis sélectionnez Clé API.
- Restreignez 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 = SECRETRecommandation : Spécifiez la clé API en tant qu'en-tête au lieu de la spécifier dans l'URL.
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=SECRETRemplacez 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
- Connectez-vous à Datadog à l'aide d'un compte avec accès privilégié.
- Accédez à 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 :
- 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.
- Nom de l'en-tête :
- Cliquez sur Enregistrer.
Liens référents
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é : true → USER_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.