Gmail-Protokolle erfassen
Parserversion:7.0
In diesem Dokument wird beschrieben, wie Sie Gmail-Logs mit Google Cloud Storage V2 in Google Security Operations aufnehmen.
Gmail ist der E‑Mail-Dienst von Google Workspace, der sichere, intelligente E‑Mails mit integriertem Schutz vor Spam und Phishing bietet. Gmail-Protokolle enthalten detaillierte Informationen zur E-Mail-Zustellung, zu sicherheitsrelevanten Ereignissen und zum Nachrichtenfluss über die Gmail-Infrastruktur.
Hinweis
Folgende Voraussetzungen müssen erfüllt sein:
- Eine Google SecOps-Instanz
- GCP-Projekt mit aktivierter Cloud Storage API und BigQuery API
- Google Workspace-Konto mit der entsprechenden Version (Enterprise Standard, Enterprise Plus, Education Standard oder Education Plus)
- Super-Admin-Zugriff auf die Admin-Konsole von Google Workspace
- Berechtigungen zum Erstellen und Verwalten von GCS-Buckets
- Berechtigungen zum Verwalten von IAM-Richtlinien für GCS-Buckets
- Berechtigungen zum Erstellen geplanter BigQuery-Abfragen
- Das Dienstkonto gapps-reports@system.gserviceaccount.com muss die Rolle „Bearbeiter“ für das BigQuery-Projekt haben.
Google Cloud Storage-Bucket erstellen
Google Cloud Console verwenden
- Gehen Sie zur Google Cloud Console.
- Wählen Sie Ihr Projekt aus oder erstellen Sie ein neues.
- Rufen Sie im Navigationsmenü Cloud Storage > Buckets auf.
- Klicken Sie auf Bucket erstellen.
Geben Sie die folgenden Konfigurationsdetails an:
Einstellung Wert Bucket benennen Geben Sie einen global eindeutigen Namen ein, z. B. gmail-logs-export.Standorttyp Wählen Sie die Option aus, die am besten zu Ihren Anforderungen passt (Region, Dual-Region, Multi-Region). Standort Wählen Sie den Speicherort aus, z. B. us-central1.Speicherklasse Standard (empfohlen für Logs, auf die häufig zugegriffen wird) Zugriffskontrolle Einheitlich (empfohlen) Schutztools Optional: Objektversionierung oder Aufbewahrungsrichtlinie aktivieren Klicken Sie auf Erstellen.
gcloud-Befehlszeilentool verwenden
Alternativ können Sie einen Bucket mit dem Befehl
gclouderstellen:gcloud storage buckets create gs://gmail-logs-export \ --location=us-central1 \ --default-storage-class=STANDARD- Ersetzen Sie:
gmail-logs-export: Der gewünschte Bucket-Name (global eindeutig).us-central1: Ihre bevorzugte Region (z. B.us-central1,europe-west1).
- Ersetzen Sie:
Google Workspace so konfigurieren, dass Protokolle nach BigQuery exportiert werden
Google Workspace-Protokolle, einschließlich Gmail-Protokolle, werden über die einheitliche Funktion für Workspace-Protokolle und ‑Berichte nach BigQuery exportiert.
BigQuery-Export für Workspace-Protokolle aktivieren
- Melden Sie sich mit einem Super-Admin-Konto in der Admin-Konsole an.
- Gehen Sie zum Menü > „Berichterstellung“ > „Datenintegrationen“.
- Bewegen Sie den Mauszeiger auf die Karte BigQuery Export und klicken Sie auf Bearbeiten.
- Setzen Sie ein Häkchen im Kästchen Export von Google Workspace-Daten zu Google BigQuery aktivieren.
- Wählen Sie unter BigQuery-Projekt-ID das Projekt aus, in dem die Protokolle gespeichert werden sollen.
- Geben Sie unter Neues Dataset im Projekt den Namen des Datasets ein, das zum Speichern der Protokolle verwendet werden soll (z. B.
workspace_logs). - Optional: Setzen Sie ein Häkchen in das Kästchen Dataset auf einen bestimmten geografischen Standort beschränken und wählen Sie den Standort aus dem Menü aus.
Klicken Sie auf Speichern.
Nach dem Aktivieren des Exports sind Ereignisse im Aktivitätsprotokoll normalerweise innerhalb von 10 Minuten verfügbar. Die Daten werden in Tabellen mit dem Namen activity_YYYYMMDD im angegebenen Dataset exportiert.
Geplante Abfrage zum Exportieren von Daten aus BigQuery in GCS erstellen
Wenn Sie Gmail-Logs regelmäßig automatisch aus BigQuery in Cloud Storage exportieren möchten, erstellen Sie eine geplante Abfrage mit der EXPORT DATA-Anweisung.
BigQuery-Konsole verwenden
- Wechseln Sie in der Google Cloud Console zu BigQuery.
- Klicken Sie in der linken Navigationsleiste auf Geplante Abfragen.
- Klicken Sie auf Geplante Abfrage erstellen.
Geben Sie im Abfrageeditor Folgendes ein:
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))- Ersetzen Sie:
gmail-logs-export: Ihr GCS-Bucket-NamePROJECT_ID: Ihre GCP-Projekt-ID.workspace_logs: Ihr BigQuery-Datasetname
- Ersetzen Sie:
Im Abschnitt Zeitplanoptionen:
- Wiederholen: Wählen Sie Stunden aus.
- Alle: Geben Sie
1ein. - Startdatum und Laufzeit: Wählen Sie das aktuelle Datum und die aktuelle Uhrzeit aus.
Gehen Sie im Abschnitt Ziel für Abfrageergebnisse so vor:
- Dataset: Wählen Sie ein Dataset für Abfragemetadaten aus (nicht die exportierten Daten).
Klicken Sie auf Speichern.
bq-Befehlszeilentool verwenden
Alternativ können Sie eine geplante Abfrage mit dem Befehl
bqerstellen: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" }'- Ersetzen Sie:
PROJECT_ID: Ihre GCP-Projekt-ID.gmail-logs-export: Ihr GCS-Bucket-Nameworkspace_logs: Ihr BigQuery-Datasetname
- Ersetzen Sie:
Google SecOps-Dienstkonto abrufen
Google SecOps verwendet ein eindeutiges Dienstkonto, um Daten aus Ihrem GCS-Bucket zu lesen. Sie müssen diesem Dienstkonto Zugriff auf Ihren Bucket gewähren.
Feed in Google SecOps konfigurieren, um Gmail-Logs aufzunehmen
- Rufen Sie die SIEM-Einstellungen > Feeds auf.
- Klicken Sie auf Neuen Nachrichten-Feed hinzufügen.
- Klicken Sie auf Einzelnen Feed konfigurieren.
- Geben Sie im Feld Feedname einen Namen für den Feed ein, z. B.
Gmail Logs. - Wählen Sie Google Cloud Storage V2 als Quelltyp aus.
Wählen Sie GMAIL Logs (GMAIL-Protokolle) als Log type (Protokolltyp) aus.
Klicken Sie auf Dienstkonto abrufen. Eine eindeutige E-Mail-Adresse für das Dienstkonto wird angezeigt, z. B.:
chronicle-12345678@chronicle-gcp-prod.iam.gserviceaccount.comKopieren Sie diese E‑Mail-Adresse für den nächsten Schritt.
Klicken Sie auf Weiter.
Geben Sie Werte für die folgenden Eingabeparameter an:
Storage-Bucket-URL: Geben Sie den GCS-Bucket-URI mit dem Präfixpfad ein:
gs://gmail-logs-export/gmail-logs/- Ersetzen Sie:
gmail-logs-export: Ihr GCS-Bucket-Namegmail-logs: Der Präfix-/Ordnerpfad, in dem Logs gespeichert werden.
- Ersetzen Sie:
Option zum Löschen der Quelle: Wählen Sie die gewünschte Option zum Löschen aus:
- Nie: Nach Übertragungen werden keine Dateien gelöscht (für Tests empfohlen).
- Übertragene Dateien löschen: Dateien werden nach erfolgreicher Übertragung gelöscht.
Übertragene Dateien und leere Verzeichnisse löschen: Löscht Dateien und leere Verzeichnisse nach der erfolgreichen Übertragung.
Maximales Dateialter: Dateien einschließen, die in den letzten Tagen geändert wurden. Der Standardwert ist 180 Tage.
Asset-Namespace: Der Asset-Namespace.
Aufnahmelabels: Das Label, das auf die Ereignisse aus diesem Feed angewendet werden soll.
Klicken Sie auf Weiter.
Prüfen Sie die neue Feedkonfiguration auf dem Bildschirm Abschließen und klicken Sie dann auf Senden.
Dem Google SecOps-Dienstkonto IAM-Berechtigungen gewähren
Das Google SecOps-Dienstkonto benötigt die Rolle Storage Object Viewer für Ihren GCS-Bucket.
Google Cloud Console verwenden
- Rufen Sie Cloud Storage > Buckets auf.
- Klicken Sie auf den Namen Ihres Buckets.
- Wechseln Sie zum Tab Berechtigungen.
- Klicken Sie auf Zugriff erlauben.
- Geben Sie die folgenden Konfigurationsdetails an:
- Hauptkonten hinzufügen: Fügen Sie die E‑Mail-Adresse des Google SecOps-Dienstkontos ein.
- Rollen zuweisen: Wählen Sie Storage Object Viewer aus.
- Klicken Sie auf Speichern.
gcloud-Befehlszeilentool verwenden
Alternativ können Sie Berechtigungen mit dem Befehl
gclouderteilen:gcloud storage buckets add-iam-policy-binding gs://gmail-logs-export \ --member="serviceAccount:SECOPS_SERVICE_ACCOUNT_EMAIL" \ --role="roles/storage.objectViewer"- Ersetzen Sie:
gmail-logs-export: Ihr Bucket-Name.SECOPS_SERVICE_ACCOUNT_EMAIL: Die E-Mail-Adresse des Google SecOps-Dienstkontos.
- Ersetzen Sie:
gsutil-Befehlszeilentool verwenden (Legacy)
Gewähren Sie dem SecOps-Dienstkonto Zugriff als Storage-Objekt-Betrachter auf den Bucket für den Export von Gmail-Protokollen.
gsutil iam ch serviceAccount:SECOPS_SERVICE_ACCOUNT_EMAIL:objectViewer \ gs://gmail-logs-export
Berechtigungen prüfen
So prüfen Sie, ob die Berechtigungen korrekt erteilt wurden:
gcloud storage buckets get-iam-policy gs://gmail-logs-export \ --flatten="bindings[].members" \ --filter="bindings.role:roles/storage.objectViewer"
In der Ausgabe sollte die E-Mail-Adresse des Google SecOps-Dienstkontos angezeigt werden.
UDM-Zuordnungstabelle
| Logfeld | UDM-Zuordnung | Logik |
|---|---|---|
| attachment.file_extension_type, attachment.sha256, attachment.file_name, domains | über | Mit Anhangdetails und Linkdomains zusammengeführt |
| 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 | Zusammengeführt mit verschiedenen zusätzlichen Metadatenfeldern |
| action_type, description, rule_id | metadata.description | Wird basierend auf den Werten von „action_type“ oder aus „description“ auf bestimmte Beschreibungen festgelegt oder auf „Objectionable content“, wenn „rule_id“ == 7 |
| metadata.event_type | Auf „EMAIL_TRANSACTION“ festgelegt | |
| event_name | metadata.product_event_type | Wert direkt kopiert |
| metadata.product_name | Auf „GMAIL“ festgelegt | |
| metadata.vendor_name | Auf „Google“ festlegen | |
| __incoming_message, __outcoming_message | network.direction | Auf „INBOUND“ festgelegt, wenn eine eingehende Nachricht erkannt wird, auf „OUTBOUND“ bei einer ausgehenden Nachricht |
| destination.address | network.email.cc | Zusammengeführt aus Zieladressen mit Index > 0 |
| message_info.source.from_header_address, message_info.source.address | network.email.from | Wert aus „from_header_address“, falls nicht leer, andernfalls aus „source.address“ |
| message_info.rfc2822_message_id, gmail.message_info.rfc2822_message_id | network.email.mail_id | Aus rfc2822_message_id extrahiert, < > entfernt, mit grok |
| message_info.subject, gmail.message_info.subject | network.email.subject | Wert aus „message_info.subject“, wenn nicht leer, andernfalls „gmail.message_info.subject“ |
| destination.address | network.email.to | Zusammengeführt aus der ersten Zieladresse |
| network.ip_protocol | Legen Sie diesen Wert auf „TCP“ fest. | |
| _payload_size | network.received_bytes | Wird auf _payload_size gesetzt, wenn die eingehende Nachricht |
| _payload_size | network.sent_bytes | Wird bei ausgehenden Nachrichten auf „_payload_size“ gesetzt. |
| token.app_name, message_info.source.service, message_info.source.selector, gmail.message_info.source.service, gmail.message_info.source.selector | principal.application | Wert aus „token.app_name“, falls nicht leer, andernfalls aus „source.service“ und „source.selector“ verkettet |
| message_info.connection_info.client_host_zone, gmail.message_info.connection_info.client_host_zone | principal.asset.hostname | Wert aus „client_host_zone“ |
| client_ip | principal.asset.ip | Wert direkt kopiert |
| message_info.connection_info.client_host_zone, gmail.message_info.connection_info.client_host_zone | principal.hostname | Wert aus client_host_zone |
| client_ip | principal.ip | Wert direkt kopiert |
| message_info.connection_info.ip_geo_country, gmail.message_info.connection_info.ip_geo_country | principal.location.country_or_region | Wert aus „ip_geo_country“ |
| email, source_address | principal.user.email_addresses | Zusammengeführt aus „email_address“ und „source_address“ |
| token.client_id | principal.user.group_identifiers | Wert direkt kopiert |
| message_info.source.from_header_displayname, gmail.message_info.source.from_header_displayname | principal.user.user_display_name | Wert aus „from_header_displayname“ |
| source_address | principal.user.userid | Wert direkt kopiert |
| Aktion | security_result.action | Wert direkt kopiert |
| Kategorie | security_result.category | Wert direkt kopiert |
| category_details | security_result.category_details | Wert direkt kopiert |
| message_info.connection_info.smtp_response_reason, gmail.message_info.connection_info.smtp_response_reason, rule_description, reason | security_result.description | Auf „Grund für SMTP-Antwort“, „Regelbeschreibung“ oder „Grund für die Klassifizierung“ festgelegt |
| stringMatch.predefined_detector_name, stringMatch.matched_string, stringMatch.match_expression, stringMatch.source, stringMatch.type | security_result.detection_fields | Mit Objekten im Erkennungsfeld zusammengeführt |
| rule_id | security_result.rule_id | Wert direkt kopiert |
| rule_name | security_result.rule_name | Wert direkt kopiert |
| _err_summary, rule_id, description | security_result.summary | Auf Fehlerzusammenfassung, regelspezifische Zusammenfassung oder Beschreibung festgelegt |
| _target_host | target.administrative_domain | Wert direkt kopiert |
| message_info.destination.0.service, message_info.destination.0.selector, gmail.message_info.destination.0.service, gmail.message_info.destination.0.selector | target.application | Aus Dienst und Selektor verkettet |
gmail.message_info.link_domain |
about.labels |
Aus dem Änderungsprotokoll zugeordnet |
gmail.message_info.description |
metadata.description |
Aus Änderungsprotokoll zugeordnet |
gmail.message_info.attachment.sha256 |
about.file.sha256 |
Aus Änderungsprotokoll zugeordnet |
gmail.message_info.destination.address |
network.email.to |
Aus Änderungsprotokoll zugeordnet |
gmail.message_info.attachment.file_name |
about.file.full_path |
Aus Änderungsprotokoll zugeordnet |
gmail.message_info.source.from_header_address |
network.email.from |
Aus Änderungsprotokoll zugeordnet |
gmail.message_info.attachment.file_extension_type |
about.file.mime_type |
Aus Änderungsprotokoll zugeordnet |
gmail.message_info.triggered_rule_info.rule_type |
security_result.rule_id |
Aus Änderungsprotokoll zugeordnet |
gmail.message_info.triggered_rule_info.rule_name |
security_result.rule_name |
Aus Änderungsprotokoll zugeordnet |
gmail.message_info.source.service", "gmail.message_info.source.selector |
principal.application |
Aus Änderungsprotokoll zugeordnet |
gmail.message_info.payload_size |
network.sent_bytes |
Aus Änderungsprotokoll zugeordnet |
gmail.message_info.payload_size |
network.received_bytes |
Aus Änderungsprotokoll zugeordnet |
gmail.message_info.destination.0.service", "gmail.message_info.destination.0.selector |
target.application |
Aus Änderungsprotokoll zugeordnet |
gmail.message_info.post_delivery_info.action_type", "gmail.message_info.num_message_attachments", and "gmail.event_info.mail_event_type |
additional.fields |
Aus Änderungsprotokoll zugeordnet |
event_info.success |
security_result.action |
Aus Änderungsprotokoll zugeordnet |
attachment.file_name |
about.file.full_path |
Aus Änderungsprotokoll zugeordnet |
message_info.post_delivery_info.action_type", "message_info.post_delivery_info.interaction.link_url", "event_info.mail_event_type |
additional.fields |
Aus dem Änderungsprotokoll zugeordnet |
Änderungsprotokoll
Änderungsprotokoll für diesen Parser ansehen
Benötigen Sie weitere Hilfe? Antworten von Community-Mitgliedern und Google SecOps-Experten erhalten