Logs in ein SIEM-System exportieren

Auf dieser Seite wird beschrieben, wie Sie Logs aus Google Distributed Cloud (GDC) mit Air Gap in ein externes SIEM-System (Security Information and Event Management) exportieren. Diese Integration ermöglicht eine zentralisierte Loganalyse und ein verbessertes Sicherheitsmonitoring.

Der Kern des Logexports ist die Bereitstellung einer benutzerdefinierten SIEMOrgForwarder-Ressource. Diese Ressource dient als Konfigurationsdatei und enthält die Details der externen SIEM-Instanz, die die Logs empfangen soll. Durch die Definition dieser Parameter in der Datei SIEMOrgForwarder können Administratoren eine optimierte und sichere Pipeline für den Logexport einrichten.

Hinweis

Bitten Sie Ihren IAM-Organisationsadministrator, Ihnen eine der zugehörigen SIEM-Export-Organisationsrollen zuzuweisen, um die Berechtigungen zu erhalten, die Sie zum Verwalten von benutzerdefinierten SIEMOrgForwarder-Ressourcen benötigen.

Je nach erforderlicher Zugriffsebene und Berechtigungen können Sie für diese Ressource in Ihrem Projekt-Namespace die Rolle „Ersteller“, „Bearbeiter“ oder „Betrachter“ erhalten. Weitere Informationen finden Sie unter IAM-Berechtigungen vorbereiten.

Nachdem Sie die erforderlichen Berechtigungen erhalten haben, führen Sie die folgenden Schritte aus, bevor Sie Logs in ein externes SIEM-System exportieren:

  1. Verbindung herstellen: Stellen Sie sicher, dass eine Verbindung zwischen GDC und dem externen SIEM-Ziel besteht. Arbeiten Sie bei Bedarf mit dem Infrastrukturbetreiber (IO) zusammen, um eine Uplink-Verbindung zu Ihrem Kundennetzwerk herzustellen.

  2. Umgebungsvariablen festlegen: Legen Sie die folgenden Umgebungsvariablen fest, um die Befehle auf dieser Seite auszuführen:

    • Der Pfad der kubeconfig-Datei:

      export KUBECONFIG=KUBECONFIG_PATH
      

      Ersetzen Sie KUBECONFIG_PATH durch den Pfad der kubeconfig-Datei für den Management API-Server.

    • Ihr Projekt-Namespace:

      export PROJECT_NAMESPACE=PROJECT_NAMESPACE
      

Logexport konfigurieren

Erstellen Sie das Secret und die benutzerdefinierte SIEMOrgForwarder-Ressource im selben Namespace. Sie können einen beliebigen Projekt-Namespace verwenden. Jede SIEMOrgForwarder exportiert Plattformlogs aus allen Clustern in der Organisation. Sie müssen diese Ressourcen also nicht in anderen Projekten oder Clustern erstellen.

Als Best Practice sollten Sie den Namespace platform-obs verwenden, da SIEMOrgForwarder nur Plattformlogs exportiert. Die SIEM-Export-Organisationsrollen gewähren auch Lesezugriff auf alle Secrets im Namespace, in dem sie gewährt werden. Bitten Sie daher Ihren IAM-Admin der Organisation, diese Rollen nur Plattformadministratoren zuzuweisen.

