Raccogliere i log di Gmail

Supportato in:

Questo documento spiega come importare i log di Gmail in Google Security Operations utilizzando Google Cloud Storage V2.

Gmail è il servizio email di Google Workspace che offre email sicure e intelligenti con protezione antispam e anti-phishing integrata. I log di Gmail acquisiscono informazioni dettagliate sul recapito delle email, sugli eventi di sicurezza e sul flusso dei messaggi nell'infrastruttura di Gmail.

Prima di iniziare

Assicurati di disporre dei seguenti prerequisiti:

  • Un'istanza Google SecOps
  • Progetto GCP con API Cloud Storage e API BigQuery abilitate
  • Account Google Workspace con la versione appropriata (Enterprise Standard, Enterprise Plus, Education Standard o Education Plus)
  • Accesso del super amministratore alla Console di amministrazione Google Workspace
  • Autorizzazioni per creare e gestire bucket GCS
  • Autorizzazioni per gestire le policy IAM nei bucket GCS
  • Autorizzazioni per creare query pianificate BigQuery
  • Il account di servizio gapps-reports@system.gserviceaccount.com deve avere il ruolo Editor nel progetto BigQuery

Creazione di un bucket Google Cloud Storage

Utilizzo di Google Cloud Console

  1. Vai alla console Google Cloud.
  2. Seleziona il tuo progetto o creane uno nuovo.
  3. Nel menu di navigazione, vai a Cloud Storage > Bucket.
  4. Fai clic su Crea bucket.
  5. Fornisci i seguenti dettagli di configurazione:

    Impostazione Valore
    Assegna un nome al bucket Inserisci un nome univoco globale (ad esempio gmail-logs-export).
    Tipo di località Scegli in base alle tue esigenze (regione singola, doppia regione, più regioni)
    Località Seleziona la posizione (ad esempio, us-central1).
    Classe di archiviazione Standard (consigliato per i log a cui si accede di frequente)
    Controllo dell'accesso Uniforme (consigliato)
    Strumenti di protezione (Facoltativo) Attiva il controllo delle versioni degli oggetti o la policy di conservazione
  6. Fai clic su Crea.

Utilizzo dello strumento a riga di comando gcloud

  • In alternativa, crea un bucket utilizzando il comando gcloud:

    gcloud storage buckets create gs://gmail-logs-export \
        --location=us-central1 \
        --default-storage-class=STANDARD
    
    • Sostituisci:
      • gmail-logs-export: il nome del bucket che preferisci (univoco a livello globale).
      • us-central1: la regione che preferisci (ad esempio, us-central1, europe-west1).

Configurare Google Workspace per esportare i log in BigQuery

I log di Google Workspace, inclusi i log di Gmail, vengono esportati in BigQuery tramite la funzionalità unificata di log e report di Workspace.

Abilitare l'esportazione BigQuery per i log di Workspace

  1. Accedi con un account super amministratore alla Console di amministrazione Google.
  2. Vai a Menu > Reporting > Integrazioni di dati.
  3. Posiziona il cursore sulla scheda Esportazione in BigQuery e fai clic su Modifica.
  4. Seleziona la casella Abilita l'esportazione dei dati di Google Workspace in Google BigQuery.
  5. In ID progetto BigQuery, seleziona il progetto in cui archiviare i log.
  6. In Nuovo set di dati all'interno del progetto, inserisci il nome del set di dati da utilizzare per memorizzare i log (ad esempio, workspace_logs).
  7. (Facoltativo) Seleziona la casella Limita il set di dati a una posizione geografica specifica e seleziona la posizione dal menu.
  8. Fai clic su Salva.

Dopo aver attivato l'esportazione, gli eventi del log delle attività sono in genere disponibili entro 10 minuti. I dati vengono esportati in tabelle denominate activity_YYYYMMDD nel set di dati specificato.

Crea una query pianificata per l'esportazione da BigQuery a GCS

Per esportare automaticamente i log di Gmail da BigQuery a Cloud Storage in base a una pianificazione ricorrente, crea una query pianificata utilizzando l'istruzione EXPORT DATA.

Utilizzo della console BigQuery

  1. Nella console Google Cloud, vai a BigQuery.
  2. Nel menu di navigazione a sinistra, fai clic su Query pianificate.
  3. Fai clic su Crea query programmata.
  4. Nell'Editor di query, inserisci il seguente SQL:

    EXPORT DATA OPTIONS(
        uri='gs://gmail-logs-export/gmail-logs/*.json',
        format='JSON',
        overwrite=false
    ) AS
    SELECT 
        *
    FROM 
        `PROJECT_ID.workspace_logs.activity_*`
    WHERE 
        record_type = 'gmail'
        AND _TABLE_SUFFIX = FORMAT_DATE('%Y%m%d', DATE_SUB(CURRENT_DATE(), INTERVAL 1 DAY))
    
    • Sostituisci:
      • gmail-logs-export: il nome del tuo bucket GCS
      • PROJECT_ID: l'ID progetto Google Cloud
      • workspace_logs: il nome del set di dati BigQuery
  5. Nella sezione Opzioni di pianificazione:

    • Ripeti: seleziona Ore.
    • Ogni: inserisci 1.
    • Data di inizio e ora di esecuzione: seleziona la data e l'ora attuali.
  6. Nella sezione Destinazione per i risultati della query:

    • Set di dati: seleziona un set di dati per i metadati della query (non i dati esportati).
  7. Fai clic su Salva.

