Skip to content

Dieses Tool ist weder mit Google LLC verbunden noch von Google LLC unterstützt oder gesponsert. Google Cloud und Google Cloud Platform sind Marken von Google LLC. Andere Namen sind Marken ihrer jeweiligen Inhaber.

Cloud Audit Logs: Log-Typen erklärt und richtig exportieren

Admin Activity, Data Access, System Event und Policy Denied: was jedes Audit-Log erfasst, Aufbewahrung, wichtige Felder und vier Wege, die Logs zu exportieren.

Veröffentlicht am 6 Min. Lesezeit

Kurz gesagt. Google Cloud schreibt pro Projekt, Ordner und Organisation vier Audit-Logs: Admin Activity (Konfigurationsänderungen, immer aktiv, 400 Tage), System Event (von Google ausgelöste Änderungen, immer aktiv, 400 Tage), Data Access (Lesezugriffe und Datenschreibvorgänge, standardmäßig deaktiviert außer bei einigen BigQuery-Diensten, 30 Tage) und Policy Denied (durch Sicherheitsrichtlinien verweigerte Zugriffe, standardmäßig aktiv, 30 Tage). Exportieren Sie für eine Untersuchung alle vier als JSON: über den Logs Explorer für kurze Zeiträume, mit gcloud logging read für längere, oder kopieren Sie den Sink-Bucket, falls Sie einen haben.

Cloud Audit Logs sind das Protokoll der Control Plane von Google Cloud: wer hat was, wo und wann getan. Jede Untersuchung eines Google-Cloud-Projekts stützt sich darauf. Wer genau weiß, was jeder Typ erfasst und was nicht, spart Stunden.

Die vier Typen von Audit-Logs

Google dokumentiert vier Typen in der Übersicht zu Cloud Audit Logs. Am Log-Namen erkennen Sie, welchen Sie vor sich haben: projects/PROJECT_ID/logs/cloudaudit.googleapis.com%2F<type>.

TypSuffix des Log-NamensErfasstStandardStandard-Aufbewahrung
Admin ActivityactivityAPI-Aufrufe, die Konfiguration oder Metadaten ändern: IAM-Richtlinien, VMs, Firewalls, Sinks, SchlüsselImmer aktiv, nicht deaktivierbar400 Tage (_Required)
System Eventsystem_eventÄnderungen durch Google-Systeme, z. B. Live-Migration einer VMImmer aktiv400 Tage (_Required)
Data Accessdata_accessLesen der Konfiguration (ADMIN_READ), Lesen von Nutzerdaten (DATA_READ), Schreiben von Nutzerdaten (DATA_WRITE)Deaktiviert, außer bei einigen BigQuery-Diensten30 Tage (_Default)
Policy DeniedpolicyDurch eine Sicherheitsrichtlinie verweigerte Zugriffe, etwa durch VPC Service ControlsAktiv; kann ausgeschlossen, aber nicht deaktiviert werden30 Tage (_Default)

Die Aufbewahrung ergibt sich aus den Log-Buckets: Der Bucket _Required bewahrt seine Logs 400 Tage auf, und sein Sink kann weder geändert noch gelöscht werden; der Bucket _Default bewahrt standardmäßig 30 Tage auf (Routing-Übersicht, Kontingente und Limits).

Daraus folgen zwei Konsequenzen für die Incident Response:

  • Alles, was das Projekt verändert (ein neuer Schlüssel, ein neuer Owner, ein Startskript, ein gelöschter Sink), steht unabhängig von der Konfiguration über ein Jahr lang in Admin Activity.
  • Alles, was Daten liest (ein Bucket, der Objekt für Objekt heruntergeladen wird, ein abgerufenes Secret, ein für ein Dienstkonto ausgestelltes Token), existiert nur, wenn das Data-Access-Logging vor dem Vorfall aktiviert war, und standardmäßig nur 30 Tage lang. Der Artikel zu den Grenzen der Data-Access-Logs behandelt diesen blinden Fleck.

Aufbau eines Audit-Eintrags

Jeder Eintrag ist ein LogEntry mit einem protoPayload vom Typ google.cloud.audit.AuditLog (AuditLog-Referenz). Diese Felder liest ein Ermittler zuerst:

FeldWarum es wichtig ist
timestampWann der Aufruf stattfand (UTC)
protoPayload.methodNameWas getan wurde, z. B. SetIamPolicy, v1.compute.instances.setMetadata
protoPayload.serviceNameWelche API, z. B. iam.googleapis.com
protoPayload.authenticationInfo.principalEmailWer: ein Benutzer, ein Dienstkonto, ein Gmail-Konto
protoPayload.authenticationInfo.serviceAccountKeyNameVorhanden, wenn sich ein Dienstkonto mit einem nutzerverwalteten Schlüssel authentifiziert hat; endet mit der Schlüssel-ID
protoPayload.authenticationInfo.serviceAccountDelegationInfoVorhanden, wenn die Identität des Dienstkontos angenommen wurde; nennt den eigentlichen Aufrufer
protoPayload.requestMetadata.callerIp / callerSuppliedUserAgentVon wo, mit welchem Client (gcloud, Terraform, ein Browser)
protoPayload.resourceName, resource.labelsAuf welcher Ressource
protoPayload.status.codeLeer bei Erfolg; 7 ist PERMISSION_DENIED
protoPayload.serviceData.policyDelta / metadataDie Differenz: IAM-bindingDeltas, auditConfigDeltas, hinzugefügte oder entfernte Metadatenschlüssel