Logs in ein externes SIEM-System exportieren:

  1. Geben Sie ein Token an, um den Logging-Stack mit dem SIEM-System zu verbinden. Dazu müssen Sie ein Secret im Namespace Ihres Projekts erstellen, um das Token im Fall von Splunk und das Passwort im Fall von Elastic SIEM zu speichern:

    cat <<EOF | kubectl --kubeconfig=${KUBECONFIG} apply -f -
    apiVersion: v1
    kind: Secret
    metadata:
      name: SECRET_NAME
      namespace: ${PROJECT_NAMESPACE}
    type: Opaque
    stringData:
      SECRET_FIELD: FIELD_VALUE
    EOF
    

    Ersetzen Sie Folgendes:

    • SECRET_NAME: der Name Ihres Secrets.
    • SECRET_FIELD: der Name des Felds, in dem Sie das Secret speichern möchten. Verwenden Sie für Elastic denselben Wert wie HTTP_USER_NAME in der benutzerdefinierten Ressource.
    • FIELD_VALUE: FIELD_VALUE ist ein Token für Splunk und ein Passwort für Elastic.
    • TOKEN: Ihr Token.
  2. Stellen Sie die benutzerdefinierte Ressource SIEMOrgForwarder im Namespace Ihres Projekts bereit. Sie müssen den Logtyp angeben, indem Sie zwischen Audit- oder Betriebslogs wählen. Wenn Sie den Logexport für beide Logtypen konfigurieren möchten, müssen Sie für jeden Typ eine SIEMOrgForwarder-Ressource bereitstellen.

    Das folgende Beispiel zeigt, wie Sie eine Konfiguration auf eine benutzerdefinierte SIEMOrgForwarder-Ressource für Splunk anwenden:

      cat <<EOF | kubectl --kubeconfig=${KUBECONFIG} apply -f -
      apiVersion: logging.gdc.goog/v1
      kind: SIEMOrgForwarder
      metadata:
        name: SIEM_ORG_FORWARDER
        namespace: ${PROJECT_NAMESPACE}
      spec:
        source: LOG_TYPE
        destinations:
          splunkOutputs:
            - host: SIEM_HOST
              token:
                name: SECRET_NAME
                field: SECRET_FIELD
              tls: "TLS"
              netConnectTimeout: NET_CONNECT_TIMEOUT
      EOF
    

    Ersetzen Sie Folgendes:

    • SIEM_ORG_FORWARDER: der Name der SIEMOrgForwarder-Definitionsdatei.
    • LOG_TYPE: der Logtyp, den Sie exportieren. Zulässige Werte sind audit und operational.
    • SIEM_HOST: der Name des SIEM-Hosts.
    • SECRET_NAME: der Name Ihres Secrets.
    • SECRET_FIELD: der Name des Felds, in dem Sie das Secret gespeichert haben.
    • TLS: der Status der Transport Layer Security (TLS). Zulässige Werte sind "On" und "Off".
    • NET_CONNECT_TIMEOUT: die maximale Zeit in Sekunden, die auf den Aufbau einer Verbindung gewartet werden soll. Der Wert 180 bedeutet beispielsweise, dass 180 Sekunden gewartet werden soll.

    Im folgenden Beispiel wird gezeigt, wie eine Konfiguration auf eine benutzerdefinierte SIEMOrgForwarder-Ressource für Elastic angewendet wird:

      cat <<EOF | kubectl --kubeconfig=${KUBECONFIG} apply -f -
      apiVersion: logging.gdc.goog/v1
      kind: SIEMOrgForwarder
      metadata:
        name: SIEM_ORG_FORWARDER
        namespace: ${PROJECT_NAMESPACE}
      spec:
        source: LOG_TYPE
        destinations:
          elasticOutputs:
            - host: SIEM_HOST
              port: SIEM_PORT
              http_credential:
                http_user: HTTP_USER_NAME
                http_passwd: SECRET_NAME
              tls: "TLS"
              netConnectTimeout: NET_CONNECT_TIMEOUT
              index: INDEX
      EOF
    

    Ersetzen Sie Folgendes:

    • SIEM_ORG_FORWARDER: der Name der SIEMOrgForwarder-Definitionsdatei.
    • LOG_TYPE: der Logtyp, den Sie exportieren. Zulässige Werte sind audit und operational.
    • SIEM_HOST: der Name des SIEM-Hosts.
    • SIEM_PORT: der Port der SIEM-Instanz.
    • HTTP_USER_NAME: der Nutzername der SIEM-Instanz. Dieser Wert muss auch der SECRET_FIELD-Schlüssel im Secret sein, in dem das Passwort gespeichert ist.
    • SECRET_NAME: der Name Ihres Secrets.
    • TLS: der Status der Transport Layer Security (TLS). Zulässige Werte sind "On" und "Off".
    • NET_CONNECT_TIMEOUT: die maximale Zeit in Sekunden, die auf den Aufbau einer Verbindung gewartet werden soll. Der Wert 180 bedeutet beispielsweise, dass 180 Sekunden gewartet werden soll.
    • INDEX: der Index für die Elastic-Instanz. Wenn nicht angegeben, wird der Logtyp (audit oder operational) verwendet. Dieses Feld ist optional.
  3. Prüfen Sie den Status der bereitgestellten benutzerdefinierten SIEMOrgForwarder-Ressource:

      kubectl --kubeconfig=${KUBECONFIG} describe siemorgforwarder/SIEM_ORG_FORWARDER \
          -n ${PROJECT_NAMESPACE}
    

    Prüfen Sie je nach Logtyp den folgenden Status:

    • Audit-Logs: Prüfen Sie den Status von AuditLoggingReady.
    • Betriebslogs: Prüfen Sie den OperationalLoggingReady-Status.