Szenarien zum Exportieren von Cloud Logging-Daten: Splunk

Dieses Szenario zeigt Ihnen, wie Sie ausgewählte Logs aus Cloud Logging in Splunk Enterprise oder Splunk Cloud in Echtzeit exportieren. Splunk ermöglicht das Suchen, Analysieren und Visualisieren von Logs, Ereignissen und Messwerten, die von Ihren lokalen und Cloud-Bereitstellungen für die IT- und Sicherheitsüberwachung erfasst wurden. Durch das Einbinden von Logs aus Cloud Logging können Sie weiterhin vorhandene Partnerdienste wie Splunk als einheitliche Loganalyselösung verwenden – mit Optionen für die lokale Bereitstellung von Splunk in Google Cloud als SaaS oder über einen hybriden Ansatz verfolgen.

Dieses Dokument bietet eine Übersicht über zwei verschiedene unterstützte Methoden für den Logexport nach Splunk: Sie können Logs per Push oder Pull von Google Cloud übertragen. Wie im folgenden Abschnitt erläutert, wird der cloudnative pushbasierte Ansatz in den meisten Fällen empfohlen. Ausführlichere Informationen zum Bereitstellen der pushbasierten Logexportlösung finden Sie unter Produktionsfähige Logexporte mithilfe von Dataflow in Splunk bereitstellen.

Dieses Szenario ist Bestandteil der Reihe Entwurfsmuster zum Exportieren mit Cloud Logging.

Einführung

Es gibt zwei Methoden für die Aufnahme von Google Cloud-Daten, die von Splunk unterstützt werden:

Wir empfehlen die Verwendung der pushbasierten Methode zum Aufnehmen von Google Cloud-Daten in Splunk. Diese Methode bietet folgende Vorteile:

  • Verwalteter Dienst Der verwaltete Dataflow-Dienst verwaltet die erforderlichen Ressourcen in Google Cloud für Datenverarbeitungsaufgaben wie den Log-Export.
  • Verteilte Arbeitslast: Die Arbeitslast wird zur Parallelverarbeitung auf mehrere Worker verteilt. Anders als beim Abrufen von Daten mit einem Splunk-Forwarder gibt es also keinen Single Point Of Failure.
  • Sicherheit. Daten werden an Splunk HEC übertragen, sodass für das Erstellen und Verwalten von Dienstkontoschlüsseln kein Wartungs- und Sicherheitsaufwand verbunden ist. Für eine pullbasierte Methode müssen Sie Dienstkontoschlüssel weiterhin erstellen und verwalten.
  • Autoscaling Der Dataflow-Dienst skaliert die Anzahl der Worker als Reaktion auf Variationen des eingehenden Logvolumens und des Rückstands automatisch.
  • Fehlertoleranz Wiederholungsversuche an Splunk HEC werden automatisch verarbeitet, wenn vorübergehende Server- oder Netzwerkprobleme auftreten. Diese Methode unterstützt auch unverarbeitete Themen (auch als betrügerische Themen bezeichnet) für nicht zustellbare Lognachrichten, um Datenverluste zu vermeiden.
  • Einfachheit: Sie vermeiden den Aufwand für die Verwaltung und die Kosten für die Ausführung eines oder mehrerer schwerere Splunk-Forwarder.

In bestimmten Fällen können Sie Google Cloud-Daten mit der pullbasierten Methode in Splunk aufnehmen. Das kann folgende Gründe haben:

  • Ihr Splunk-Deployment bietet keinen Splunk-HEC-Endpunkt.
  • Ihr Logvolumen ist niedrig.
  • Sie möchten Cloud Monitoring-Messwerte, Cloud Storage-Objekte oder Logs mit geringem Volumen abrufen.
  • Sie verwalten bereits einen oder mehrere schwere Splunk-Forwarder oder verwenden einen gehosteten Inputs Data Manager für Splunk Cloud.

Logging-Export einrichten

Das folgende Diagramm zeigt die Schritte zum Aktivieren des Logging-Exports zu Splunk über Pub/Sub.

Logging-Export zu Pub/Sub aktivieren

Pub/Sub-Thema und -Abo einrichten

