Cloud Run-Logs erfassen

Unterstützt in:

In diesem Leitfaden wird beschrieben, wie Sie Cloud Run-Logs mithilfe von Cloud Storage in Google Security Operations exportieren. Der Parser extrahiert Felder aus JSON-Protokollen und wandelt sie in das einheitliche Datenmodell (Unified Data Model, UDM) um. Es unterstützt verschiedene Protokollformate, einschließlich HTTP-Anfragedaten und Systemprüfprotokolle, und ordnet relevante Felder dem UDM zu. Außerdem werden die Daten mit Labels und Metadaten angereichert, die für Cloud Run spezifisch sind.

Vorbereitung

  • Sie benötigen eine Google SecOps-Instanz.
  • Prüfen Sie, ob Cloud Run in Ihrer Google Cloud -Umgebung eingerichtet und aktiv ist.
  • Sie benötigen Berechtigungen für Google Cloud.

Google Cloud Storage-Bucket erstellen

  1. Melden Sie sich in der Google Cloud Console an.
  2. Rufen Sie die Seite Cloud Storage-Buckets auf.

    Buckets aufrufen

  3. Klicken Sie auf Erstellen.

  4. Geben Sie auf der Seite Bucket erstellen die Bucket-Informationen ein. Klicken Sie nach jedem der folgenden Schritte auf Weiter, um mit dem nächsten Schritt fortzufahren:

    1. Führen Sie im Abschnitt Einstieg die folgenden Schritte aus:

      1. Geben Sie einen eindeutigen Namen ein, der den Anforderungen für Bucket-Namen entspricht, z. B. cloudrun-logs.
      2. Wenn Sie den hierarchischen Namespace aktivieren möchten, klicken Sie auf den Maximierungspfeil, um den Bereich Für dateiorientierte und datenintensive Arbeitslasten optimieren zu maximieren, und wählen Sie dann Hierarchischen Namespace für diesen Bucket aktivieren aus.

      3. Wenn Sie ein Bucket-Label hinzufügen möchten, klicken Sie auf den Erweiterungspfeil, um den Bereich Labels zu maximieren.

      4. Klicken Sie auf Label hinzufügen und geben Sie einen Schlüssel und einen Wert für das Label an.

    2. Gehen Sie im Bereich Speicherort für Daten auswählen so vor:

      1. Standorttyp auswählen.
      2. Wählen Sie im Menü „Standorttyp“ einen Speicherort aus, an dem die Objektdaten in Ihrem Bucket dauerhaft gespeichert werden sollen.

      3. Wenn Sie die Bucket-übergreifende Replikation einrichten möchten, maximieren Sie den Bereich Bucket-übergreifende Replikation einrichten.

    3. Wählen Sie im Abschnitt Speicherklasse für Ihre Daten auswählen entweder eine Standardspeicherklasse für den Bucket oder Autoclass für die automatische Verwaltung der Speicherklassen Ihrer Bucket-Daten aus.

    4. Wählen Sie im Abschnitt Zugriff auf Objekte steuern die Option nicht aus, um die Verhinderung des öffentlichen Zugriffs zu erzwingen, und wählen Sie ein Zugriffssteuerungsmodell für die Objekte Ihres Buckets aus.

    5. Gehen Sie im Bereich Auswählen, wie Objektdaten geschützt werden so vor:

      1. Wählen Sie unter Datenschutz die Optionen aus, die Sie für den Bucket festlegen möchten.
      2. Um auszuwählen, wie Ihre Objektdaten verschlüsselt werden, klicken Sie auf den Erweiterungspfeil mit Label Datenverschlüsselung und wählen Sie eine Methode für die Datenverschlüsselung aus.
  5. Klicken Sie auf Erstellen.

Logexport in Cloud Run konfigurieren

  1. Klicken Sie auf der Seite Google Cloud Willkommen auf das Symbol Cloud Run.
  2. Geben Sie oben in der Suchleiste Logging ein und klicken Sie auf die Eingabetaste.
  3. Filtern Sie die Protokolle im Log-Explorer, indem Sie unter Logname die Option Cloud Run auswählen und auf Übernehmen klicken.
  4. Klicken Sie im Menü auf Weitere Aktionen > Senke erstellen.
  5. Geben Sie die folgenden Konfigurationen an:
    1. Senkendetails: Geben Sie einen Namen und eine Beschreibung ein.
    2. Klicken Sie auf Weiter.
    3. Senkenziel: Wählen Sie Cloud Storage-Bucket aus.
    4. Cloud Storage-Bucket: Wählen Sie den zuvor erstellten Bucket aus oder erstellen Sie einen neuen.
    5. Klicken Sie auf Weiter.
    6. Logs auswählen, die in der Senke enthalten sind: Wenn Sie eine Option im Cloud Storage-Bucket auswählen, wird ein Standardprotokoll eingefügt.
    7. Klicken Sie auf Weiter.
    8. Optional: Auswählen zum Filtern aus der Senke: Wählen Sie die Logs aus, die nicht in die Senke aufgenommen werden sollen.
  6. Klicken Sie auf Senke erstellen.