Der User-Agent wird unterschätzt. Ein Dienstkonto, das immer von Terraform/… aus aufruft und plötzlich mit google-cloud-sdk gcloud/… von einer unbekannten IP kommt, ist für sich allein schon eine starke Spur.

Audit-Logs für die Analyse exportieren

Exportieren Sie früh. Die Export-Anleitung auf der Tool-Seite enthält dieselben Schritte in Kurzform; hier folgen die Überlegungen hinter jedem Weg.

Download aus dem Logs Explorer

Gut geeignet für einige Tage eines kleinen Projekts. Unter Logging → Logs Explorer fragen Sie ab:

logName:"cloudaudit.googleapis.com"

Ergänzen Sie OR logName:"vpc_flows", wenn Sie auch Flow-Logs möchten, wählen Sie den Zeitraum und dann Aktionen → Herunterladen → JSON. Google dokumentiert ein Limit von 10.000 Einträgen pro Download (Oberfläche des Logs Explorer): Teilen Sie den Zeitraum auf mehrere Downloads auf und behalten Sie jede Datei. Wählen Sie JSON, nicht CSV; CSV verliert die verschachtelte Struktur, die die Erkennungen brauchen.

gcloud logging read

Der zuverlässigste Weg für größere Exporte (gcloud-logging-Referenz):

gcloud logging read 'logName:"cloudaudit.googleapis.com"' \
  --project=PROJECT_ID --freshness=30d --format=json > audit.json
gzip audit.json

Verwenden Sie --organization=ORG_ID oder --folder=FOLDER_ID, wenn ein aggregierter Sink auf Organisationsebene oder Ordner-Logs relevant sind. Führen Sie einen zweiten Export für logName:"vpc_flows" aus.

Einen Log-Sink-Bucket kopieren

Leitet bereits ein Log-Sink Audit-Logs nach Cloud Storage, haben Sie die besten Beweise: Dateien, gegliedert als cloudaudit.googleapis.com/activity/YYYY/MM/DD/…json, ein JSON-Objekt pro Zeile, so weit zurück, wie der Sink existiert. Kopieren Sie den Bucket mit gcloud storage cp -r gs://BUCKET . und behalten Sie die Ordnerstruktur bei. Sinks füllen nicht rückwirkend auf: Sie enthalten nur Einträge, die nach ihrer Erstellung geschrieben wurden (Sinks konfigurieren). Brauchen Sie ältere Einträge, die noch in einem Log-Bucket liegen, dokumentiert Google das Kopieren von Log-Einträgen nach Cloud Storage.

BigQuery-Sink

Mit einem BigQuery-Sink fragen Sie die Tabellen cloudaudit_googleapis_com_activity und cloudaudit_googleapis_com_data_access für den Zeitraum ab und speichern das Ergebnis als zeilengetrenntes JSON. Der Analyzer bildet die Spalten protopayload_auditlog wieder auf die Struktur eines LogEntry ab. Avro- oder Parquet-Exporte liest er nicht.

Und VPC Flow Logs?

VPC Flow Logs sind keine Audit-Logs: Es sind stichprobenartig erfasste Netzwerk-Flow-Datensätze (compute.googleapis.com/vpc_flows), die nur für Subnetze geschrieben werden, in denen sie aktiviert wurden. Exportieren Sie sie auf dieselbe Weise und analysieren Sie sie zusammen mit den Audit-Logs, damit sich Aufrufer-IPs mit dem Netzwerkverkehr abgleichen lassen. Siehe Analyse von VPC Flow Logs.

Checkliste vor Beginn der Analyse

  • Der Zeitraum deckt das vermutete Eindringen ab, plus eine Baseline normaler Aktivität (eine Woche oder mehr).
  • Alle vier Audit-Typen sind enthalten, für jedes betroffene Projekt, dazu Logs auf Organisationsebene, falls sich IAM- oder Organisationsrichtlinien geändert haben könnten.
  • Die Formate sind JSON oder JSON Lines, gzip-komprimiert oder nicht. Lassen Sie die Originaldateien unangetastet und arbeiten Sie mit Kopien.
  • Sie haben notiert, ob Data-Access-Logs aktiviert waren und für welche Dienste. Fehlende Spuren von Lesezugriffen sagen ohne diese Notiz nichts aus.

Legen Sie die Dateien dann im Analyzer ab, wie in der Schritt-für-Schritt-Anleitung beschrieben.

Häufige Fragen

Welche Cloud Audit Logs sind standardmäßig aktiviert?

Admin-Activity-, System-Event- und Policy-Denied-Audit-Logs werden immer geschrieben und lassen sich nicht deaktivieren. Data-Access-Audit-Logs sind standardmäßig für alle Dienste deaktiviert, mit Ausnahme einiger BigQuery-Dienste (Data-Access-Audit-Logs konfigurieren).

Wie exportiere ich mehr als 10.000 Log-Einträge?

Der Download im Logs Explorer endet bei 10.000 Einträgen. Verwenden Sie gcloud logging read mit --format=json, kopieren Sie den Cloud-Storage-Bucket, in den ein Sink schreibt, oder exportieren Sie aus einem BigQuery-Sink als zeilengetrenntes JSON.

Verwandte Artikel

Dieses Tool ist weder mit Google LLC verbunden noch von Google LLC unterstützt oder gesponsert. Google Cloud und Google Cloud Platform sind Marken von Google LLC. Andere Namen sind Marken ihrer jeweiligen Inhaber.