Uptycs EDR-Logs erfassen
In diesem Dokument wird beschrieben, wie Sie Uptycs EDR-Logs mit Amazon S3 in Google Security Operations aufnehmen. Der Parser transformiert Roh-JSON-Logs in ein einheitliches Datenmodell (Unified Data Model, UDM). Zuerst werden Felder aus dem JSON extrahiert, dann werden die Daten bereinigt und angereichert. Anschließend werden die relevanten Informationen den entsprechenden UDM-Feldern zugeordnet. Dabei werden verschiedene Datentypen und Grenzfälle berücksichtigt, um eine genaue und konsistente Darstellung im UDM-Schema zu gewährleisten.
Hinweise
Prüfen Sie, ob folgende Voraussetzungen erfüllt sind:
- Eine Google SecOps-Instanz
- Privilegierter Zugriff auf Uptycs
- Privilegierter Zugriff auf AWS (S3, IAM)
Uptycs-Voraussetzungen
- Melden Sie sich in der Uptycs Admin Console an.
- Klicken Sie auf Konfiguration > Nutzer.
- Wählen Sie Ihren Nutzer aus oder erstellen Sie einen Dienstkontonutzer.
- Klicken Sie auf User API key (Nutzer-API-Schlüssel).
- Kopieren und speichern Sie die folgenden Details an einem sicheren Ort:
- API-Schlüssel
- API Secret (API-Secret)
- Kundennummer
- API-Domain (abgeleitet von Ihrer Uptycs-URL, z. B.
mystack.uptycs.io)
AWS S3-Bucket und IAM für Google SecOps konfigurieren
- Erstellen Sie einen Amazon S3-Bucket. Folgen Sie dazu der Anleitung unter Bucket erstellen.
- Speichern Sie den Namen und die Region des Buckets zur späteren Verwendung (z. B.
uptycs-telemetry-export). - Erstellen Sie einen Nutzer gemäß dieser Anleitung: IAM-Nutzer erstellen.
- Wählen Sie den erstellten Nutzer aus.
- Wählen Sie den Tab Sicherheitsanmeldedaten aus.
- Klicken Sie im Abschnitt Zugriffsschlüssel auf Zugriffsschlüssel erstellen.
- Wählen Sie Drittanbieterdienst als Anwendungsfall aus.
- Klicken Sie auf Weiter.
- Optional: Fügen Sie ein Beschreibungstag hinzu.
- Klicken Sie auf Zugriffsschlüssel erstellen.
- Klicken Sie auf CSV-Datei herunterladen, um den Access Key (Zugriffsschlüssel) und den Secret Access Key (geheimer Zugriffsschlüssel) für die zukünftige Verwendung zu speichern.
- Klicken Sie auf Fertig.
- Wählen Sie den Tab Berechtigungen aus.
- Klicken Sie im Bereich Berechtigungsrichtlinien auf Berechtigungen hinzufügen.
- Wählen Sie Berechtigungen hinzufügen aus.
- Wählen Sie Richtlinien direkt anhängen aus.
- Suchen Sie nach der Richtlinie AmazonS3FullAccess.
- Wählen Sie die Richtlinie aus.
- Klicken Sie auf Weiter.
- Klicken Sie auf Berechtigungen hinzufügen.
IAM-Richtlinie und ‑Rolle für S3-Uploads konfigurieren
- Rufen Sie in der AWS-Konsole IAM > Richtlinien auf.
- Klicken Sie auf Richtlinie erstellen> Tab „JSON“.
Geben Sie die folgende Richtlinie ein:
{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowPutObjects", "Effect": "Allow", "Action": "s3:PutObject", "Resource": "arn:aws:s3:::uptycs-telemetry-export/*" }, { "Sid": "AllowListBucket", "Effect": "Allow", "Action": "s3:ListBucket", "Resource": "arn:aws:s3:::uptycs-telemetry-export" } ] }- Ersetzen Sie
uptycs-telemetry-export, wenn Sie einen anderen Bucket-Namen eingegeben haben.
- Ersetzen Sie
Klicken Sie auf Weiter > Richtlinie erstellen.
Nennen Sie die Richtlinie
uptycs-s3-write-policy.Rufen Sie IAM > Nutzer auf.
Wählen Sie den Nutzer aus, der für Uptycs-Exporte erstellt wurde.
Klicken Sie auf Berechtigungen hinzufügen > Richtlinien direkt anhängen.
Suchen Sie nach
uptycs-s3-write-policyund wählen Sie den Eintrag aus.Klicken Sie auf Weiter > Berechtigungen hinzufügen.
Uptycs Export Raw Telemetry konfigurieren
- Melden Sie sich in der Uptycs Console an.
- Gehen Sie zum Abschnitt „Exportkonfiguration“.
- Konfigurieren Sie das S3-Exportziel.
- Geben Sie die folgenden Konfigurationsdetails an:
- Exporttyp: Wählen Sie Rohdaten-Telemetrie aus.
- Ziel: Wählen Sie Amazon S3 aus.
- Format: Wählen Sie JSON aus.
- S3-Bucket: Geben Sie
uptycs-telemetry-exportein. - S3-Pfadpräfix: Geben Sie
telemetry/ein. - AWS-Region: Wählen Sie die Region Ihres Buckets aus.
- AWS-Zugriffsschlüssel-ID: Geben Sie den Zugriffsschlüssel des IAM-Nutzers ein.
- AWS Secret Access Key: Geben Sie den geheimen Zugriffsschlüssel ein.
- Ereignistypen: Wählen Sie alle erforderlichen Telemetrietypen aus.
- Export testen und aktivieren
IAM-Nutzer mit Lesezugriff für Google SecOps erstellen
- Rufen Sie die AWS-Konsole > IAM > Nutzer auf.
- Klicken Sie auf Add users (Nutzer hinzufügen).
- Geben Sie die folgenden Konfigurationsdetails an:
- Nutzer: Geben Sie
secops-readerein. - Zugriffstyp: Wählen Sie Zugriffsschlüssel – programmatischer Zugriff aus.
- Nutzer: Geben Sie
- Klicken Sie auf Nutzer erstellen.
- Minimale Leseberechtigung (benutzerdefiniert) anhängen: Nutzer > secops-reader > Berechtigungen > Berechtigungen hinzufügen > Richtlinien direkt anhängen > Richtlinie erstellen.
Geben Sie im JSON-Editor die folgende Richtlinie ein:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": ["s3:GetObject"], "Resource": "arn:aws:s3:::uptycs-telemetry-export/*" }, { "Effect": "Allow", "Action": ["s3:ListBucket"], "Resource": "arn:aws:s3:::uptycs-telemetry-export" } ] }Legen Sie
secops-reader-policyals Name fest.Gehen Sie zu Richtlinie erstellen > suchen/auswählen > Weiter > Berechtigungen hinzufügen.
Rufen Sie Sicherheitsanmeldedaten > Zugriffsschlüssel > Zugriffsschlüssel erstellen auf.
Laden Sie die CSV herunter (diese Werte werden in den Feed eingegeben).
Feed in Google SecOps konfigurieren, um Uptycs-Logs aufzunehmen
- Rufen Sie die SIEM-Einstellungen > Feeds auf.
- Klicken Sie auf + Neuen Feed hinzufügen.
- Geben Sie im Feld Feedname einen Namen für den Feed ein, z. B.
Uptycs EDR logs. - Wählen Sie Amazon S3 V2 als Quelltyp aus.
- Wählen Sie Uptycs EDR als Logtyp aus.
- Klicken Sie auf Weiter.
- Geben Sie Werte für die folgenden Eingabeparameter an:
- S3-URI:
s3://uptycs-telemetry-export/telemetry/ - Optionen zum Löschen von Quellen: Wählen Sie die gewünschte Option zum Löschen aus.
- Maximales Dateialter: Dateien einschließen, die in den letzten Tagen geändert wurden. Der Standardwert ist 180 Tage.
- Zugriffsschlüssel-ID: Der Nutzerzugriffsschlüssel mit Zugriff auf den S3-Bucket.
- Geheimer Zugriffsschlüssel: Der geheime Schlüssel des Nutzers mit Zugriff auf den S3-Bucket.
- Asset-Namespace: Der Asset-Namespace.
- Aufnahmelabels: Das Label, das auf die Ereignisse aus diesem Feed angewendet wird.
- S3-URI:
- 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 |
|---|---|---|
| osquery_raw_data.answer | read_only_udm.network.dns.answers.name | Der Wert wird aus „osquery_raw_data.answer“ übernommen, sofern „osquery_raw_data.answer“ nicht leer ist. |
| osquery_raw_data.container_id | read_only_udm.metadata.product_log_id | Der Wert wird aus „osquery_raw_data.container_id“ übernommen, wenn „osquery_raw_data.container_id“ nicht leer ist. |
| osquery_raw_data.local_address | read_only_udm.principal.ip | Der Wert wird aus „osquery_raw_data.local_address“ übernommen, wenn „osquery_raw_data.local_address“ nicht leer und eine gültige IP-Adresse ist. |
| osquery_raw_data.local | read_only_udm.principal.ip | Andernfalls wird der Wert aus „osquery_raw_data.local“ übernommen, sofern „osquery_raw_data.local“ nicht leer und eine gültige IP-Adresse ist. |
| osquery_raw_data.local_port | read_only_udm.principal.port | Der Wert wird aus „osquery_raw_data.local_port“ übernommen und in eine Ganzzahl konvertiert, wenn „osquery_raw_data.local_port“ nicht leer ist. |
| osquery_raw_data.md5 | read_only_udm.target.process.file.md5 | Der Wert wird aus „osquery_raw_data.md5“ übernommen, wenn „osquery_raw_data.md5“ nicht leer ist. |
| osquery_raw_data.port | read_only_udm.target.port | Der Wert wird aus osquery_raw_data.port übernommen und in eine Ganzzahl konvertiert, wenn osquery_raw_data.port nicht leer ist. |
| osquery_raw_data.question | read_only_udm.network.dns.questions.name | Der Wert wird aus „osquery_raw_data.question“ übernommen, wenn „osquery_raw_data.question“ nicht leer ist. |
| osquery_raw_data.remote_address | read_only_udm.intermediary.ip | Der Wert wird aus „osquery_raw_data.remote_address“ übernommen, wenn „osquery_raw_data.remote_address“ nicht leer ist. |
| osquery_raw_data.remote_port | read_only_udm.intermediary.port | Der Wert wird aus osquery_raw_data.remote_port übernommen und in eine Ganzzahl konvertiert, wenn osquery_raw_data.remote_port nicht leer ist. |
| osquery_raw_data.type | read_only_udm.network.dns.questions.type | Der Wert wird aus „osquery_raw_data.type“ übernommen und in eine Ganzzahl konvertiert, wenn „osquery_raw_data.type“ nicht leer ist. |
| osquery_raw_data.uid | read_only_udm.principal.user.userid | Wert aus osquery_raw_data.uid, wenn osquery_raw_data.uid nicht leer und nicht gleich „0“ ist. |
| osquery_raw_data.worker_instance_id | read_only_udm.principal.user.userid | Andernfalls wird der Wert aus „osquery_raw_data.worker_instance_id“ übernommen, sofern „osquery_raw_data.worker_instance_id“ nicht leer ist. |
| upt_asset_group_id | read_only_udm.principal.user.group_identifiers | Der Wert wird aus „upt_asset_group_id“ übernommen, wenn „upt_asset_group_id“ nicht leer ist. |
| upt_asset_group_name | read_only_udm.principal.group.group_display_name | Der Wert wird aus „upt_asset_group_name“ übernommen, wenn „upt_asset_group_name“ nicht leer ist. |
| upt_asset_id | read_only_udm.principal.asset.asset_id | Verketteter String „UPT ASSET ID:“ mit dem Wert von „upt_asset_id“, falls „upt_asset_id“ nicht leer ist. |
| upt_hash | read_only_udm.target.file.md5 | Alle Vorkommen von „-“ werden in „upt_hash“ durch „“ ersetzt. Der Wert wird dann read_only_udm.target.file.md5 zugewiesen, wenn upt_hash nicht leer ist. |
| upt_hostname | read_only_udm.principal.hostname | Der Wert wird aus „upt_hostname“ übernommen, wenn „upt_hostname“ nicht leer ist. |
| upt_resource_type | read_only_udm.target.resource.type | Der Wert wird aus „upt_resource_type“ übernommen, wenn „upt_resource_type“ nicht leer ist. |
| upt_time | read_only_udm.metadata.event_timestamp.seconds | Der Wert wird aus „upt_time“ übernommen, wenn „upt_time“ nicht leer ist. |
| read_only_udm.metadata.event_type | Der Wert wird auf „PROCESS_LAUNCH“ gesetzt, wenn „osquery_raw_data.pid“ nicht leer ist. Der Wert wird auf „NETWORK_DNS“ gesetzt, wenn osquery_raw_data.question nicht leer ist. Der Wert wird auf „GENERIC_EVENT“ festgelegt, wenn „event_type“ leer ist. | |
| read_only_udm.metadata.log_type | Der Wert ist auf „UPTYCS_EDR“ festgelegt. | |
| read_only_udm.metadata.product_name | Der Wert ist auf „UPTYCS_EDR“ festgelegt. | |
| read_only_udm.metadata.vendor_name | Der Wert ist auf „UPTYCS“ festgelegt. | |
| read_only_udm.network.application_protocol | Der Wert wird auf „DNS“ gesetzt, wenn osquery_raw_data.question nicht leer ist. | |
| read_only_udm.security_result.action | Der Wert wird auf „ALLOW“ gesetzt, wenn osquery_raw_data.return_code gleich „SUCCESS“ oder osquery_raw_data.success gleich „1“ ist. | |
| read_only_udm.target.process.command_line | Der Wert wird aus „osquery_raw_data.cmdline“ übernommen, wenn „osquery_raw_data.cmdline“ nicht leer ist. | |
| read_only_udm.target.process.file.full_path | Der Wert wird aus „osquery_raw_data.path“ übernommen, wenn „osquery_raw_data.path“ nicht leer ist. | |
| read_only_udm.target.process.parent_process | Der Wert wird erstellt, indem das Array „ancestor_list“ in „osquery_raw_data.ancestor_list“ durchlaufen wird. Für jedes Element im Array werden die command_line, der full_path der Datei und die PID extrahiert und in einer JSON-Struktur formatiert, die die Prozesskette darstellt. | |
| read_only_udm.target.process.pid | Der Wert wird aus „osquery_raw_data.pid“ übernommen, wenn „osquery_raw_data.pid“ nicht leer ist. |
Benötigen Sie weitere Hilfe? Antworten von Community-Mitgliedern und Google SecOps-Experten erhalten