Cloud Run-Logs erfassen
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-Logs und transformiert sie in das einheitliche Datenmodell (Unified Data Model, UDM). Es verarbeitet verschiedene Logformate, darunter HTTP-Anfragedaten und System-Audit-Logs, ordnet relevante Felder UDM zu und reichert die Daten mit Labels und Metadaten an, die speziell für Cloud Run gelten.
Vorbereitung
Prüfen Sie, ob die folgenden Voraussetzungen erfüllt sind:
- Google SecOps-Instanz.
- Cloud Run ist in Ihrer Google Cloud -Umgebung eingerichtet und aktiv.
- Privilegierter Zugriff auf Google Cloud.
Google Cloud Storage-Bucket erstellen
- Melden Sie sich in der Google Cloud -Konsole an.
Rufen Sie die Seite Cloud Storage-Buckets auf.
Klicken Sie auf Erstellen.
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:
Führen Sie im Abschnitt Einstieg die folgenden Schritte aus:
- Geben Sie einen eindeutigen Namen ein, der den Anforderungen für Bucket-Namen entspricht, z. B. cloudrun-logs.
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.
Wenn Sie ein Bucket-Label hinzufügen möchten, klicken Sie auf den Erweiterungspfeil, um den Abschnitt Labels zu maximieren.
Klicken Sie auf Label hinzufügen und geben Sie einen Schlüssel und einen Wert für das Label an.
Gehen Sie im Bereich Speicherort für Daten auswählen so vor:
- Standorttyp auswählen.
Wählen Sie im Menü für den Standorttyp einen Speicherort aus, an dem die Objektdaten in Ihrem Bucket dauerhaft gespeichert werden sollen.
Wenn Sie die Bucket-übergreifende Replikation einrichten möchten, maximieren Sie den Bereich Bucket-übergreifende Replikation einrichten.
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.
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.
Gehen Sie im Bereich Auswählen, wie Objektdaten geschützt werden so vor:
- Wählen Sie unter Datenschutz die gewünschten Optionen für Ihren Bucket aus.
- Um auszuwählen, wie Ihre Objektdaten verschlüsselt werden, klicken Sie auf den Erweiterungspfeil mit dem Label Datenverschlüsselung und wählen Sie eine Datenverschlüsselungsmethode aus.
Klicken Sie auf Erstellen.
Logexport in Cloud Run konfigurieren
- Klicken Sie auf der Seite Google Cloud Willkommen auf das Symbol Cloud Run.
- Suchen Sie oben in der Suchleiste nach Protokollierung und klicken Sie auf die Eingabetaste.
- Filtern Sie die Logs im Log-Explorer, indem Sie unter Logname die Option Cloud Run auswählen und auf Anwenden klicken.
- Klicken Sie im Menü auf Weitere Aktionen> Senke erstellen.
- Geben Sie die folgenden Konfigurationen an:
- Senkendetails: Geben Sie einen Namen und eine Beschreibung ein.
- Klicken Sie auf Weiter.
- Senkenziel: Wählen Sie Cloud Storage-Bucket aus.
- Cloud Storage-Bucket: Wählen Sie den zuvor erstellten Bucket aus oder erstellen Sie einen neuen Bucket.
- Klicken Sie auf Weiter.
- Logs auswählen, die in der Senke enthalten sind: Wenn Sie eine Option in Cloud Storage-Bucket auswählen, wird ein Standardlog eingefügt.
- Klicken Sie auf Weiter.
- Optional: Logs zum Filtern aus der Senke auswählen: Wählen Sie die Logs aus, die nicht in die Senke aufgenommen werden sollen.
- Klicken Sie auf Senke erstellen.
Feeds einrichten
Es gibt zwei verschiedene Einstiegspunkte zum Einrichten von Feeds in der Google SecOps-Plattform:
- SIEM-Einstellungen > Feeds
- Content Hub> Content-Pakete
Feeds über „SIEM-Einstellungen“ > „Feeds“ einrichten
So konfigurieren Sie einen Feed:
- Rufen Sie die SIEM-Einstellungen > Feeds auf.
- Klicken Sie auf Neuen Feed hinzufügen.
- Klicken Sie auf der nächsten Seite auf Einen einzelnen Feed konfigurieren.
- Geben Sie im Feld Feedname einen Namen für den Feed ein, z. B. Cloud Run-Logs.
- Wählen Sie Google Cloud Storage als Quelltyp aus.
- Wählen Sie GCP Cloud Run als Logtyp aus.
- Klicken Sie auf Dienstkonto abrufen als Chronicle-Dienstkonto.
- Klicken Sie auf Weiter.
Geben Sie Werte für die folgenden Eingabeparameter an:
- Storage-Bucket-URI: Google Cloud Storage-Bucket-URL im Format
gs://my-bucket/<value>
. - URI Is A (URI ist ein): Wählen Sie Directory which includes subdirectories (Verzeichnis mit Unterverzeichnissen) aus.
Optionen zum Löschen von Quellen: Wählen Sie die gewünschte Option aus.
- Storage-Bucket-URI: Google Cloud Storage-Bucket-URL im Format
Klicken Sie auf Weiter.
Prüfen Sie die neue Feedkonfiguration auf dem Bildschirm Abschließen und klicken Sie dann auf Senden.
Feeds über den Content Hub einrichten
Geben Sie Werte für die folgenden Felder an:
- Storage-Bucket-URI: Google Cloud Storage-Bucket-URL im Format
gs://my-bucket/<value>
. - URI Is A (URI ist ein): Wählen Sie Directory which includes subdirectories (Verzeichnis mit Unterverzeichnissen) aus.
- Optionen zum Löschen von Quellen: Wählen Sie die gewünschte Option aus.
Erweiterte Optionen
- Feedname: Ein vorausgefüllter Wert, der den Feed identifiziert.
- Quelltyp: Methode, die zum Erfassen von Logs in Google SecOps verwendet wird.
- Asset-Namespace: Der Namespace, der dem Feed zugeordnet ist.
- Aufnahmelabels: Labels, die auf alle Ereignisse aus diesem Feed angewendet werden.
UDM-Zuordnungstabelle
Logfeld | UDM-Zuordnung | Logik |
---|---|---|
httpRequest.latency |
target.resource.attribute.labels.[] |
Der Wert von httpRequest.latency aus dem Rohlog 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 Rohlog wird verwendet. |
httpRequest.remoteIp |
principal.ip |
Der Wert von httpRequest.remoteIp aus dem Rohlog wird verwendet. |
httpRequest.requestMethod |
network.http.method |
Der Wert von httpRequest.requestMethod aus dem Rohlog wird verwendet. |
httpRequest.requestSize |
network.sent_bytes |
Der Wert von httpRequest.requestSize aus dem Rohlog wird in eine vorzeichenlose Ganzzahl konvertiert und verwendet. |
httpRequest.requestUrl |
target.url |
Der Wert von httpRequest.requestUrl aus dem Rohlog wird verwendet. |
httpRequest.responseSize |
network.received_bytes |
Der Wert von httpRequest.responseSize aus dem Rohlog wird in eine vorzeichenlose Ganzzahl konvertiert und verwendet. |
httpRequest.serverIp |
target.asset.ip |
Der Wert von httpRequest.serverIp aus dem Rohlog wird verwendet. |
httpRequest.serverIp |
target.ip |
Der Wert von httpRequest.serverIp aus dem Rohlog wird verwendet. |
httpRequest.status |
network.http.response_code |
Der Wert von httpRequest.status aus dem Rohlog wird in eine Ganzzahl umgewandelt und verwendet. |
httpRequest.userAgent |
network.http.parsed_user_agent |
Der Wert von httpRequest.userAgent aus dem Rohlog wird als User-Agent-String geparst. |
httpRequest.userAgent |
network.http.user_agent |
Der Wert von httpRequest.userAgent aus dem Rohlog wird verwendet. |
insertId |
metadata.product_log_id |
Der Wert von insertId aus dem Rohlog 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 Rohlog 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 Rohlog 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 Rohlog wird verwendet. |
severity |
security_result.severity |
Wenn der Wert von severity mit Info übereinstimmt (Groß-/Kleinschreibung wird nicht beachtet), 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 Rohlog wird als Zeitstempel geparst. |
timestamp |
timestamp |
Der Wert von timestamp aus dem Rohlog wird als Zeitstempel geparst. Wird von der Parserlogik anhand des Vorhandenseins bestimmter Felder bestimmt. 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 . |
Benötigen Sie weitere Hilfe? Antworten von Community-Mitgliedern und Google SecOps-Experten erhalten