Esportare i log non elaborati in un bucket Google Cloud Storage autogestito

Supportato in:

L'API Data Export facilita l'esportazione collettiva dei dati di sicurezza da Google Security Operations a un bucket Google Cloud Storage che controlli. Questa funzionalità supporta la conservazione dei dati a lungo termine, l'analisi forense storica e i requisiti di conformità rigorosi (ad esempio SOX e GDPR).

Per informazioni dettagliate sul riferimento API, consulta API Data Export (versione avanzata).

L'API Data Export fornisce una soluzione scalabile e affidabile per le esportazioni di dati in un determinato momento e gestisce richieste fino a 100 TB.

In quanto pipeline gestita, offre funzionalità essenziali di livello enterprise, tra cui:

  • Nuovi tentativi automatici in caso di errori temporanei
  • Monitoraggio completo dello stato dei job
  • Un audit trail completo per ogni job di esportazione

L'API partiziona logicamente i dati esportati per data e ora all'interno del bucket Google Cloud Storage.

Questa funzionalità consente di creare workflow di offload dei dati su larga scala. Google SecOps gestisce la complessità del processo di esportazione per garantire stabilità e prestazioni.

Vantaggi principali

L'API Data Export fornisce una soluzione resiliente e controllabile per la gestione del ciclo di vita dei dati di sicurezza, con i seguenti vantaggi principali:

  • Affidabilità: il servizio gestisce i trasferimenti di dati su larga scala. Il sistema utilizza una strategia di backoff esponenziale per riprovare automaticamente i job di esportazione che riscontrano problemi temporanei (ad esempio problemi di rete temporanei), rendendolo resiliente. Se il job di esportazione non riesce a causa di un errore temporaneo, viene eseguito automaticamente un nuovo tentativo più volte. Se un job non riesce in modo permanente dopo tutti i tentativi, il sistema aggiorna il suo stato a FINISHED_FAILURE e la risposta dell'API per quel job contiene un messaggio di errore dettagliato che spiega la causa.
  • Controllabilità completa: per soddisfare rigorosi standard di conformità e sicurezza standard, il sistema acquisisce ogni azione relativa a un job di esportazione in un audit trail immutabile. Questo audit trail include la creazione, l'avvio, il successo o l'errore di ogni job, insieme all'utente che ha avviato l'azione, un timestamp e i parametri del job.

  • Ottimizzata per prestazioni e scalabilità: l'API utilizza un sistema di gestione dei job robusto. Questo sistema include la messa in coda e la definizione delle priorità per garantire la stabilità della piattaforma e impedire a un singolo tenant di monopolizzare le risorse.

  • Integrità dei dati e accessibilità migliorate: il sistema organizza automaticamente i dati in una struttura di directory logica all'interno del bucket Cloud Storage, il che ti aiuta a individuare ed eseguire query su intervalli di tempo specifici per l'analisi storica.

  • Sicurezza: l'API è progettata per essere completamente conforme alle chiavi di crittografia gestite dal cliente (CMEK) (sicurezza Zero Trust) e al controllo dell'accesso basato sui ruoli (RBAC) dei dati (accesso con privilegi minimi). I job di esportazione ereditano l'ambito di visibilità dei dati dell'utente che attiva la richiesta per impedire l'estrazione non autorizzata dei dati. La pipeline di esportazione è anche completamente integrata con Google Cloud Key Management Service e i dati rimangono criptati in modalità non attiva nel bucket Google Cloud Storage utilizzando le tue chiavi.

Termini e concetti chiave

  • Job di esportazione: una singola operazione asincrona per esportare un intervallo di tempo specifico di dati di log in un bucket Google Cloud Storage. Il sistema monitora ogni job con un dataExportId univoco.
  • Stato del job: lo stato attuale di un job di esportazione nel suo ciclo di vita (ad esempio, IN_QUEUE, PROCESSING, FINISHED_SUCCESS).
  • Bucket Google Cloud Storage: un bucket Google Cloud Storage di proprietà dell'utente che funge da destinazione per i dati esportati.
  • Tipi di log: le categorie specifiche di log che puoi esportare (ad esempio, NIX_SYSTEM, WINDOWS_DNS, CB_EDR). Per maggiori dettagli, consulta l' elenco di tutti i tipi di log supportati.

