Ausgangslage
Ein Wazuh-Cluster auf v4.14.1 verarbeitet GCP-Logs aus einem Google Cloud Storage Bucket. Die Dateien liegen im Bucket vor (sichtbar, korrekter Inhalt), der Wazuh-Log zeigt auch „Processing …“, aber am Ende steht:
INFO: Received 0 messages
Beispiel aus dem Log:
Working with Google Cloud Access LogsProcessing <file>Received 0 messages
Im Bucket liegen Cloud Audit Logs als JSON (z. B. cloudaudit.googleapis.com/activity).
Warum das passiert (Root Cause)
Der entscheidende Punkt ist die Konfiguration:
<bucket type="access_logs">
Der GCP-Bucket-Collector in Wazuh erwartet bei type="access_logs" GCS Access Logs im CSV-Format – nicht JSON. In der Doku ist das explizit so beschrieben: Access logs sind CSV und werden entsprechend geparst.
Wenn du stattdessen Audit-Logs als JSON im Bucket hast, kann der Parser daraus keine „Messages“ extrahieren → Ergebnis: 0 Messages.
Zusätzlich sieht man in deinem Debug:
- „Working with Google Cloud Access Logs“ → das Modul ist tatsächlich im Access-Log (CSV)-Parsingpfad.
„Gibt es andere type= Werte für JSON?“
Für das Bucket-Modul ist der Anwendungsfall „Bucket enthält GCS Access Logs (CSV)“. In der Praxis heißt das: Audit-Logs (JSON) aus Log Sinks sind nicht das passende Input-Format für <gcp-bucket type="access_logs">.
Was du stattdessen tun kannst (2 saubere Wege)
Option A: Audit Logs korrekt über Pub/Sub einsammeln (empfohlen)
Wenn du Cloud Audit Logs ingestieren willst, nimm den gcp-pubsub-Weg:
- In GCP einen Log Sink auf ein Pub/Sub Topic (Audit Logs: activity/data_access/system_event nach Bedarf).
- Eine Subscription erstellen.
- In Wazuh den
<gcp-pubsub>Block konfigurieren (Project, Subscription, Credentials).
Minimalbeispiel (Wazuh-Doku):
<gcp-pubsub>
<pull_on_start>yes</pull_on_start>
<interval>1m</interval>
<project_id>my-project</project_id>
<subscription_name>my-subscription</subscription_name>
<credentials_file>wodles/gcp-pubsub/credentials.json</credentials_file>
</gcp-pubsub>
Damit bist du nicht auf das CSV-Access-Log-Format festgenagelt, sondern sammelst Audit-Events so ein, wie GCP sie liefert.
Option B: Wirklich GCS Access Logs (CSV) verwenden
Wenn dein Ziel Storage Access Logs sind (also Bucket-Access-Logging), dann:
- Stelle sicher, dass im Bucket GCS Access Logs landen, und zwar CSV.
- Dann passt
type="access_logs"und das Modul kann daraus Messages erzeugen.
Quick-Check zur Verifikation
- Bucket-Inhalt prüfen: CSV oder JSON?
- Wenn JSON → Bucket-Modul im
access_logsModus wird 0 messages liefern.
- Wenn JSON → Bucket-Modul im
- Im Wazuh-Log: Steht da „Working with Google Cloud Access Logs“? Dann läuft definitiv der CSV-Parserpfad.
Fazit
Ja: Deine Vermutung ist richtig – das Wazuh gcp-bucket Modul (mit type="access_logs") ist für GCS Access Logs im CSV-Format gedacht.
Wenn du Cloud Audit Logs als JSON ingestieren willst, ist der passende Weg Pub/Sub (gcp-pubsub).
https://wazuh.slack.com/archives/C0A933R8E/p1765805074238149