Feed in Google SecOps für die Aufnahme von Cloud Run-Protokollen konfigurieren

  1. Gehen Sie zu SIEM-Einstellungen > Feeds.
  2. Klicken Sie auf Neu hinzufügen.
  3. Geben Sie im Feld Feedname einen Namen für den Feed ein, z. B. Cloud Run-Protokolle.
  4. Wählen Sie Google Cloud Storage als Quelltyp aus.
  5. Wählen Sie GCP Cloud Run als Logtyp aus.
  6. Klicken Sie als Chronicle-Dienstkonto auf Dienstkonto abrufen.
  7. Klicken Sie auf Weiter.
  8. Geben Sie Werte für die folgenden Eingabeparameter an:

    • Storage Bucket-URI: Google Cloud Storage Bucket-URL im Format gs://my-bucket/<value>.
    • URI ist: Wählen Sie Verzeichnis mit Unterverzeichnissen aus.
    • Optionen zum Löschen der Quelle: Wählen Sie die gewünschte Löschoption aus.

    • Asset-Namespace: der Asset-Namespace.

    • Aufnahmelabels: Das Label, das auf die Ereignisse aus diesem Feed angewendet wird.

  9. Klicken Sie auf Weiter.

  10. Prüfen Sie die neue Feedkonfiguration auf dem Bildschirm Abschließen und klicken Sie dann auf Senden.

UDM-Zuordnungstabelle

Logfeld UDM-Zuordnung Logik
httpRequest.latency target.resource.attribute.labels.[] Der Wert von httpRequest.latency aus dem Rohprotokoll wird als Wert für ein Label mit dem Schlüssel http_request_latency in target.resource.attribute.labels verwendet.
httpRequest.protocol network.application_protocol Wenn httpRequest.protocol HTTP enthält, wird das UDM-Feld auf HTTP gesetzt.
httpRequest.remoteIp principal.asset.ip Der Wert von httpRequest.remoteIp aus dem Rohprotokoll wird verwendet.
httpRequest.remoteIp principal.ip Der Wert von httpRequest.remoteIp aus dem Rohprotokoll wird verwendet.
httpRequest.requestMethod network.http.method Der Wert von httpRequest.requestMethod aus dem Rohprotokoll wird verwendet.
httpRequest.requestSize network.sent_bytes Der Wert von httpRequest.requestSize aus dem Rohprotokoll wird in eine vorzeichenlose Ganzzahl umgewandelt und verwendet.
httpRequest.requestUrl target.url Der Wert von httpRequest.requestUrl aus dem Rohprotokoll wird verwendet.
httpRequest.responseSize network.received_bytes Der Wert von httpRequest.responseSize aus dem Rohprotokoll wird in eine vorzeichenlose Ganzzahl umgewandelt und verwendet.
httpRequest.serverIp target.asset.ip Der Wert von httpRequest.serverIp aus dem Rohprotokoll wird verwendet.
httpRequest.serverIp target.ip Der Wert von httpRequest.serverIp aus dem Rohprotokoll wird verwendet.
httpRequest.status network.http.response_code Der Wert von httpRequest.status aus dem Rohprotokoll wird in eine Ganzzahl umgewandelt und verwendet.
httpRequest.userAgent network.http.parsed_user_agent Der Wert von httpRequest.userAgent aus dem Rohprotokoll wird als User-Agent-String geparst.
httpRequest.userAgent network.http.user_agent Der Wert von httpRequest.userAgent aus dem Rohprotokoll wird verwendet.
insertId metadata.product_log_id Der Wert von insertId aus dem Rohprotokoll wird verwendet.
labels.instanceId additional.fields.[] Der Wert von labels.instanceId wird als Wert für ein Label mit dem Schlüssel instanceId in additional.fields verwendet.
labels.run.googleapis.com_execution_name additional.fields.[] Der Wert von labels.run.googleapis.com_execution_name wird als Wert für ein Label mit dem Schlüssel execution_name in additional.fields verwendet.
labels.run.googleapis.com_task_attempt additional.fields.[] Der Wert von labels.run.googleapis.com_task_attempt wird als Wert für ein Label mit dem Schlüssel task_attempt in additional.fields verwendet.
labels.run.googleapis.com_task_index additional.fields.[] Der Wert von labels.run.googleapis.com_task_index wird als Wert für ein Label mit dem Schlüssel task_index in additional.fields verwendet.
logName metadata.product_event_type Der Wert von logName aus dem Rohprotokoll wird verwendet.
resource.labels.configuration_name target.resource.attribute.labels.[] Der Wert von resource.labels.configuration_name wird als Wert für ein Label mit dem Schlüssel configuration_name in target.resource.attribute.labels verwendet.
resource.labels.job_name additional.fields.[] Der Wert von resource.labels.job_name wird als Wert für ein Label mit dem Schlüssel job_name in additional.fields verwendet.
resource.labels.location target.location.name Der Wert von resource.labels.location aus dem Rohprotokoll wird verwendet.
resource.labels.project_id target.resource.attribute.labels.[] Der Wert von resource.labels.project_id wird als Wert für ein Label mit dem Schlüssel project_id in target.resource.attribute.labels verwendet.
resource.labels.revision_name target.resource.attribute.labels.[] Der Wert von resource.labels.revision_name wird als Wert für ein Label mit dem Schlüssel revision_name in target.resource.attribute.labels verwendet.
resource.labels.service_name target.resource.attribute.labels.[] Der Wert von resource.labels.service_name wird als Wert für ein Label mit dem Schlüssel service_name in target.resource.attribute.labels verwendet.
resource.type target.resource.resource_subtype Der Wert von resource.type aus dem Rohprotokoll wird verwendet.
severity security_result.severity Wenn der Wert von severity mit Info übereinstimmt (Groß- und Kleinschreibung wird ignoriert), wird das UDM-Feld auf INFORMATIONAL gesetzt.
textPayload additional.fields.[] Der Wert von textPayload wird als Wert für ein Label mit dem Schlüssel Textpayload in additional.fields verwendet.
timestamp metadata.event_timestamp Der Wert von timestamp aus dem Rohprotokoll wird als Zeitstempel geparst.
timestamp timestamp Der Wert von timestamp aus dem Rohprotokoll wird als Zeitstempel geparst. Wird anhand der Parserlogik basierend auf dem Vorhandensein bestimmter Felder ermittelt. Die Standardeinstellung ist GENERIC_EVENT. Wenn has_principal_ip, has_target_ip und httpRequest.protocol mit HTTP übereinstimmen, wird NETWORK_HTTP festgelegt. Hartcodiert auf GCP_RUN. Hartcodiert auf GCP_RUN. Hartcodiert auf Google Cloud Platform. Hartcodiert auf GOOGLE_CLOUD_PLATFORM.