Informazioni sulla struttura dei dati esportati

Al completamento di un job, il sistema scrive i dati nel bucket Cloud Storage. Utilizza una struttura di directory specifica e partizionata per semplificare l'accesso ai dati e l'esecuzione di query.

Struttura del percorso della directory: gs://GCS_BUCKET_NAME/ EXPORT_JOB_NAME/LOGTYPE/EVENT_TIME_BUCKET/EPOCH_EXECUTION_TIME/FILE_SHARD_NAME.csv

Dove:

  • GCS_BUCKET_NAME: si riferisce al nome del bucket Google Cloud Storage.
  • EXPORT_JOB_NAME: si riferisce al nome univoco del job di esportazione.
  • LOGTYPE: si riferisce al nome del tipo di log per i dati esportati.
  • EVENT_TIME_BUCKET: si riferisce all'intervallo di ore dei timestamp degli eventi dei log esportati. Il formato è un timestamp UTC: year/month/day/UTC-timestamp, dove UTC-timestamp è hour/minute/second. Ad esempio, 2025/08/25/01/00/00 si riferisce a UTC 01:00:00 AM, August 25, 2025.
  • EPOCH_EXECUTION_TIME: si riferisce al valore del tempo Unix epoch, che indica quando è iniziato il job di esportazione.
  • FILE_SHARD_NAME: si riferisce al nome dei file suddivisi contenenti i log non elaborati. Ogni file suddiviso ha un limite di dimensioni massime di 100 MB.

Prestazioni e limitazioni

Il servizio ha i seguenti limiti specifici per garantire la stabilità della piattaforma e l'allocazione equa delle risorse:

  • Volume massimo di dati per job: ogni singolo job di esportazione può richiedere fino a 100 TB di dati. Per i set di dati più grandi, Google consiglia di suddividere l'esportazione in più job con intervalli di tempo più piccoli.
  • Job simultanei: ogni tenant cliente può eseguire o mettere in coda un massimo di tre job di esportazione contemporaneamente. Il sistema rifiuta qualsiasi nuova richiesta di creazione di job che superi questo limite.
  • Tempi di completamento dei job: il volume dei dati esportati determina i tempi di completamento dei job. Un singolo job può richiedere fino a 18 ore.
  • Formato di esportazione e ambito dei dati: l'API supporta le esportazioni collettive in un determinato momento , con le seguenti limitazioni e funzionalità:
    • Solo log non elaborati: puoi esportare solo log non elaborati (non log UDM, eventi UDM o rilevamenti). Per scoprire come esportare i dati UDM, consulta Esportare in un progetto BigQuery autogestito.
    • Compressione dei dati: l'API esporta i dati come testo non compresso.

Prerequisiti e architettura

Questa sezione descrive l'architettura del sistema e i requisiti necessari per l'utilizzo dell'API Data Export e l'architettura del sistema. Utilizza queste informazioni per verificare che il tuo ambiente sia configurato correttamente.

