Exporter les journaux bruts vers un bucket Google Cloud Storage autogéré
L'API Data Export facilite l'exportation groupée de vos données de sécurité depuis Google Security Operations vers un bucket Google Cloud Storage que vous contrôlez. Cette fonctionnalité permet de conserver les données critiques à long terme, d'effectuer des analyses d'historique et de respecter des exigences de conformité strictes (telles que SOX et le RGPD).
Pour obtenir des informations de référence détaillées sur l'API, consultez API Data Export (améliorée).
L'API Data Export fournit une solution évolutive et fiable pour les exportations de données ponctuelles et gère les requêtes jusqu'à 100 To.
En tant que pipeline géré, il offre des fonctionnalités essentielles de niveau entreprise, y compris :
- Nouvelles tentatives automatiques en cas d'erreurs temporaires
- Surveillance complète de l'état des jobs
- Une piste d'audit complète pour chaque job d'exportation
L'API partitionne logiquement les données exportées par date et heure dans votre bucket Google Cloud Storage.
Cette fonctionnalité vous permet de créer des workflows de déchargement de données à grande échelle. Google SecOps gère la complexité du processus d'exportation pour assurer la stabilité et les performances.
Principaux avantages
L'API Data Export fournit une solution résiliente et auditable pour gérer le cycle de vie de vos données de sécurité, avec les principaux avantages suivants :
- Fiabilité : le service gère les transferts de données à grande échelle. Le système utilise une stratégie d'intervalle exponentiel entre les tentatives pour relancer automatiquement les jobs d'exportation qui rencontrent des problèmes temporaires (par exemple, des problèmes de réseau temporaires), ce qui le rend résilient. Si votre job d'exportation échoue en raison d'une erreur temporaire, il est automatiquement relancé plusieurs fois. Si un job échoue définitivement après toutes les tentatives, le système met à jour son état sur
FINISHED_FAILURE, et la réponse de l'API pour ce job contient un message d'erreur détaillé expliquant la cause de l'échec. Auditabilité complète : pour répondre à des normes de conformité et de sécurité strictes, le système capture chaque action liée à un job d'exportation dans une piste d'audit immuable. Cette trace inclut la création, le démarrage, la réussite ou l'échec de chaque job, ainsi que l'utilisateur qui a initié l'action, un code temporel et les paramètres du job.
Optimisée pour les performances et l'évolutivité : l'API utilise un système de gestion des tâches robuste. Ce système inclut la mise en file d'attente et la hiérarchisation pour assurer la stabilité de la plate-forme et empêcher un seul locataire de monopoliser les ressources.
Intégrité et accessibilité améliorées des données : le système organise automatiquement les données dans une structure de répertoires logique au sein de votre bucket Google Cloud Storage, ce qui vous aide à localiser et à interroger des périodes spécifiques pour l'analyse de l'historique.
Sécurité : l'API est conçue pour être entièrement compatible avec les clés de chiffrement gérées par le client (CMEK) (sécurité zéro confiance) et le RBAC des données (accès avec privilèges minimum). Les jobs d'exportation héritent du champ d'application de la visibilité des données de l'utilisateur qui déclenche la requête afin d'empêcher l'extraction de données non autorisée. Le pipeline d'exportation est également entièrement intégré à Google Cloud Key Management Service, et les données restent chiffrées au repos dans votre bucket Google Cloud Storage à l'aide de vos propres clés.
Termes et concepts clés
- Job d'exportation : opération asynchrone unique permettant d'exporter une période spécifique de données de journaux vers un bucket Google Cloud Storage. Le système suit chaque job avec un
dataExportIdunique. - État du job : état actuel d'un job d'exportation dans son cycle de vie (par exemple,
IN_QUEUE,PROCESSING,FINISHED_SUCCESS). - Bucket Google Cloud Storage : bucket Google Cloud Storage appartenant à l'utilisateur et servant de destination pour les données exportées.
- Types de journaux : catégories spécifiques de journaux que vous pouvez exporter (par exemple,
NIX_SYSTEM,WINDOWS_DNS,CB_EDR). Pour en savoir plus, consultez la liste de tous les types de journaux compatibles.
Comprendre la structure des données exportées
Lorsqu'un job se termine correctement, le système écrit les données dans votre bucket Google Cloud Storage. Il utilise une structure de répertoires partitionnée spécifique pour simplifier l'accès aux données et l'interrogation.
Structure du chemin d'accès au répertoire : gs://GCS_BUCKET_NAME/
EXPORT_JOB_NAME/LOGTYPE/EVENT_TIME_BUCKET/EPOCH_EXECUTION_TIME/FILE_SHARD_NAME.csv
Où :
- GCS_BUCKET_NAME : nom de votre bucket Google Cloud Storage.
- EXPORT_JOB_NAME : nom unique de votre job d'exportation.
- LOGTYPE : fait référence au nom du type de journal pour les données exportées.
- EVENT_TIME_BUCKET : fait référence à la plage horaire des codes temporels des événements des journaux exportés. Le format est un code temporel UTC :
year/month/day/UTC-timestamp, oùUTC-timestampcorrespond àhour/minute/second. Par exemple,2025/08/25/01/00/00fait référence àUTC 01:00:00 AM, August 25, 2025. - EPOCH_EXECUTION_TIME : fait référence à la valeur d'epoch Unix, indiquant le moment où le job d'exportation a commencé.
- FILE_SHARD_NAME : fait référence au nom des fichiers segmentés contenant les journaux bruts. La taille de chaque segment de fichier est limitée à 100 Mo.
Performances et limites
Le service est soumis aux limites spécifiques suivantes pour garantir la stabilité de la plate-forme et une allocation équitable des ressources :
- Volume de données maximal par tâche : chaque tâche d'exportation individuelle peut demander jusqu'à 100 To de données. Pour les ensembles de données plus volumineux, Google recommande de diviser l'exportation en plusieurs tâches avec des périodes plus courtes.
- Jobs simultanés : chaque locataire client peut exécuter ou mettre en file d'attente un maximum de trois jobs d'exportation simultanément. Le système rejette toute nouvelle demande de création de job qui dépasse cette limite.
- Temps d'exécution des jobs : le volume de données exportées détermine le temps d'exécution des jobs. Un seul job peut prendre jusqu'à 18 heures.
- Format d'exportation et champ d'application des données : l'API est compatible avec les exportations groupées et ponctuelles, avec les limites et fonctionnalités suivantes :
- Journaux bruts uniquement : vous ne pouvez exporter que les journaux bruts (pas les journaux UDM, les événements UDM ni les détections). Pour savoir comment exporter des données UDM, consultez Exporter vers un projet BigQuery autogéré.
- Compression des données : l'API exporte les données sous forme de texte non compressé.
Prérequis et architecture
Cette section décrit l'architecture du système et les exigences nécessaires pour utiliser l'API Data Export, et détaille l'architecture du système. Utilisez ces informations pour vérifier que votre environnement est correctement configuré.
Avant d'utiliser l'API Data Export, suivez les étapes préalables ci-dessous pour configurer votre destination Google Cloud Storage et accorder les autorisations nécessaires :
Accordez des autorisations à l'utilisateur. Pour utiliser l'API Data Export, vous devez disposer des autorisations suivantes dans le projet BYOP Google Cloud associé à votre locataire Google SecOps :
- chronicle.dataExports.fetchServiceAccountForDataExport
- chronicle.dataExports.create
- chronicle.dataExports.cancel
- chronicle.dataExports.get
- chronicle.dataExports.list
Ces autorisations font partie des rôles IAM prédéfinis suivants :
- Administrateur de l'API Chronicle : accorde des autorisations complètes pour créer, mettre à jour, annuler et afficher des jobs d'exportation à l'aide de l'API. Ce rôle confère un accès global.
- Lecteur de l'API Chronicle : accorde un accès en lecture seule pour afficher les configurations et l'historique des jobs à l'aide de l'API. Sans le rôle
restrictedDataAccess, un utilisateur disposant de ce rôle peut afficher toutes les données (voir l'étape + Ajouter un autre rôle et ajouter une condition).
Appliquer des niveaux d'accès RBAC des données à un utilisateur Pour limiter l'accès d'un utilisateur à des champs d'application de données spécifiques, procédez comme suit :
- Assurez-vous que les champs d'application du contrôle RBAC des données que vous souhaitez appliquer sont déjà créés dans l'UI Google SecOps sous Paramètres > Paramètres SIEM > Accès aux données > Champs d'application. Notez le nom complet de chaque champ d'application que vous souhaitez attribuer à l'utilisateur.
Créez un rôle IAM (Identity and Access Management) personnalisé pour la gestion de l'exportation de données. Étant donné que les rôles prédéfinis peuvent accorder trop d'accès ou ne pas disposer de la combinaison d'autorisations spécifique, procédez comme suit pour créer un rôle personnalisé adapté à la gestion des exportations de données dans un contexte limité :
- Dans la console Google Cloud , accédez à IAM et administration > Rôles.
- Cliquez sur + Créer un rôle.
- Saisissez un titre (par exemple,
SecOps Scoped Data Export User). - Saisissez un ID (par exemple,
secopsScopedDataExportUser). - Cliquez sur + Ajouter des autorisations.
- Filtrez les autorisations Chronicle et ajoutez les autorisations pertinentes listées à la première étape (Accorder des autorisations à l'utilisateur de l'API).
- Cliquez sur Créer.
Attribuez des rôles IAM à l'utilisateur. Sur la page IAM, procédez comme suit pour attribuer les rôles nécessaires à votre utilisateur :
- Accédez à IAM et administration > IAM.
- Cliquez sur + Accorder l'accès.
- Dans le champ Nouveaux comptes principaux, saisissez l'adresse e-mail de l'utilisateur.
Pour attribuer des rôles, procédez comme suit :
- Ajoutez le rôle personnalisé que vous avez créé (par exemple,
SecOps Scoped Data Export User). - Cliquez sur + Ajouter un autre rôle, puis ajoutez le rôle Accès limité aux données de l'API Chronicle (
restrictedDataAccess). Ce rôle est essentiel pour marquer l'utilisateur comme étant soumis à des champs d'application des données.
- Ajoutez le rôle personnalisé que vous avez créé (par exemple,
Ajoutez une condition IAM à la liaison de rôle
Chronicle API Restricted Data Access. Pour associer l'utilisateur à des champs d'application de données spécifiques, procédez comme suit :- Cliquez sur Ajouter une condition IAM.
- Utilisez le générateur ou l'éditeur de conditions pour définir les champs d'application autorisés, en utilisant le nom du champ d'application créé à la première étape comme nom de ressource. Par exemple, pour utiliser un champ d'application nommé
scope_test, définissez la conditionresource.name.endsWith("/dataAccessScopes/scope_test").
Pour en savoir plus sur l'implémentation du RBAC des données pour l'API Data Export, consultez Comment le RBAC des données s'applique à l'API Data Export.
Créez un bucket Google Cloud Storage. Dans votre projet Google Cloud, créez un bucket Google Cloud Storage (la destination de vos données exportées) dans la même région que votre locataire Google SecOps. Rendez-le privé pour empêcher tout accès non autorisé. Pour en savoir plus, consultez Créer un bucket.
Accordez des autorisations au compte de service. Pour accorder au compte de service Google SecOps, qui est associé à votre locataire Google SecOps, les rôles IAM nécessaires pour écrire des données dans votre bucket, procédez comme suit :
Appelez le point de terminaison de l'API
FetchServiceAccountForDataExportpour identifier le compte de service unique de votre instance Google SecOps. L'API renvoie l'adresse e-mail du compte de service.Exemple de requête :
{ "parent": "projects/myproject/locations/us/instances/aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee" }Exemple de réponse :
{ "service_account_email": "service-1234@gcp-sa-chronicle.iam.gserviceaccount.com" }Attribuez au compte principal du compte de service Google SecOps les rôles IAM suivants pour le bucket Google Cloud Storage de destination, qui permettent au service Google SecOps d'écrire les fichiers de données exportés dans votre bucket Google Cloud Storage :
Storage object administrator (roles/storage.objectAdmin)Legacy bucket reader (roles/storage.legacyBucketReader)
Pour en savoir plus, consultez Accorder l'accès au compte de service Google SecOps.
Effectuez l'authentification. L'API Data Export authentifie vos appels. Pour configurer cette authentification, suivez les instructions des sections suivantes :
Principaux cas d'utilisation et workflow de base
L'API Data Export fournit une suite de points de terminaison permettant de créer des jobs d'exportation de données et de gérer l'intégralité du cycle de vie de l'exportation de données groupée. Toutes les interactions sont effectuées à l'aide d'appels d'API.
Les cas d'utilisation suivants décrivent comment créer, surveiller et gérer des jobs d'exportation de données.
Créer un job d'exportation de données
Le système stocke les spécifications du job d'exportation de données sur l'instance Google SecOps de la ressource parente. Cette instance est la source des données de journal pour le job d'exportation.
Pour savoir comment identifier le compte de service unique de votre instance Google SecOps, consultez FetchServiceAccountForDataExports.
Pour lancer une nouvelle exportation, envoyez une requête
POSTau point de terminaisondataExports.create. Pour en savoir plus, consultez la section Point de terminaisonCreateDataExport.
Surveiller l'état des jobs d'exportation de données
Vous pouvez afficher les détails et l'état d'un job d'exportation de données spécifique, ou configurer un filtre pour afficher certains types de jobs.
Pour savoir comment afficher un job d'exportation spécifique, consultez GetDataExport.
Pour savoir comment lister certains types de jobs d'exportation de données à l'aide d'un filtre, consultez ListDataExport.
Annuler des jobs en file d'attente
Vous pouvez annuler un job lorsque son état est IN_QUEUE.
Pour savoir comment annuler un job en file d'attente, consultez CancelDataExport.
Comment le RBAC des données s'applique à l'API Data Export
Les jobs d'exportation héritent du champ d'application RBAC des données des utilisateurs qui les créent, ce qui empêche l'extraction de données non autorisée.
Si vous tentez d'exporter des données qui dépassent votre niveau d'accès aux données, l'API exclut automatiquement ces données au moment de l'exécution du job d'exportation. La valeur du champ dataRbacFiltered dans les métadonnées des jobs terminés (c'est-à-dire les jobs dont l'état est FINISHED_SUCCESS) indique si des données ont été exclues. Si dataRbacFiltered est défini sur true, une partie ou la totalité des données sélectionnées pour le job d'exportation ont été exclues, car elles ne relevaient pas des champs d'application du RBAC des données applicables au créateur du job. Si dataRbacFiltered est défini sur false, le job d'exportation n'a pas été affecté par les restrictions de champ d'application du contrôle RBAC des données, et toutes les données incluses dans le job ont été exportées.
L'API applique les champs d'application RBAC des données qui s'appliquent au créateur au moment de la création du job. Les modifications apportées aux champs d'application RBAC des données ne s'appliquent pas rétroactivement aux jobs déjà créés.
Pour en savoir plus sur le RBAC des données, consultez Présentation du RBAC des données.
Résoudre les problèmes courants
L'API fournit des messages d'erreur détaillés pour vous aider à diagnostiquer les problèmes.
| Code canonique | Message d'erreur |
|---|---|
INVALID_ARGUMENT |
INVALID_REQUEST: Invalid request parameter PARAMETER_1, PARAMETER_2, ... PARAMETER_N. Please fix the request parameters and try again. |
PERMISSION_DENIED |
INSUFFICIENT_PERMISSIONS: Unable to validate request with the current CMEK key. Please fix the CMEK key and try again |
NOT_FOUND |
BUCKET_NOT_FOUND: The destination Google Cloud Storage bucket BUCKET_NAME does not exist. Please create the destination Google Cloud Storage bucket and try again. |
NOT_FOUND |
REQUEST_NOT_FOUND: The dataExportId:DATA_EXPORT_ID does not exist. Please add a valid dataExportId and try again. |
FAILED_PRECONDITION |
BUCKET_INVALID_REGION: The Google Cloud Storage bucket BUCKET_ID's region:REGION_1 is not the same region as the SecOps tenant region:REGION_2. Please create the Google Cloud Storage bucket in the same region as SecOps tenant and try again. |
FAILED_PRECONDITION |
INSUFFICIENT_PERMISSIONS: The Service Account P4SA does not have storage.objects.create, storage.objects.get and storage.buckets.get permissions on the destination Google Cloud Storage bucket BUCKET_NAME. Please provide the required access to the Service Account and try again. |
FAILED_PRECONDITION |
INVALID_CANCELLATION: The request status is in the STATUS stage and can't be cancelled. You can only cancel the request if the status is in the IN_QUEUE stage. |
RESOURCE_EXHAUSTED |
CONCURRENT_REQUEST_LIMIT_EXCEEDED: Maximum concurrent requests limit LIMIT reached for the request size SIZE_LIMIT. Please wait for the existing requests to complete and try again. |
RESOURCE_EXHAUSTED |
REQUEST_SIZE_LIMIT_EXCEEDED: The estimated export volume: ESTIMATED_VOLUME for the request is greater than maximum allowed export volume: ALLOWED_VOLUME per request. Please try again with a request within the allowed export volume limit. |
INTERNAL |
INTERNAL_ERROR: An Internal error occurred. Please try again. |
Vous avez encore besoin d'aide ? Obtenez des réponses de membres de la communauté et de professionnels Google SecOps.