Folgen Sie der Anleitung zum Einrichten eines Pub/Sub-Themas, das Ihre exportierten Logs empfängt, und fügen Sie ihm ein Abo hinzu.

In diesem Dokument werden die folgenden Namen für Pub/Sub-Themen und Abos verwendet:

projects/compliance-logging-export/topics/logs-export-topic

projects/compliance-logging-export/topics/logs-export-subscription

Audit-Logging für alle Dienste aktivieren

Audit-Logs zu Administratoraktivitäten werden immer geschrieben und können nicht deaktiviert werden. Audit-Logs für den Datenzugriff sind außer für BigQuery allerdings standardmäßig deaktiviert. Folgen Sie der Anleitung zum Aktualisieren einer IAM-Richtlinie mit der in der Audit-Richtlinie aufgeführten Konfiguration, um alle Audit-Logs zu aktivieren. Die Vorgehensweise ist folgende:

  • Aktuelle IAM-Richtlinie als Datei herunterladen
  • JSON- oder YAML-Objekt der Audit-Log-Richtlinie zur aktuellen Richtliniendatei hinzufügen
  • Google Cloud-Projekt (oder die -Organisation) mit der geänderten Richtliniendatei aktualisieren

Das folgende Beispiel zeigt ein JSON-Objekt, mit dem alle Audit-Logs für alle Dienste aktiviert werden:

"auditConfigs": [
    {
        "service": "allServices",
        "auditLogConfigs": [
            { "logType": "ADMIN_READ" },
            { "logType": "DATA_READ"  },
            { "logType": "DATA_WRITE" },
        ]
    },
]

Logging-Export konfigurieren

Nachdem Sie zusammengefasste Exporte oder den Logexport eingerichtet haben, müssen Sie die Logging-Filter für den Export von Audit-Logs, VM-Logs, Speicherlogs und Datenbanklogs einstellen. Der nachstehende Logging-Filter umfasst Audit-Logs für Administratoraktivitäten und den Datenzugriff sowie Logs für bestimmte Ressourcentypen:

logName:"/logs/cloudaudit.googleapis.com" OR
resource.type:gce OR
resource.type=gcs_bucket OR
resource.type=bigquery_resource

Verwenden Sie im Befehlszeilentool gcloud den gcloud logging sinks create-Befehl oder den organizations.sinks.create-API-Aufruf, um eine Senke mit den entsprechenden Filtern zu erstellen. Im folgenden Beispiel wird mit dem gcloud-Befehl eine Senke mit dem Namen gcp_logging_sink_pubsub für das Unternehmen angelegt, wobei als Ziel das zuvor erstellte Pub/Sub-Thema logs-export-topic eingerichtet wird. Die Senke enthält alle untergeordneten Projekte und legt Filter zur Auswahl bestimmter Audit-Logs fest:

gcloud logging sinks create gcp_logging_sink_pubsub \
    pubsub.googleapis.com/projects/compliance-logging-export/topics/logs-export-topic \
    --log-filter='logName:"/logs/cloudaudit.googleapis.com" OR \
    resource.type:\"gce\" OR \
    resource.type=\"gcs_bucket\" OR   \
    resource.type=\"bigquery_resource\"' \
    --include-children   \
    --organization=your-organization

Die entsprechende Ausgabe sieht etwa so aus:

Created [https://logging.googleapis.com/v2/organizations/your-organization/sinks/gcp_logging_export_pubsub_sink].
Please remember to grant `serviceAccount:gcp-logging-export-pubsub-si@logging-oyour-organization.iam.gserviceaccount.com` Pub/Sub Publisher role to the topic.
More information about sinks can be found at /logging/docs/export/configure_export

Im Eintrag serviceAccount, der vom API-Aufruf zurückgegeben wird, ist die Identität gcp-logging-export-pubsub-si@logging-oyour-organization.iam.gserviceaccount.com in der Antwort enthalten. Diese Identität stellt ein Google Cloud-Dienstkonto dar, das für den Export erstellt wurde. Der Export von Logeinträgen aus dieser Senke ist nur möglich, wenn Sie der Identität das Veröffentlichen im Zielthema gestatten. Andernfalls schlägt der Export fehl. Weitere Informationen finden Sie im nächsten Abschnitt sowie in der Dokumentation Einem Dienstkonto Rollen für bestimmte Ressourcen zuweisen.

IAM-Richtlinienberechtigungen für Pub/Sub-Thema festlegen

Fügen Sie das Dienstkonto gcp-logging-export-pubsub-si@logging-oyour-organization.iam.gserviceaccount.com dem Thema pubsub.googleapis.com/projects/compliance-logging-export/topics/logs-export-topic mit den Pub/Sub-Publisher-Berechtigungen hinzu, um dem Dienstkonto die Berechtigung zur Veröffentlichung in diesem Thema zu gewähren. Ohne diese Berechtigungen schlägt der Export aus der Senke fehl.

So fügen Sie dem Dienstkonto die Berechtigungen hinzu:

  1. Rufen Sie in der Cloud Console die Seite mit den Cloud Pub/Sub-Themen auf:

    ZUR SEITE "THEMEN"

  2. Wählen Sie den Namen des Themas aus.

  3. Klicken Sie auf Infofeld ansehen und wählen Sie die Pub/Sub-Publisher-Berechtigungen aus.

    IAM-Richtlinienberechtigungen – Pub/Sub-Publisher

Wenn Sie den Logging-Export mit diesem Filter konfiguriert haben, werden die Logdateien in das Pub/Sub-Thema im konfigurierten Projekt aufgenommen. Mit dem Metrics Explorer in Cloud Monitoring können Sie prüfen, ob das Thema Nachrichten empfängt. Mit dem folgenden Ressourcentyp und Messwert können Sie die Anzahl der Sendevorgänge über einen kurzen Zeitraum erfassen. Wenn Sie den Export korrekt konfiguriert haben, sehen Sie in der Grafik eine Aktivität mit Werten über 0 (siehe Screenshot).

  • Ressourcentyp: pubsub_topic
  • Messwert: pubsub/topic/send_message_operation_count

Aktivitätsgrafik

Splunk-Datenaufnahme einrichten

Option A: Logs mit Dataflow von Pub/Sub zu Splunk streamen

Sie erstellen mit der Dataflow-Vorlage Pub/Sub zu Splunk einen Dataflow-Job, der Nachrichten aus dem zuvor erstellten Pub/Sub-Abo abruft, Nutzlasten in das Splunk HEC-Ereignisformat konvertiert und an Splunk HEC weiterleitet. Daher sind eine Splunk-HEC-Endpunkt-URL und ein HEC-Token erforderlich. Auf die URL muss vom Netzwerk des Dataflow-Jobs aus zugegriffen werden können. Folgen Sie der Anleitung zum Konfigurieren von Splunk HEC, falls Sie dies noch nicht getan haben.

Zusätzlich zum Parallelisieren und Verteilen der Arbeitslast auf mehrere Worker verwaltet der Dataflow-Dienst diese Ressourcen und skaliert die Anzahl der Worker automatisch anhand des vorhandenen Nachrichtenrückstands von Pub/Sub und der aktuellen Ressourcenauslastung der Worker.

Hinsichtlich der Fehlertoleranz verarbeitet die Dataflow-Vorlage Pub/Sub zu Splunk Wiederholungsversuche (mit exponentiellem Backoff) an Splunk HEC, wenn der nachgelagerte Endpunkt ausgefallen ist oder ein Problem mit der Netzwerkverbindung besteht. Im Falle von Fehlern bei der Nachrichtenverarbeitung und um jeden Datenverlust zu vermeiden, werden diese Nachrichten an ein anderes Pub/Sub-Thema für unzustellbare Nachrichten weitergeleitet, das ebenfalls vor der Ausführung dieser Dataflow-Vorlage erstellt werden muss.

Nachdem der Splunk HEC-Endpunkt für den Empfang von Daten konfiguriert wurde, können Sie die Pub/Sub-zu-Splunk-Dataflow-Pipeline mithilfe der Cloud Console, des gcloud-Befehlszeilentools oder der Dataflow API ausführen. Hinweis: Sie können wahlweise eine benutzerdefinierte JavaScript-Funktion anwenden, um die Nachrichtennutzlast vor dem Weiterleiten an Splunk zu transformieren.

Mit dem folgenden gcloud-Beispielbefehl wird die neueste Version der Dataflow-Vorlage Pub/Sub zu Splunk auf dem Pub/Sub-Eingabeabo logs-export-subscription ausgeführt. Ersetzen Sie your-splunk-hec-token und your-splunk-hec-url durch den Splunk HEC-Token und den Endpunkt, z. B. https://splunk-hec-host:8088:

JOB_NAME=pubsub-to-splunk-$USER-`date +"%Y%m%d-%H%M%S%z"`
gcloud dataflow jobs run $JOB_NAME \
    --gcs-location gs://dataflow-templates/latest/Cloud_PubSub_to_Splunk \
    --max-workers 2 \
    --parameters \
  inputSubscription=projects/compliance-logging-export/subscriptions/logs-export-subscription,\
  token=your-splunk-hec-token,\
  url=your-splunk-hec-url,\
  outputDeadletterTopic=projects/compliance-logging-export/topics/splunk-pubsub-deadletter,\
  batchCount=10,\
  parallelism=8

Mit dem Metrics Explorer in Cloud Monitoring können Sie prüfen, ob die Dataflow-Pipeline Nachrichten erfolgreich an Splunk sendet. Mit dem folgenden Ressourcentyp und den folgenden Messwerten können Sie die Anzahl erfolgreicher ausgehender Ereignisse und möglicherweise fehlgeschlagener Ereignisse über einen kurzen Zeitraum beobachten.

  • Ressourcentyp: dataflow_job
  • Messwert 1: custom.googleapis.com/dataflow/outbound-successful-events
  • Messwert 1: custom.googleapis.com/dataflow/outbound-failed-events

Wenn Sie die Vorlage korrekt konfiguriert haben, sehen Sie in der Grafik eine Aktivität mit Werten über 0 (siehe Screenshot).

Aktivitätsgrafik für ausgehende Ereignisse

Option B: Logs mit dem Splunk Add-on für Google Cloud Platform abrufen

Das Splunk Add-on für die Google Cloud Platform verwendet das Pub/Sub-Thema und ein Dienstkonto in Google Cloud. Das Dienstkonto wird verwendet, um einen privaten Schlüssel zu erstellen, mit dem das Add-On ein Pub/Sub-Abo erstellt und Nachrichten aus dem Logging-Exportthema aufnimmt. Die entsprechenden IAM-Berechtigungen sind erforderlich, damit das Dienstkonto das Abo erstellen und die Komponenten in dem Pub/Sub-Projekt auflisten kann, das das Abo enthält.

Folgen Sie der Anleitung zum Einrichten des Splunk Add-ons für die Google Cloud Platform. Gewähren Sie die Pub/Sub-IAM-Berechtigungen roles/pubsub.viewer und roles/pubsub.subscriber für das Dienstkonto, das als Teil der Add-on-Anweisung erstellt wurde.

Nachdem Sie das Add-on eingerichtet haben, werden die Pub/Sub-Nachrichten aus dem Logging-Export in Splunk angezeigt.

Mit dem Metrics Explorer in Cloud Monitoring können Sie nachsehen, ob das vom Add-on verwendete Abo Nachrichten abruft. Mit dem folgenden Ressourcentyp und Messwert können Sie die Anzahl der Abrufvorgänge über einen kurzen Zeitraum erfassen.

  • Ressourcentyp: pubsub_subscription
  • Messwert: pubsub/subscription/pull_message_operation_count

Wenn Sie den Export korrekt konfiguriert haben, sehen Sie in der Grafik eine Aktivität mit Werten über 0 (siehe Screenshot).

Grafik: Aktivitätsgrafik für Abrufvorgänge

Exportierte Logs verwenden

Nachdem die exportierten Logs in Splunk erfasst wurden, können Sie Splunk wie jede andere Datenquelle für Folgendes verwenden:

  • Logs durchsuchen
  • Komplexe Ereignisse korrelieren
  • Ergebnisse in Dashboards anzeigen

Nächste Schritte