Prima di utilizzare l'API Data Export, completa i seguenti passaggi preliminari per configurare la destinazione Google Cloud Storage e concedere le autorizzazioni necessarie:

  1. Concedi le autorizzazioni all'utente. Per utilizzare l'API Data Export, devi disporre delle seguenti autorizzazioni nel progetto BYOP Google Cloud collegato al tenant Google SecOps:

    Queste autorizzazioni fanno parte dei seguenti ruoli IAM predefiniti:

    • Amministratore API Chronicle: concede le autorizzazioni complete per creare, aggiornare, annullare e visualizzare i job di esportazione utilizzando l'API. Questo ruolo concede l'accesso globale.
    • Chronicle API Viewer: concede l'accesso di sola lettura per visualizzare le configurazioni e la cronologia dei job utilizzando l'API. Senza il ruolo restrictedDataAccess, un utente con questo ruolo può visualizzare tutti i dati (vedi il passaggio + Aggiungi un altro ruolo e aggiungi una condizione).
  2. Applica gli ambiti RBAC dei dati a un utente. Per limitare un utente ad ambiti di accesso ai dati specifici:

    1. Assicurati che gli ambiti RBAC dei dati che vuoi applicare siano già stati creati nell'interfaccia utente di Google SecOps in Impostazioni > Impostazioni SIEM > Accesso ai dati > Ambiti. Prendi nota del nome completo di ogni ambito che intendi assegnare all'utente.
    2. Crea un ruolo personalizzato Identity and Access Management (IAM) per la gestione dell'esportazione dei dati. Poiché i ruoli predefiniti potrebbero concedere un accesso eccessivo o non avere la combinazione specifica di autorizzazioni, segui questi passaggi per creare un ruolo personalizzato adatto alla gestione delle esportazioni di dati in un contesto con ambito:

      1. Nella Google Cloud console, vai a IAM e amministrazione > Ruoli.
      2. Fai clic su + Crea ruolo.
      3. Inserisci un titolo (ad esempio, SecOps Scoped Data Export User).
      4. Inserisci un ID (ad esempio, secopsScopedDataExportUser).
      5. Fai clic su + Aggiungi autorizzazioni.
      6. Filtra le autorizzazioni di Chronicle e aggiungi le autorizzazioni pertinenti elencate nel primo passaggio (Concedi le autorizzazioni all'utente dell'API).
      7. Fai clic su Crea.
  3. Concedi i ruoli IAM all'utente. Nella pagina IAM, segui questi passaggi per assegnare i ruoli necessari all'utente:

    1. Vai a IAM e amministrazione > IAM.
    2. Fai clic su + Concedi l'accesso.
    3. In Nuove entità, inserisci l'indirizzo email dell'utente.
    4. Per assegnare i ruoli:

      1. Aggiungi il ruolo personalizzato che hai creato (ad esempio, SecOps Scoped Data Export User).
      2. Fai clic su + Aggiungi un altro ruolo e aggiungi il ruolo Chronicle API Restricted Data Access (restrictedDataAccess). Questo ruolo è fondamentale per contrassegnare l'utente come soggetto agli ambiti dei dati.
  4. Aggiungi una condizione IAM all'associazione di ruoli Chronicle API Restricted Data Access. Per collegare l'utente ad ambiti di dati specifici:

    1. Fai clic su Aggiungi condizione IAM.
    2. Utilizza il generatore di condizioni o l'editor di condizioni per definire gli ambiti consentiti, utilizzando il nome dell'ambito creato nel primo passaggio come nome della risorsa. Ad esempio, per utilizzare un ambito denominato scope_test, imposta la condizione resource.name.endsWith("/dataAccessScopes/scope_test").

    Per scoprire di più su come viene implementato l'RBAC dei dati per l'API Data Export, consulta Come si applica l'RBAC dei dati all'API Data Export.

  5. Crea un bucket Google Cloud Storage. Nel tuo Google Cloud progetto, crea un nuovo bucket Google Cloud Storage (la destinazione per i dati esportati) nella stessa regione del tenant Google SecOps. Rendilo privato per impedire l'accesso non autorizzato. Per i dettagli, consulta Creare un bucket.

  6. Concedi le autorizzazioni al service account. Per concedere al service account Google SecOps, collegato al tenant Google SecOps, i ruoli IAM necessari per scrivere i dati nel bucket:

    1. Chiama l'endpoint API FetchServiceAccountForDataExport per identificare il service account univoco dell'istanza Google SecOps. L'API restituisce l'indirizzo email del service account.

      Esempio di richiesta:

      {
        "parent": "projects/myproject/locations/us/instances/aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee"
      }
      

      Esempio di risposta:

      {
        "service_account_email": "service-1234@gcp-sa-chronicle.iam.gserviceaccount.com"
      }
      
    2. Concedi all'entità del service account Google SecOps i seguenti ruoli IAM per il bucket Google Cloud Storage di destinazione, che consentono al servizio Google SecOps di scrivere i file di dati esportati nel bucket Google Cloud Storage:

      • Storage object administrator (roles/storage.objectAdmin)
      • Legacy bucket reader (roles/storage.legacyBucketReader)

      Per i dettagli, consulta Concedere l'accesso al service account Google SecOps.

  7. Completa l'autenticazione. L'API Data Export autentica le chiamate. Per configurare questa autenticazione, segui le istruzioni nelle seguenti sezioni:

    1. Metodi di autenticazione per i Google Cloud servizi
    2. Credenziali predefinite dell'applicazione

