Google Cloud -Compute-Logs erfassen
Parserversion: 2.0
In diesem Dokument wird beschrieben, wie Sie den Export von Google Cloud Compute-Logs nach Google Security Operations mithilfe von Cloud Storage konfigurieren. Der Parser extrahiert Felder, normalisiert das Nachrichtenfeld und ordnet die extrahierten Daten dem UDM-Schema (Unified Data Model) zu, um eine konsistente Darstellung von Sicherheitsereignissen zu ermöglichen. Es verarbeitet verschiedene Logformate, einschließlich syslog-ähnlicher Nachrichten und Schlüssel/Wert-Paare, und kategorisiert Ereignisse anhand extrahierter Felder wie type und action.
Vorbereitung
Folgende Voraussetzungen müssen erfüllt sein:
- Google SecOps-Instanz
- Compute 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 Console 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. compute-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 Standort 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.
Im Abschnitt Speicherklasse für Ihre Daten auswählen wählen Sie entweder Standardspeicherklasse für den Bucket oder Autoclass zur automatischen Verwaltung der Speicherklassen Ihrer Bucket-Daten aus.
Wählen Sie im Abschnitt Zugriff auf Objekte steuern aus, dass die Verhinderung des öffentlichen Zugriffs nicht erzwungen werden soll, 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 Optionen aus, die Sie für Ihren Bucket festlegen möchten.
- Um auszuwählen, wie Ihre Objektdaten verschlüsselt werden, klicken Sie auf den Erweiterungspfeil mit dem Label Datenverschlüsselung und wählen Sie eine Methode für die Datenverschlüsselung aus.
Klicken Sie auf Erstellen.
Export von Google Cloud Compute-Logs konfigurieren
- Rufen Sie in der Google Cloud Console Logging > Log-Router auf.
- Klicken Sie auf Senke erstellen.
- Geben Sie die folgenden Konfigurationsdetails an:
- Name der Senke: Geben Sie einen aussagekräftigen Namen ein (z. B.
Compute-Logs-Sink). - Senkenziel: Wählen Sie Cloud Storage aus.
- Cloud Storage-Bucket: Geben Sie den Bucket-URI ein (z. B.
gs://compute-logs/compute-logs/).
- Name der Senke: Geben Sie einen aussagekräftigen Namen ein (z. B.
Konfigurieren Sie im Abschnitt „Einschließen“-Filter erstellen den Logfilter so, dass Google Cloud Compute-Logs mit einem oder mehreren der folgenden Muster erfasst werden:
Filter für Ressourcentyp (erforderlich – wählen Sie einen aus):
Nur für VM-Instanzlogs:
resource.type="gce_instance"Für alle GCE-bezogenen Ressourcen (VM-Instanzen, Subnetzwerke, Firewalls):
resource.type=("gce_instance" OR "gce_subnetwork" OR "gce_network" OR "gce_firewall_rule")
Spezifische Protokolltypen (optional – nach Bedarf hinzufügen):
Für Audit-Logs (Instanzvorgänge, Konfigurationsänderungen):
resource.type="gce_instance" logName:"cloudaudit.googleapis.com/activity"Für VPC-Flusslogs (Netzwerkverkehr):
resource.type="gce_subnetwork" logName:"vpc_flows"Für Firewall-Logs (zulässige/abgelehnte Verbindungen):
resource.type="gce_subnetwork" logName:"compute.googleapis.com/firewall"Für Logs der seriellen Konsole:
resource.type="gce_instance" logName:"serialconsole.googleapis.com"
Netzwerkbezogene Filter (optional – nach Bedarf hinzufügen):
Nach Verbindungsdetails (Quell-/Ziel-IP-Adressen, Ports) filtern:
jsonPayload.connection.dest_ip:* OR jsonPayload.connection.src_ip:*Nach Instanzdetails filtern:
jsonPayload.dest_instance.project_id:* OR jsonPayload.src_instance.project_id:*Nach Sicherheitsaktionen filtern:
jsonPayload.rule_details.action=("ALLOW" OR "BLOCK")
Beispiel: Vollständiger Filter für umfassendes Compute-Logging:
(resource.type="gce_instance" OR resource.type="gce_subnetwork") AND ( logName:"cloudaudit.googleapis.com/activity" OR logName:"vpc_flows" OR logName:"compute.googleapis.com/firewall" OR jsonPayload.connection.dest_ip:* OR jsonPayload.connection.src_ip:* )Klicken Sie auf Senke erstellen.
Berechtigungen für Cloud Storage konfigurieren
- Rufen Sie IAM > IAM und Verwaltung > Dienstkonten auf.
- Suchen Sie das Cloud Logging-Dienstkonto, z. B. service-account@logging.iam.gserviceaccount.com.
- Weisen Sie ihm die Rolle roles/storage.admin für den Bucket zu.
Feeds einrichten
Es gibt zwei verschiedene Einstiegspunkte, um Feeds in der Google SecOps-Plattform einzurichten:
- Einstellungen > Datenverwaltung > Feeds > Neuen Feed hinzufügen (auf einer reinen SIEM-Plattform: Einstellungen > Feeds > Neuen Feed hinzufügen)
- Content Hub > Content-Pakete > Jetzt starten
Google Cloud -Compute-Feed einrichten
- Klicken Sie auf das Paket Google Cloud Compute Platform.
- Suchen Sie den Logtyp GCP Compute Feed und klicken Sie auf Neuen Feed hinzufügen.
Geben Sie Werte für die folgenden Felder an:
- Quelltyp: Google Cloud Storage V2.
- Storage-Bucket-URI: Cloud Storage-Bucket-URL, z. B.
gs://compute-context-logs/. Diese URL muss mit einem Schrägstrich (/) enden. Option zum Löschen der Quelle: Wählen Sie die gewünschte Löschoption aus.
Maximales Dateialter: Dateien einschließen, die innerhalb der letzten Tage geändert wurden. Der Standardwert ist 180 Tage.
Chronicle-Dienstkonto: Kopieren Sie das Dienstkonto. Sie benötigen sie, um dem Dienstkonto Berechtigungen im Bucket hinzuzufügen, damit Google SecOps Daten im Bucket lesen oder löschen kann.
Erweiterte Optionen
- Feedname: Ein vorausgefüllter Wert, der den Feed identifiziert.
- Asset-Namespace: Der mit dem Feed verknüpfte Namespace.
- Aufnahme-Labels: Labels, die auf alle Ereignisse aus diesem Feed angewendet werden.
Klicken Sie auf Feed erstellen.
Weitere Informationen zum Konfigurieren mehrerer Feeds für verschiedene Logtypen innerhalb dieser Produktfamilie finden Sie unter Feeds nach Produkt konfigurieren.
UDM-Zuordnungstabelle
| Logfeld | UDM-Zuordnung | Logik |
|---|---|---|
| addr | read_only_udm.principal.ip | Wird mit der Liste der Haupt-IP-Adressen zusammengeführt, wenn das Feld nicht leer oder „?“ ist. |
| jsonPayload.connection.dest_ip | read_only_udm.target.ip | Wird mit der Ziel-IP-Adressliste zusammengeführt, wenn das Feld vorhanden ist. |
| jsonPayload.connection.dest_port | read_only_udm.target.port | Wird in einen String und dann in eine Ganzzahl konvertiert und zugeordnet, wenn bei der Konvertierung keine Fehler auftreten. |
| jsonPayload.connection.protocol | read_only_udm.network.ip_protocol | Wird in einen String und dann in eine Ganzzahl umgewandelt. Wird verwendet, um das IP-Protokoll (TCP, UDP usw.) mithilfe einer Suchtabelle zu bestimmen, und wird zugeordnet, wenn bei der Konvertierung keine Fehler auftreten. |
| jsonPayload.connection.src_ip | read_only_udm.principal.ip | Wird in die Liste der Haupt-IP-Adressen zusammengeführt, wenn das Feld vorhanden ist. |
| jsonPayload.connection.src_port | read_only_udm.principal.port | Wird in einen String und dann in eine Ganzzahl konvertiert und zugeordnet, wenn bei der Konvertierung keine Fehler auftreten. |
| jsonPayload.dest_instance.project_id | read_only_udm.target.resource.product_object_id | Bedingt zugeordnet, wenn jsonPayload.dest_vpc.project_id vorhanden ist. |
| jsonPayload.dest_instance.region | read_only_udm.target.location.name | Bedingt zugeordnet, wenn jsonPayload.dest_vpc.project_id vorhanden ist. |
| jsonPayload.dest_instance.vm_name | read_only_udm.target.resource.attribute.cloud.project.name | Bedingt zugeordnet, wenn jsonPayload.dest_vpc.project_id vorhanden ist. |
| jsonPayload.dest_instance.zone | read_only_udm.target.resource.attribute.cloud.availability_zone | Wird bedingt zugeordnet, wenn jsonPayload.dest_vpc.project_id vorhanden ist. |
| jsonPayload.dest_vpc.project_id | read_only_udm.target.cloud.vpc.product_object_id | Wird als Bedingung verwendet, um zugehörige Felder zuzuordnen. |
| jsonPayload.dest_vpc.subnetwork_name | read_only_udm.target.cloud.vpc.name | Bedingt zugeordnet, wenn jsonPayload.dest_vpc.project_id vorhanden ist. |
| jsonPayload.instance.project_id | read_only_udm.target.resource.product_object_id | Wird bedingt zugeordnet, wenn „jsonPayload.instance.project_id“ vorhanden ist. |
| jsonPayload.instance.region | read_only_udm.target.location.name | Wird bedingt zugeordnet, wenn „jsonPayload.instance.project_id“ vorhanden ist. |
| jsonPayload.instance.vm_name | read_only_udm.target.resource.attribute.cloud.project.name | Wird bedingt zugeordnet, wenn „jsonPayload.instance.project_id“ vorhanden ist. |
| jsonPayload.instance.zone | read_only_udm.target.resource.attribute.cloud.availability_zone | Wird bedingt zugeordnet, wenn „jsonPayload.instance.project_id“ vorhanden ist. |
| jsonPayload.message | read_only_udm.metadata.product_event_type, read_only_udm.principal.application, read_only_udm.target.process.pid, read_only_udm.target.user.userid, read_only_udm.principal.hostname, read_only_udm.target.process.command_line, read_only_udm.security_result.description, read_only_udm.principal.process.file.full_path | Wird geparst und basierend auf Grok-Mustern und bedingter Logik verschiedenen Feldern zugeordnet. |
| jsonPayload.rule_details.action | read_only_udm.security_result.action | Wird verwendet, um die Aktion für das Sicherheitsergebnis (ALLOW/BLOCK) zu bestimmen und zuzuordnen. |
| jsonPayload.rule_details.direction | read_only_udm.network.direction | Wird verwendet, um die Netzwerkrichtung (INBOUND/OUTBOUND/UNKNOWN_DIRECTION) zu bestimmen und zuzuordnen. |
| jsonPayload.rule_details.priority | read_only_udm.security_result.priority_details | Wird in einen String konvertiert und zugeordnet, wenn bei der Konvertierung keine Fehler auftreten. |
| jsonPayload.rule_details.reference | read_only_udm.security_result.rule_labels.value | Dem Wert des Regellabels zugeordnet. |
| jsonPayload.src_instance.project_id | read_only_udm.principal.resource.product_object_id | Bedingt zugeordnet, wenn jsonPayload.src_vpc.project_id vorhanden ist. |
| jsonPayload.src_instance.region | read_only_udm.principal.location.name | Bedingt zugeordnet, wenn jsonPayload.src_vpc.project_id vorhanden ist. |
| jsonPayload.src_instance.vm_name | read_only_udm.principal.resource.attribute.cloud.project.name | Bedingt zugeordnet, wenn jsonPayload.src_vpc.project_id vorhanden ist. |
| jsonPayload.src_instance.zone | read_only_udm.principal.resource.attribute.cloud.availability_zone | Bedingt zugeordnet, wenn jsonPayload.src_vpc.project_id vorhanden ist. |
| jsonPayload.src_vpc.project_id | read_only_udm.principal.cloud.vpc.product_object_id | Wird als Bedingung verwendet, um zugehörige Felder zuzuordnen. |
| jsonPayload.src_vpc.subnetwork_name | read_only_udm.principal.cloud.vpc.name | Bedingt zugeordnet, wenn jsonPayload.src_vpc.project_id vorhanden ist. |
| jsonPayload.vpc.project_id | read_only_udm.target.cloud.vpc.product_object_id | Wird bedingt zugeordnet, wenn jsonPayload.vpc.project_id vorhanden ist. |
| jsonPayload.vpc.subnetwork_name | read_only_udm.target.cloud.vpc.name | Wird bedingt zugeordnet, wenn jsonPayload.vpc.project_id vorhanden ist. |
| logName | read_only_udm.security_result.category_details | Direkt zugeordnet. |
| resource.labels.instance_id | read_only_udm.principal.resource.product_object_id, read_only_udm.principal.asset_id | Bedingt zugeordnet. Wenn der Typ „PROCTITLE“ ist, wird er zum Erstellen der Asset-ID verwendet. |
| resource.labels.location | read_only_udm.principal.location.name | Wird bedingt zugeordnet, wenn das Feld vorhanden ist. |
| resource.labels.project_id | read_only_udm.metadata.product_deployment_id | Wird bedingt zugeordnet, wenn das Feld vorhanden ist. |
| resource.labels.zone | read_only_udm.principal.resource.attribute.cloud.availability_zone | Wird bedingt zugeordnet, wenn das Feld vorhanden ist. |
| resource.type | read_only_udm.metadata.event_type | Wird verwendet, um den Ereignistyp zu bestimmen und zuzuordnen. |
| timestamp | read_only_udm.metadata.event_timestamp | Direkt zugeordnet. |
| Typ | read_only_udm.metadata.product_event_type, read_only_udm.metadata.event_type, read_only_udm.extensions.auth.type | Wird verwendet, um den Ereignistyp, den Produktereignistyp und den Authentifizierungstyp zu bestimmen, und wird entsprechend zugeordnet. |
| read_only_udm.metadata.event_type | Die Logik legt den Ereignistyp anhand des Felds „type“ und anderer Bedingungen fest. Wenn keine spezifische Übereinstimmung gefunden wird, wird standardmäßig „GENERIC_EVENT“ verwendet. | |
| read_only_udm.metadata.log_type | Konstanter Wert „GCP_COMPUTE“. | |
| read_only_udm.metadata.vendor_name | Konstanter Wert „Google Cloud Platform“. | |
| read_only_udm.metadata.product_name | Konstanter Wert „Google Cloud Platform“. | |
| read_only_udm.security_result.rule_labels.key | Konstanter Wert „Reference“. | |
| read_only_udm.target.cloud.vpc.resource_type | Wird bedingt auf „VPC_NETWORK“ gesetzt, wenn „jsonPayload.instance.project_id“ oder „jsonPayload.dest_vpc.project_id“ vorhanden ist. | |
| read_only_udm.target.resource.attribute.cloud.environment | Wird bedingt auf „GOOGLE_CLOUD_PLATFORM“ gesetzt, wenn „jsonPayload.instance.project_id“, „jsonPayload.dest_vpc.project_id“ oder „jsonPayload.src_vpc.project_id“ vorhanden ist. | |
| read_only_udm.principal.administrative_domain | Wird aus dem Feld „Account Domain“ zugeordnet, das aus dem Feld „kv_data“ extrahiert wurde. | |
| read_only_udm.principal.user.user_display_name | Wird aus dem Feld „Account Name“ zugeordnet, das aus dem Feld „kv_data“ extrahiert wurde. | |
| read_only_udm.target.resource.name | Wird aus dem Feld „Object Name“ zugeordnet, das aus dem Feld „kv_data“ extrahiert wurde. | |
| read_only_udm.target.resource.type | Wird aus dem Feld „Object Type“ zugeordnet, das aus dem Feld „kv_data“ extrahiert wurde. | |
| read_only_udm.principal.process.pid | Wird aus dem Feld „Process ID“ zugeordnet, das aus dem Feld „kv_data“ extrahiert wurde. | |
| read_only_udm.target.user.windows_sid | Wird aus dem Feld „Security ID“ zugeordnet, das aus dem Feld „kv_data“ extrahiert wurde. | |
| read_only_udm.network.session_id | Wird aus dem Feld „auid“ zugeordnet. |
Änderungsprotokoll
Änderungsprotokoll für diesen Parser ansehen
Benötigen Sie weitere Hilfe? Antworten von Community-Mitgliedern und Google SecOps-Experten erhalten