Wazuh + GCP: „Received 0 messages“ beim GCS-Bucket – warum Audit-Logs (JSON) nicht ankommen und was stattdessen funktioniert

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 Logs
  • Processing <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:

  1. In GCP einen Log Sink auf ein Pub/Sub Topic (Audit Logs: activity/data_access/system_event nach Bedarf).
  2. Eine Subscription erstellen.
  3. 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_logs Modus wird 0 messages liefern.
  • 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

Mehr zu Wazuh …

Mehr zum Wazuh Ambassador Program …