Änderungen

2024-01-22

Optimierung:

  • Es wurde eine Zuordnung für Protokolle hinzugefügt, bei denen „logName“ projects/1234/logs/run.googleapis.com%2Fstderr, projects/1234/logs/run.googleapis.com%2Fstdout, projects/1234/logs/run.googleapis.com%2Frequests oder projects/1234/logs/run.googleapis.com%2Fvarlog%2Fsystem ist.
  • httpRequest.latency wurde target.resource.attribute.labels zugeordnet.
  • resource.labels.configuration_name wurde target.resource.attribute.labels zugeordnet.
  • resource.labels.revision_name wurde target.resource.attribute.labels zugeordnet.
  • resource.labels.service_name wurde target.resource.attribute.labels zugeordnet.
  • httpRequest.protocol wurde network.application_protocol zugeordnet.
  • httpRequest.requestMethod wurde network.http.method zugeordnet.
  • httpRequest.requestSize wurde network.sent_bytes zugeordnet.
  • httpRequest.requestUrl wurde target.url zugeordnet.
  • httpRequest.responseSize wurde network.received_bytes zugeordnet.
  • httpRequest.remoteIp wurde principal.ip und principal.asset.ip zugeordnet.
  • httpRequest.serverIp wurde auf „target.ip“andtarget.asset.ip` zugeordnet.
  • httpRequest.status wurde network.http.response_code zugeordnet.
  • httpRequest.userAgent wurde network.http.user_agent zugeordnet.
  • logName wurde metadata.product_event_type zugeordnet.
  • textPayload wurde additional.fields zugeordnet.
  • labels.run.googleapis.com_execution_name wurde additional.fields zugeordnet.
  • labels.run.googleapis.com_task_attempt wurde additional.fields zugeordnet.
  • labels.run.googleapis.com_task_index wurde additional.fields zugeordnet.
  • labels.instanceId wurde additional.fields zugeordnet.
  • resource.labels.job_name wurde additional.fields zugeordnet.

2023-04-13

Optimierung:

  • Setzen Sie target.resource.attribute.cloud.environment auf GOOGLE_CLOUD_PLATFORM.
  • Legen Sie für target.resource.name den vollständigen Ressourcennamen fest.

2022-07-13

  • Neu erstellter Parser.

Benötigen Sie weitere Hilfe? Antworten von Community-Mitgliedern und Google SecOps-Experten erhalten