Cloud Compute-Logs erfassen
In diesem Dokument wird beschrieben, wie Sie den Export von Compute-Logs mit Cloud Storage zu Google Security Operations konfigurieren. Google Cloud Der Parser extrahiert Felder, normalisiert das Nachrichtenfeld und ordnet die extrahierten Daten dem UDM-Schema (Unified Data Model) zu, um eine einheitliche Darstellung von Sicherheitsereignissen zu ermöglichen. Er unterstützt verschiedene Protokollformate, einschließlich syslog-ähnlicher Nachrichten und Schlüssel/Wert-Paare, und kategorisiert Ereignisse anhand von extrahierten Feldern wie type und action.
Vorbereitung
- Sie benötigen eine Google SecOps-Instanz.
- Prüfen Sie, ob Compute in Ihrer Google Cloud -Umgebung eingerichtet und aktiv ist.
- Sie benötigen Berechtigungen für 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 Bereich 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ü „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 Optionen aus, die Sie für den Bucket festlegen möchten.
- 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.
Klicken Sie auf Erstellen.
Google Cloud Compute Logs Export konfigurieren
- Klicken Sie in der Google Cloud Console auf Logging > Log Router.
- Klicken Sie auf Senke erstellen.
Geben Sie die folgenden Informationen ein:
- Senkenname: Geben Sie einen aussagekräftigen Namen an, z. B. Compute-Logs-Sink.
- Senke: Wählen Sie „Cloud Storage“ aus .
- Sink-Ziel: Wählen Sie „Cloud Storage“ aus und geben Sie den Bucket-URI ein, z. B.
gs://<your-bucket-name>/compute-logs
. Logfilter: So legen Sie Filter fest, um Google Cloud Compute-Logs zu erfassen:
Logname und -typ:
logName="*compute*"
Netzwerkbezogene Felder (z. B. IP-Adressen, Ports):
jsonPayload.connection.dest_ip="*" OR jsonPayload.connection.src_ip="*"
Instanzdetails:
jsonPayload.dest_instance.project_id="*" jsonPayload.src_instance.project_id="*"
Sicherheitsrelevante Details:
jsonPayload.rule_details.action="ALLOW" OR jsonPayload.rule_details.action="BLOCK"
Klicken Sie auf Erstellen.
Berechtigungen für Cloud Storage konfigurieren
- Klicken Sie auf IAM > IAM und Verwaltung > Dienstkonten.
- 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.
Feed in Google SecOps für die Aufnahme von Google Cloud Compute-Protokollen konfigurieren
- Gehen Sie zu SIEM-Einstellungen > Feeds.
- Klicken Sie auf Neu hinzufügen.
- Geben Sie im Feld Feedname einen Namen für den Feed ein, z. B. Google Cloud Compute Logs.
- Wählen Sie Google Cloud Storage als Quelltyp aus.
- Wählen Sie GCP Compute als Logtyp aus.
- Klicken Sie als Chronicle-Dienstkonto auf Dienstkonto abrufen.
- 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 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.
- 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.
UDM-Zuordnungstabelle
Logfeld | UDM-Zuordnung | Logik |
---|---|---|
addr | read_only_udm.principal.ip | Wird in die Liste der Haupt-IP-Adressen aufgenommen, wenn das Feld nicht leer oder „?“ ist. |
jsonPayload.connection.dest_ip | read_only_udm.target.ip | Wenn das Feld vorhanden ist, wird es mit der Ziel-IP-Adressliste zusammengeführt. |
jsonPayload.connection.dest_port | read_only_udm.target.port | Wird in einen String und dann in eine Ganzzahl umgewandelt und zugeordnet, wenn bei der Umwandlung keine Fehler auftreten. |
jsonPayload.connection.protocol | read_only_udm.network.ip_protocol | In einen String und dann in eine Ganzzahl konvertiert. Wird verwendet, um das IP-Protokoll (TCP, UDP usw.) anhand einer Suchtabelle zu ermitteln und zuzuordnen, wenn bei der Umwandlung keine Fehler auftreten. |
jsonPayload.connection.src_ip | read_only_udm.principal.ip | Wenn das Feld vorhanden ist, wird es mit der Haupt-IP-Adressliste zusammengeführt. |
jsonPayload.connection.src_port | read_only_udm.principal.port | Wird in einen String und dann in eine Ganzzahl umgewandelt und zugeordnet, wenn bei der Umwandlung keine Fehler auftreten. |
jsonPayload.dest_instance.project_id | read_only_udm.target.resource.product_object_id | Bedingte Zuordnung, wenn jsonPayload.dest_vpc.project_id vorhanden ist. |
jsonPayload.dest_instance.region | read_only_udm.target.location.name | Bedingte Zuordnung, wenn jsonPayload.dest_vpc.project_id vorhanden ist. |
jsonPayload.dest_instance.vm_name | read_only_udm.target.resource.attribute.cloud.project.name | Bedingte Zuordnung, wenn jsonPayload.dest_vpc.project_id vorhanden ist. |
jsonPayload.dest_instance.zone | read_only_udm.target.resource.attribute.cloud.availability_zone | Bedingte Zuordnung, 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 für die Zuordnung verknüpfter Felder verwendet. |
jsonPayload.dest_vpc.subnetwork_name | read_only_udm.target.cloud.vpc.name | Bedingte Zuordnung, wenn jsonPayload.dest_vpc.project_id vorhanden ist. |
jsonPayload.instance.project_id | read_only_udm.target.resource.product_object_id | Bedingte Zuordnung, wenn „jsonPayload.instance.project_id“ vorhanden ist. |
jsonPayload.instance.region | read_only_udm.target.location.name | Bedingte Zuordnung, wenn „jsonPayload.instance.project_id“ vorhanden ist. |
jsonPayload.instance.vm_name | read_only_udm.target.resource.attribute.cloud.project.name | Bedingte Zuordnung, wenn „jsonPayload.instance.project_id“ vorhanden ist. |
jsonPayload.instance.zone | read_only_udm.target.resource.attribute.cloud.availability_zone | Bedingte Zuordnung, 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 | Sie werden anhand von Grok-Mustern und bedingter Logik analysiert und verschiedenen Feldern zugeordnet. |
jsonPayload.rule_details.action | read_only_udm.security_result.action | Wird verwendet, um die Sicherheitsergebnisaktion (ZULASSEN/BLOCKIEREN) 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 umgewandelt und zugeordnet, wenn bei der Umwandlung keine Fehler auftreten. |
jsonPayload.rule_details.reference | read_only_udm.security_result.rule_labels.value | Wird dem Wert des Regellabels zugeordnet. |
jsonPayload.src_instance.project_id | read_only_udm.principal.resource.product_object_id | Bedingte Zuordnung, wenn jsonPayload.src_vpc.project_id vorhanden ist. |
jsonPayload.src_instance.region | read_only_udm.principal.location.name | Bedingte Zuordnung, wenn jsonPayload.src_vpc.project_id vorhanden ist. |
jsonPayload.src_instance.vm_name | read_only_udm.principal.resource.attribute.cloud.project.name | Bedingte Zuordnung, wenn jsonPayload.src_vpc.project_id vorhanden ist. |
jsonPayload.src_instance.zone | read_only_udm.principal.resource.attribute.cloud.availability_zone | Bedingte Zuordnung, 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 für die Zuordnung verknüpfter Felder verwendet. |
jsonPayload.src_vpc.subnetwork_name | read_only_udm.principal.cloud.vpc.name | Bedingte Zuordnung, wenn jsonPayload.src_vpc.project_id vorhanden ist. |
jsonPayload.vpc.project_id | read_only_udm.target.cloud.vpc.product_object_id | Bedingte Zuordnung, wenn „jsonPayload.vpc.project_id“ vorhanden ist. |
jsonPayload.vpc.subnetwork_name | read_only_udm.target.cloud.vpc.name | Bedingte Zuordnung, 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 verwendet, um die Asset-ID zu erstellen. |
resource.labels.location | read_only_udm.principal.location.name | Bedingte Zuordnung, wenn das Feld vorhanden ist. |
resource.labels.project_id | read_only_udm.metadata.product_deployment_id | Bedingte Zuordnung, wenn das Feld vorhanden ist. |
resource.labels.zone | read_only_udm.principal.resource.attribute.cloud.availability_zone | Bedingte Zuordnung, 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 ermitteln und entsprechend zuzuordnen. |
read_only_udm.metadata.event_type | Die Logik legt den Ereignistyp basierend auf dem Feld „type“ und anderen Bedingungen fest. Wenn keine genaue Ü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 „Referenz“. | |
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 | Zugeordnet aus dem Feld „Kontodomain“, das aus dem Feld „kv_data“ extrahiert wurde. | |
read_only_udm.principal.user.user_display_name | Zugeordnet aus dem Feld „Kontoname“, das aus dem Feld „kv_data“ extrahiert wurde. | |
read_only_udm.target.resource.name | Zugeordnet aus dem Feld „Object Name“, das aus dem Feld „kv_data“ extrahiert wurde. | |
read_only_udm.target.resource.type | Zuordnung aus dem Feld „Object Type“, das aus dem Feld „kv_data“ extrahiert wurde. | |
read_only_udm.principal.process.pid | Zuordnung aus dem Feld „Prozess-ID“, das aus dem Feld „kv_data“ extrahiert wurde. | |
read_only_udm.target.user.windows_sid | Zuordnung aus dem Feld „Sicherheits-ID“, das aus dem Feld „kv_data“ extrahiert wurde. | |
read_only_udm.network.session_id | Wird aus dem Feld „auid“ zugeordnet. |
Änderungen
2024-06-18
Optimierung:
- „file“ wurde auf „principal.file.names“ zugeordnet.
- „function“ wurde auf „principal.resource.attribute.labels“ zugeordnet.
- „line“ wurde „principal.resource.attribute.labels“ zugeordnet.
- „Zeitstempel“ wurde mit „event_timestamp“ verknüpft.
2023-02-24
Fehlerkorrektur:
- Zuordnung für „asset_id“ hinzugefügt, um die Suche in der Benutzeroberfläche zu erleichtern: „asset:resource.labels.instance_id“ wird „principal.asset_id“ zugeordnet.
2022-06-16
Optimierung:
- Es wurde eine Zuordnung für die folgenden neuen Felder hinzugefügt: jsonPayload.Message als syslog.
- Prozessname zu principal.application
- Prozess-ID zu principal.process.pid
- Kontodomain zu principal.administrative_domain
- Kontoname zu principal.user.user_display_name
- Objektname zu „target.resource.name“.
- „Object Type“ zu „target.resource.type“
- Sicherheits-ID für „target.user.windows_sid“.
- addr zu principal.ip.
- auid in network.session_id
- „LINUX – %{type}“ für Linux-Protokolle und „WINDOWS-Ereignisprotokoll“ für Windows-Protokolle wurden auf „metadata.product_event_type“ zugeordnet.
- pid zu target.process.pid.
- acct zu target.user.userid.
- exe zu target.process.command_line.
- file_path zu principal.process.file.full_path
- Die Zuordnung von „desc“ von „metadata.description“ zu „security_result.description“ wurde geändert.
2022-05-23
Optimierung:
- Es wurden Zuordnungen für die folgenden neuen Felder hinzugefügt:
- jsonPayload.message als syslog.
- resource.labels.zone zu principal.resource.attribute.cloud.availability_zone.
- resource.labels.location zu principal.location.name.
- resource.labels.project_id in metadata.product_deployment_id.
- resource.labels.instance_id zu principal.resource.product_object_id.
Benötigen Sie weitere Hilfe? Antworten von Community-Mitgliedern und Google SecOps-Experten erhalten