Casi d'uso principali e workflow di base

L'API Data Export fornisce una suite di endpoint per creare job di esportazione dei dati e gestire l'intero ciclo di vita dell'esportazione collettiva dei dati. Esegui tutte le interazioni utilizzando le chiamate API.

I seguenti casi d'uso descrivono come creare, monitorare e gestire i job di esportazione dei dati.

Creare un nuovo job di esportazione dei dati

Il sistema archivia le specifiche dei job di esportazione dei dati nell'istanza Google SecOps della risorsa principale. Questa istanza è l'origine dei dati di log per il job di esportazione.

  • Per scoprire come identificare il service account univoco per l'istanza Google SecOps, consulta FetchServiceAccountForDataExports.

  • Per avviare una nuova esportazione, invia una richiesta POST all'endpoint dataExports.create. Per i dettagli, consulta l'endpoint CreateDataExport.

Monitorare lo stato del job di esportazione dei dati

Puoi visualizzare i dettagli e lo stato del job di esportazione dei dati per un job di esportazione specifico o configurare un filtro per visualizzare determinati tipi di job.

  • Per scoprire come visualizzare un job di esportazione specifico, consulta GetDataExport.

  • Per scoprire come elencare determinati tipi di job di esportazione dei dati utilizzando un filtro, consulta ListDataExport.

Annullare i job in coda

Puoi annullare un job quando il suo stato è IN_QUEUE.

Per scoprire come annullare un job in coda, consulta CancelDataExport.

Come si applica l'RBAC dei dati all'API Data Export

I job di esportazione ereditano l'ambito RBAC dei dati degli utenti che creano un job di esportazione, il che impedisce l'estrazione non autorizzata dei dati.

Se tenti di esportare dati che vanno oltre l'ambito di accesso ai dati consentito, l'API esclude automaticamente questi dati al momento dell'esecuzione del job di esportazione. Il valore del campo dataRbacFiltered nei metadati dei job completati (ovvero i job con stato FINISHED_SUCCESS) indica se i dati sono stati esclusi. Se dataRbacFiltered è true, alcuni o tutti i dati selezionati per il job di esportazione sono stati esclusi perché non rientravano negli ambiti RBAC dei dati applicabili al creatore del job. Se dataRbacFiltered è false, il job di esportazione non è stato interessato dalle restrizioni dell'ambito RBAC dei dati e tutti i dati inclusi nel job sono stati esportati correttamente.

L'API applica gli ambiti RBAC dei dati applicabili al creatore al momento della creazione del job. Le modifiche agli ambiti RBAC dei dati non vengono applicate retroattivamente ai job già creati.

Per scoprire di più sull'RBAC dei dati, consulta Panoramica dell'RBAC dei dati.

Risolvere i problemi comuni

L'API fornisce messaggi di errore dettagliati per aiutarti a diagnosticare i problemi.

Codice canonico Messaggio di errore
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.

Hai bisogno di ulteriore assistenza? Ricevi risposte dai membri della community e dai professionisti di Google SecOps.