Raccogliere i log di Gmail
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
- Vai alla console Google Cloud.
- Seleziona il tuo progetto o creane uno nuovo.
- Nel menu di navigazione, vai a Cloud Storage > Bucket.
- Fai clic su Crea bucket.
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 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).
- Sostituisci:
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
- Accedi con un account super amministratore alla Console di amministrazione Google.
- Vai a Menu > Reporting > Integrazioni di dati.
- Posiziona il cursore sulla scheda Esportazione in BigQuery e fai clic su Modifica.
- Seleziona la casella Abilita l'esportazione dei dati di Google Workspace in Google BigQuery.
- In ID progetto BigQuery, seleziona il progetto in cui archiviare i log.
- 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). - (Facoltativo) Seleziona la casella Limita il set di dati a una posizione geografica specifica e seleziona la posizione dal menu.
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
- Nella console Google Cloud, vai a BigQuery.
- Nel menu di navigazione a sinistra, fai clic su Query pianificate.
- Fai clic su Crea query programmata.
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 GCSPROJECT_ID: l'ID progetto Google Cloudworkspace_logs: il nome del set di dati BigQuery
- Sostituisci:
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.
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).
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 Cloudgmail-logs-export: il nome del tuo bucket GCSworkspace_logs: il nome del set di dati BigQuery
- Sostituisci:
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
- Vai a Impostazioni SIEM > Feed.
- Fai clic su Aggiungi nuovo feed.
- Fai clic su Configura un singolo feed.
- Nel campo Nome feed, inserisci un nome per il feed (ad esempio,
Gmail Logs). - Seleziona Google Cloud Storage V2 come Tipo di origine.
Seleziona Log di GMAIL come Tipo di log.
Fai clic su Ottieni service account. Viene visualizzata un'email del account di servizio univoca, ad esempio:
chronicle-12345678@chronicle-gcp-prod.iam.gserviceaccount.comCopia questo indirizzo email per utilizzarlo nel passaggio successivo.
Fai clic su Avanti.
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 GCSgmail-logs: Il percorso del prefisso/della cartella in cui vengono archiviati i log
- Sostituisci:
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.
Fai clic su Avanti.
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
- Vai a Cloud Storage > Bucket.
- Fai clic sul nome del bucket.
- Vai alla scheda Autorizzazioni.
- Fai clic su Concedi l'accesso.
- Fornisci i seguenti dettagli di configurazione:
- Aggiungi entità: incolla l'email del account di servizio Google SecOps.
- Assegna i ruoli: seleziona Visualizzatore oggetti Storage.
- 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.
- Sostituisci:
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.