Utilizzo dello strumento a riga di comando bq

  • In alternativa, crea una query pianificata utilizzando il comando bq:

    bq mk \
        --transfer_config \
        --project_id=PROJECT_ID \
        --data_source=scheduled_query \
        --display_name='Gmail Logs Export to GCS' \
        --schedule='every 1 hours' \
        --params='{
            "query":"EXPORT DATA OPTIONS(uri=\"gs://gmail-logs-export/gmail-logs/*.json\", format=\"JSON\", overwrite=false) AS SELECT * FROM `PROJECT_ID.workspace_logs.activity_*` WHERE record_type = \"gmail\" AND _TABLE_SUFFIX = FORMAT_DATE(\"%Y%m%d\", DATE_SUB(CURRENT_DATE(), INTERVAL 1 DAY))",
            "destination_table_name_template":"gmail_export_metadata",
            "write_disposition":"WRITE_TRUNCATE"
        }'
    
    • Sostituisci:
      • PROJECT_ID: l'ID progetto Google Cloud
      • gmail-logs-export: il nome del tuo bucket GCS
      • workspace_logs: il nome del set di dati BigQuery

Recuperare il account di servizio Google SecOps

Google SecOps utilizza un account di servizio univoco per leggere i dati dal tuo bucket GCS. Devi concedere a questo account di servizio l'accesso al tuo bucket.

Configurare un feed in Google SecOps per importare i log di Gmail

  1. Vai a Impostazioni SIEM > Feed.
  2. Fai clic su Aggiungi nuovo feed.
  3. Fai clic su Configura un singolo feed.
  4. Nel campo Nome feed, inserisci un nome per il feed (ad esempio, Gmail Logs).
  5. Seleziona Google Cloud Storage V2 come Tipo di origine.
  6. Seleziona Log di GMAIL come Tipo di log.

  7. Fai clic su Ottieni service account. Viene visualizzata un'email del account di servizio univoca, ad esempio:

    chronicle-12345678@chronicle-gcp-prod.iam.gserviceaccount.com
    
  8. Copia questo indirizzo email per utilizzarlo nel passaggio successivo.

  9. Fai clic su Avanti.

  10. Specifica i valori per i seguenti parametri di input:

    • URL del bucket di archiviazione: inserisci l'URI del bucket GCS con il percorso del prefisso:

       gs://gmail-logs-export/gmail-logs/
      
      • Sostituisci:
        • gmail-logs-export: il nome del tuo bucket GCS
        • gmail-logs: Il percorso del prefisso/della cartella in cui vengono archiviati i log
    • Opzione di eliminazione dell'origine: seleziona l'opzione di eliminazione in base alle tue preferenze:

      • Mai: non elimina mai i file dopo i trasferimenti (opzione consigliata per i test).
      • Elimina file trasferiti: elimina i file dopo il trasferimento riuscito.
      • Elimina file trasferiti e directory vuote: elimina i file e le directory vuote dopo il trasferimento riuscito.

    • Età massima del file: includi i file modificati nell'ultimo numero di giorni. Il valore predefinito è 180 giorni.

    • Spazio dei nomi dell'asset: lo spazio dei nomi dell'asset.

    • Etichette di importazione: l'etichetta da applicare agli eventi di questo feed.

  11. Fai clic su Avanti.

  12. Controlla la nuova configurazione del feed nella schermata Finalizza e poi fai clic su Invia.

Concedi le autorizzazioni IAM al account di servizio Google SecOps

Il account di servizio Google SecOps deve avere il ruolo Visualizzatore oggetti Storage nel bucket GCS.

Utilizzo di Google Cloud Console

  1. Vai a Cloud Storage > Bucket.
  2. Fai clic sul nome del bucket.
  3. Vai alla scheda Autorizzazioni.
  4. Fai clic su Concedi l'accesso.
  5. Fornisci i seguenti dettagli di configurazione:
    • Aggiungi entità: incolla l'email del account di servizio Google SecOps.
    • Assegna i ruoli: seleziona Visualizzatore oggetti Storage.
  6. Fai clic su Salva.

Utilizzo dello strumento a riga di comando gcloud

  • In alternativa, concedi le autorizzazioni utilizzando il comando gcloud:

    gcloud storage buckets add-iam-policy-binding gs://gmail-logs-export \
        --member="serviceAccount:SECOPS_SERVICE_ACCOUNT_EMAIL" \
        --role="roles/storage.objectViewer"
    
    • Sostituisci:
      • gmail-logs-export: il nome del bucket.
      • SECOPS_SERVICE_ACCOUNT_EMAIL: l'email del account di servizio Google SecOps.

