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 forensiques historiques et de respecter des exigences de conformité strictes (comme SOX et le RGPD).
Pour obtenir des informations détaillées sur la documentation de référence de l'API, consultez API Data Export (version 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 tâche 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 réessayer automatiquement les tâches d'exportation qui rencontrent des problèmes temporaires (par exemple, des problèmes réseau temporaires), ce qui le rend résilient. Si votre tâche d'exportation échoue en raison d'une erreur temporaire, elle est automatiquement relancée plusieurs fois. Si un job échoue définitivement après toutes les tentatives, le système définit son état sur
FINISHED_FAILURE. La réponse de l'API pour ce job contient un message d'erreur détaillé qui explique la cause de l'échec. Auditabilité complète : pour répondre à des normes strictes en matière de conformité et de sécurité, le système enregistre chaque action liée à un job d'exportation dans une piste d'audit immuable. Ce journal inclut la création, le démarrage, la réussite ou l'échec de chaque job, ainsi que l'utilisateur qui a lancé 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 locataire unique 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épertoire logique au sein de votre bucket Google Cloud Storage, ce qui vous aide à localiser et à interroger des périodes spécifiques pour l'analyse 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é Zero Trust) et le contrôle des accès basé sur les rôles (RBAC, accès au moindre privilège) pour les données. Les tâches d'exportation héritent du champ de visibilité des données de l'utilisateur qui déclenche la requête pour empêcher l'extraction non autorisée de données. Le pipeline d'exportation est également entièrement intégré à Google Cloud Key Management Service. 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 unique et asynchrone permettant d'exporter une plage de données de journaux spécifique vers un bucket Google Cloud Storage. Le système suit chaque tâche 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épertoire partitionnée spécifique pour simplifier l'accès aux données et les requêtes.
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 : 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-timestampesthour/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 de l'epoch Unix, qui indique le début du job d'exportation.
- FILE_SHARD_NAME : nom des fichiers fragmentés contenant les journaux bruts. La taille de chaque 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 jobs avec des plages de temps plus courtes.
- Tâches simultanées : chaque locataire client peut exécuter ou mettre en file d'attente un maximum de trois tâches d'exportation simultanément. Le système rejette toute nouvelle demande de création de job qui dépasse cette limite.
- Durée d'exécution des jobs : le volume de données exportées détermine la durée d'exécution des jobs. Un seul job peut prendre jusqu'à 18 heures.
- Format d'exportation et champ de 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 (et non 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 système et les exigences nécessaires pour utiliser l'API Data Export. 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 avez besoin 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, modifier, annuler et afficher les tâches d'exportation à l'aide de l'API. Ce rôle confère un accès mondial.
- 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).
Appliquez des niveaux d'accès RBAC aux données à un utilisateur. Pour limiter l'accès d'un utilisateur à des niveaux d'accès aux données spécifiques, procédez comme suit :
- Assurez-vous que les niveaux de contrôle RBAC des données que vous souhaitez appliquer ont déjà été créés dans l'UI Google SecOps, sous Paramètres> Paramètres SIEM> Accès aux données> Niveaux. Notez le nom complet de chaque autorisation que vous comptez attribuer à l'utilisateur.
Créez un rôle IAM (Identity and Access Management) personnalisé pour gérer 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 spécifique d'autorisations, 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 celles listées à la première étape (Accorder des autorisations à l'utilisateur de l'API).
- Cliquez sur Créer.
Accordez 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 indiquer que l'utilisateur est soumis aux niveaux d'accès aux 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 niveaux d'accès aux données spécifiques, procédez comme suit :- Cliquez sur Ajouter une condition IAM.
- Utilisez le générateur de conditions ou l'éditeur de conditions pour définir les autorisations autorisées, en utilisant le nom de l'autorisation 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 (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, 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 des 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.
Terminez 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 principal
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'ensemble du cycle de vie de l'exportation groupée de données. 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 des jobs d'exportation de données sur l'instance Google SecOps de la ressource parente. Cette instance est la source des données de journaux 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 une tâche d'exportation spécifique, consultez GetDataExport.
Pour savoir comment lister certains types de tâches 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 une tâche mise 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 du RBAC des données des utilisateurs qui créent un job d'exportation, ce qui empêche l'extraction non autorisée de données.
Si vous essayez 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, cela signifie que certaines ou toutes les données sélectionnées pour le job d'exportation ont été exclues, car elles ne correspondaient pas aux niveaux d'accès RBAC aux données applicables au créateur du job. Si dataRbacFiltered est défini sur false, cela signifie que le job d'exportation n'a pas été affecté par les restrictions liées au champ d'application du contrôle RBAC des données et que toutes les données incluses dans le job ont été exportées avec succès.
L'API applique les niveaux d'accès aux données en fonction des rôles (RBAC) qui sont applicables au créateur au moment de la création du job. Les modifications apportées aux niveaux d'accès RBAC aux 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.