Utilizzo dello strumento a riga di comando gsutil (legacy)

  • Concedi al account di servizio SecOps l'accesso Visualizzatore oggetti al bucket di esportazione dei log di Gmail.

    gsutil iam ch serviceAccount:SECOPS_SERVICE_ACCOUNT_EMAIL:objectViewer \
        gs://gmail-logs-export
    

Verifica le autorizzazioni

  • Per verificare che le autorizzazioni siano state concesse correttamente:

    gcloud storage buckets get-iam-policy gs://gmail-logs-export \
        --flatten="bindings[].members" \
        --filter="bindings.role:roles/storage.objectViewer"
    

Nell'output dovrebbe essere visualizzato l'indirizzo email del account di servizio Google SecOps.

Tabella di mappatura UDM

Campo log Mappatura UDM Logic
attachment.file_extension_type, attachment.sha256, attachment.file_name, domains about Unito a dettagli degli allegati e domini dei link
message_info.post_delivery_info.action_type, gmail.message_info.post_delivery_info.action_type, event_info.mail_event_type, gmail.event_info.mail_event_type, tok.product_bucket, tok.scope_name, record_type, token.client_type, message_info.num_message_attachments, gmail.message_info.num_message_attachments additional.fields Unito a vari campi di metadati aggiuntivi
action_type, description, rule_id metadata.description Impostato su descrizioni specifiche in base ai valori di action_type o da description o "Contenuti discutibili" se rule_id == 7
metadata.event_type Imposta su "EMAIL_TRANSACTION"
event_name metadata.product_event_type Valore copiato direttamente
metadata.product_name Impostato su "GMAIL"
metadata.vendor_name Imposta su "Google"
__incoming_message, __outcoming_message network.direction Impostato su "INBOUND" se viene rilevato un messaggio in arrivo, "OUTBOUND" se in uscita
destination.address network.email.cc Uniti dagli indirizzi di destinazione in cui l'indice è > 0
message_info.source.from_header_address, message_info.source.address network.email.from Valore da from_header_address se non è vuoto, altrimenti da source.address
message_info.rfc2822_message_id, gmail.message_info.rfc2822_message_id network.email.mail_id Estratto da rfc2822_message_id, rimozione di < >, utilizzando grok
message_info.subject, gmail.message_info.subject network.email.subject Valore di message_info.subject se non è vuoto, altrimenti gmail.message_info.subject
destination.address network.email.to Unito dall'indirizzo della prima destinazione
network.ip_protocol Impostato su "TCP"
_payload_size network.received_bytes Imposta su _payload_size se il messaggio è in arrivo
_payload_size network.sent_bytes Imposta _payload_size se il messaggio è in uscita
token.app_name, message_info.source.service, message_info.source.selector, gmail.message_info.source.service, gmail.message_info.source.selector principal.application Valore di token.app_name se non è vuoto, altrimenti concatenato da source.service e source.selector
message_info.connection_info.client_host_zone, gmail.message_info.connection_info.client_host_zone principal.asset.hostname Valore da client_host_zone
client_ip principal.asset.ip Valore copiato direttamente
message_info.connection_info.client_host_zone, gmail.message_info.connection_info.client_host_zone principal.hostname Valore da client_host_zone
client_ip principal.ip Valore copiato direttamente
message_info.connection_info.ip_geo_country, gmail.message_info.connection_info.ip_geo_country principal.location.country_or_region Valore da ip_geo_country
email, source_address principal.user.email_addresses Unito da email_address e source_address
token.client_id principal.user.group_identifiers Valore copiato direttamente
message_info.source.from_header_displayname, gmail.message_info.source.from_header_displayname principal.user.user_display_name Valore ottenuto da from_header_displayname
source_address principal.user.userid Valore copiato direttamente
azione security_result.action Valore copiato direttamente
categoria security_result.category Valore copiato direttamente
category_details security_result.category_details Valore copiato direttamente
message_info.connection_info.smtp_response_reason, gmail.message_info.connection_info.smtp_response_reason, rule_description, reason security_result.description Impostato su Motivo della risposta SMTP, Descrizione regola o Motivo classificazione
stringMatch.predefined_detector_name, stringMatch.matched_string, stringMatch.match_expression, stringMatch.source, stringMatch.type security_result.detection_fields Unito agli oggetti del campo di rilevamento
rule_id security_result.rule_id Valore copiato direttamente
rule_name security_result.rule_name Valore copiato direttamente
_err_summary, rule_id, description security_result.summary Impostato su riepilogo degli errori, riepilogo specifico della regola o descrizione
_target_host target.administrative_domain Valore copiato direttamente
message_info.destination.0.service, message_info.destination.0.selector, gmail.message_info.destination.0.service, gmail.message_info.destination.0.selector target.application Concatenato dal servizio e dal selettore

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