Sysdig-Protokolle erfassen
Dieser Parser extrahiert Sicherheitsereignisdaten aus Sysdig-JSON-Protokollen, transformiert die Rohprotokollfelder und ordnet sie dem UDM-Format von Google Security Operations zu. Es verarbeitet verschiedene Felder, darunter Metadaten, Informationen zu Haupt-/Zielobjekten, Details zu Sicherheitsergebnissen und Kubernetes-bezogenen Kontext, und ergänzt die Daten für die Analyse in Google SecOps. Der Parser führt außerdem Datentypkonvertierungen, Fehlerbehandlung und bedingte Logik basierend auf Feldwerten aus, um eine genaue und umfassende UDM-Darstellung zu gewährleisten.
Hinweis
- Sie benötigen eine Google SecOps-Instanz.
- Sie benötigen Berechtigungen für Sysdig Secure.
API-Schlüssel für den Webhook-Feed erstellen
Rufen Sie die Google Cloud Console > Anmeldedaten auf.
Klicken Sie auf Anmeldedaten erstellen und wählen Sie anschließend API-Schlüssel aus.
Beschränken Sie den API-Schlüsselzugriff auf die Google Security Operations API.
Option 1
Webhook-Feed in Google SecOps für die Aufnahme von Sysdig-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. Sysdig-Protokolle.
- Wählen Sie als Quelltyp Webhook aus.
- Wählen Sie Sysdig als Logtyp aus.
- Klicken Sie auf Weiter.
- Optional: Geben Sie Werte für die folgenden Eingabeparameter an:
- Trennzeichen für die Aufteilung: Das Trennzeichen, mit dem Logzeilen getrennt werden, z. B.
\n
. - Asset-Namespace: der Asset-Namespace.
- Aufnahmelabels: Das Label, das auf die Ereignisse aus diesem Feed angewendet wird.
- Trennzeichen für die Aufteilung: Das Trennzeichen, mit dem Logzeilen getrennt werden, z. B.
- Klicken Sie auf Weiter.
- Überprüfen Sie die Feedkonfiguration auf dem Bildschirm Abschließen und klicken Sie dann auf Senden.
- Klicken Sie auf Secret-Schlüssel generieren, um einen Secret-Schlüssel zur Authentifizierung dieses Feeds zu generieren.
- Kopieren und speichern Sie den geheimen Schlüssel. Sie können diesen geheimen Schlüssel nicht noch einmal aufrufen. Bei Bedarf können Sie einen neuen Secret-Schlüssel generieren. Dadurch wird der vorherige Secret-Schlüssel jedoch ungültig.
- Kopieren Sie auf dem Tab Details die Feedendpunkt-URL aus dem Feld Endpunktinformationen. Sie müssen diese Endpunkt-URL in Ihrer Clientanwendung angeben.
- Klicken Sie auf Fertig.
Endpunkt-URL angeben
- Geben Sie in Ihrer Clientanwendung die HTTPS-Endpunkt-URL an, die im Webhook-Feed angegeben ist.
Aktiviere die Authentifizierung, indem du den API-Schlüssel und den geheimen Schlüssel als Teil der benutzerdefinierten Kopfzeile im folgenden Format angibst:
X-goog-api-key = API_KEY X-Webhook-Access-Key = SECRET
Empfehlung: Geben Sie den API-Schlüssel als Header an, anstatt ihn in der URL anzugeben.
Wenn Ihr Webhook-Client keine benutzerdefinierten Header unterstützt, können Sie den API-Schlüssel und den geheimen Schlüssel mithilfe von Suchparametern im folgenden Format angeben:
ENDPOINT_URL?key=API_KEY&secret=SECRET
Ersetzen Sie Folgendes:
ENDPOINT_URL
: die URL des Feedendpunkts.API_KEY
: Der API-Schlüssel, mit dem Sie sich bei Google SecOps authentifizieren.SECRET
: der geheime Schlüssel, den Sie zur Authentifizierung des Feeds generiert haben.
Webhook in Sysdig konfigurieren
- Melden Sie sich mit Administratorberechtigungen in Sysdig Secure an.
- Gehen Sie zu Profil > Einstellungen > Ereignisweiterleitung.
- Klicken Sie auf + Integration hinzufügen und wählen Sie im Drop-down-Menü Webhook aus.
Geben Sie Werte für die folgenden Eingabeparameter an:
- Integrationsname: Geben Sie einen aussagekräftigen Namen für den Webhook ein, z. B. Google SecOps-Webhook.
- Endpunkt: Geben Sie den Webhook
<ENDPOINT_URL>
gefolgt von<API_KEY
und<SECRET>
ein. Zu sendende Daten: Wählen Sie im Drop-down-Menü die Arten von Sysdig-Daten aus, die weitergeleitet werden sollen.
Testen Sie die Integration und aktivieren Sie sie dann, indem Sie den Schalter Aktiviert einschalten.
Klicken Sie auf Speichern.
Option 2
Daten direkt an Google SecOps weiterleiten
- Melden Sie sich mit Ihren Administratoranmeldedaten in Sysdig Secure an.
- Gehen Sie zu Einstellungen > Ereignisweiterleitung.
- Klicken Sie auf + Integration hinzufügen und wählen Sie im Drop-down-Menü Google Chronicle aus.
- Geben Sie Werte für die folgenden Eingabeparameter an:
- Name der Integration: Geben Sie einen aussagekräftigen Namen für die Integration ein, z. B. Google SecOps-Integration.
- Kundennummer: Die Google-Kundennummer, die mit Ihrem GCP-Konto verknüpft ist. In Google SecOps finden Sie diese Option unter Einstellungen > Profil.
- Namespace: Optional. Verwenden Sie dieses Tag, um die entsprechende Datendomain für die Indexierung und Aufbereitung anzugeben.
- JSON-Anmeldedaten: Laden Sie Ihre JSON-Anmeldedaten für Google SecOps hoch.
- Region: Wählen Sie Ihre Region aus, z. B. „USA“, „Europa“ oder „Asien“.
- Zu sendende Daten: Wählen Sie im Drop-down-Menü die Arten von Sysdig-Daten aus, die weitergeleitet werden sollen.
- Testen Sie die Integration und aktivieren Sie sie dann, indem Sie den Schalter Aktiviert einschalten.
- Klicken Sie auf Speichern.
UDM-Zuordnungstabelle
Logfeld | UDM-Zuordnung | Logik |
---|---|---|
agentId |
read_only_udm.metadata.product_deployment_id |
Der Wert von agentId aus dem Rohprotokoll wird direkt diesem UDM-Feld zugeordnet. |
category |
read_only_udm.security_result.category_details |
Der Wert von category aus dem Rohprotokoll wird direkt diesem UDM-Feld zugeordnet. |
content.fields.container.id |
read_only_udm.target.asset.asset_id |
Dem Wert von content.fields.container.id aus dem Rohprotokoll wird „container_id:“ vorangestellt und er wird diesem UDM-Feld zugeordnet. Wird verwendet, wenn containerId leer ist. |
content.fields.container.image.repository |
read_only_udm.target.file.full_path |
Der Wert von content.fields.container.image.repository aus dem Rohprotokoll wird direkt diesem UDM-Feld zugeordnet. |
content.fields.container.image.tag |
read_only_udm.metadata.ingestion_labels.value , wobei „key“ tag ist |
Der Wert von content.fields.container.image.tag aus dem Rohprotokoll wird direkt diesem UDM-Feld zugeordnet. |
content.fields.evt.res |
read_only_udm.metadata.ingestion_labels.value , wobei „key“ evt_res ist |
Der Wert von content.fields.evt.res aus dem Rohprotokoll wird direkt diesem UDM-Feld zugeordnet. |
content.fields.evt.type |
read_only_udm.metadata.event_type |
Der Wert von content.fields.evt.type aus dem Rohprotokoll wird direkt diesem UDM-Feld zugeordnet. |
content.fields.falco.rule |
read_only_udm.security_result.rule_name |
Der Wert von content.fields.falco.rule aus dem Rohprotokoll wird direkt diesem UDM-Feld zugeordnet. Wird verwendet, wenn content.ruleName leer ist. |
content.fields.group.gid |
read_only_udm.target.group.product_object_id |
Der Wert von content.fields.group.gid aus dem Rohprotokoll wird direkt diesem UDM-Feld zugeordnet. |
content.fields.group.name |
read_only_udm.target.group.group_display_name |
Der Wert von content.fields.group.name aus dem Rohprotokoll wird direkt diesem UDM-Feld zugeordnet. |
content.fields.proc.cmdline |
read_only_udm.target.process.command_line |
Der Wert von content.fields.proc.cmdline aus dem Rohprotokoll wird direkt diesem UDM-Feld zugeordnet. |
content.fields.proc.pcmdline |
read_only_udm.target.process.parent_process.command_line |
Der Wert von content.fields.proc.pcmdline aus dem Rohprotokoll wird direkt diesem UDM-Feld zugeordnet. |
content.fields.proc.pid |
read_only_udm.target.process.pid |
Der Wert von content.fields.proc.pid aus dem Rohprotokoll wird direkt diesem UDM-Feld zugeordnet. |
content.fields.proc.ppid |
read_only_udm.target.process.parent_process.pid |
Der Wert von content.fields.proc.ppid aus dem Rohprotokoll wird direkt diesem UDM-Feld zugeordnet. |
content.fields.proc.sid |
read_only_udm.metadata.ingestion_labels.value , wobei „key“ sid ist |
Der Wert von content.fields.proc.sid aus dem Rohprotokoll wird direkt diesem UDM-Feld zugeordnet. |
content.fields.user.loginname |
read_only_udm.principal.user.user_display_name |
Der Wert von content.fields.user.loginname aus dem Rohprotokoll wird direkt diesem UDM-Feld zugeordnet. |
content.fields.user.uid |
read_only_udm.principal.user.userid |
Der Wert von content.fields.user.uid aus dem Rohprotokoll wird direkt diesem UDM-Feld zugeordnet. |
content.output |
read_only_udm.additional.fields.value.string_value , wobei „key“ content_output ist |
Der Wert von content.output aus dem Rohprotokoll wird direkt diesem UDM-Feld zugeordnet. |
content.policyId |
read_only_udm.security_result.rule_id |
Der Wert von content.policyId aus dem Rohprotokoll wird direkt diesem UDM-Feld zugeordnet. |
content.policyOrigin |
read_only_udm.additional.fields.value.string_value , wobei „key“ content_policyOrigin ist |
Der Wert von content.policyOrigin aus dem Rohprotokoll wird direkt diesem UDM-Feld zugeordnet. |
content.policyVersion |
read_only_udm.additional.fields.value.string_value , wobei „key“ content_policyVersion ist |
Der Wert von content.policyVersion aus dem Rohprotokoll wird direkt diesem UDM-Feld zugeordnet. |
content.ruleName |
read_only_udm.security_result.rule_name |
Der Wert von content.ruleName aus dem Rohprotokoll wird direkt diesem UDM-Feld zugeordnet. |
content.ruleTags |
read_only_udm.security_result.rule_labels |
Die Werte im Array content.ruleTags aus dem Rohprotokoll werden diesem UDM-Feld zugeordnet. Die Schlüssel werden dynamisch als „ruletag_index“ generiert. |
content.ruleType |
read_only_udm.additional.fields.value.string_value , wobei „key“ content_ruleType ist |
Der Wert von content.ruleType aus dem Rohprotokoll wird direkt diesem UDM-Feld zugeordnet. |
containerId |
read_only_udm.target.asset.asset_id |
Dem Wert von containerId aus dem Rohprotokoll wird „container_id:“ vorangestellt und er wird diesem UDM-Feld zugeordnet. |
description |
read_only_udm.metadata.description |
Der Wert von description aus dem Rohprotokoll wird direkt diesem UDM-Feld zugeordnet. |
id |
read_only_udm.metadata.product_log_id |
Der Wert von id aus dem Rohprotokoll wird direkt diesem UDM-Feld zugeordnet. |
labels.container.label.io.kubernetes.container.name |
read_only_udm.additional.fields.value.string_value , wobei „key“ container_name ist |
Der Wert von labels.container.label.io.kubernetes.container.name aus dem Rohprotokoll wird direkt diesem UDM-Feld zugeordnet. |
labels.container.label.io.kubernetes.pod.name |
read_only_udm.additional.fields.value.string_value , wobei „key“ pod_name ist |
Der Wert von labels.container.label.io.kubernetes.pod.name aus dem Rohprotokoll wird direkt diesem UDM-Feld zugeordnet. Wird verwendet, wenn labels.kubernetes.pod.name leer ist. |
labels.container.label.io.kubernetes.pod.namespace |
read_only_udm.principal.namespace |
Der Wert von labels.container.label.io.kubernetes.pod.namespace aus dem Rohprotokoll wird direkt diesem UDM-Feld zugeordnet. Wird verwendet, wenn labels.kubernetes.namespace.name leer ist. |
labels.aws.instanceId |
read_only_udm.target.resource.product_object_id |
Der Wert von labels.aws.instanceId aus dem Rohprotokoll wird direkt diesem UDM-Feld zugeordnet. |
labels.aws.region |
read_only_udm.target.resource.attribute.cloud.availability_zone |
Der Wert von labels.aws.region aus dem Rohprotokoll wird direkt diesem UDM-Feld zugeordnet. |
labels.host.hostName |
read_only_udm.principal.ip ODER read_only_udm.principal.hostname |
Wenn der Wert „ip“ enthält, wird er als IP-Adresse geparst und principal.ip zugeordnet. Andernfalls wird es principal.hostname zugeordnet. |
labels.host.mac |
read_only_udm.principal.mac |
Der Wert von labels.host.mac aus dem Rohprotokoll wird direkt diesem UDM-Feld zugeordnet. Wird verwendet, wenn machineId leer ist. |
labels.kubernetes.cluster.name |
read_only_udm.additional.fields.value.string_value , wobei „key“ kubernetes_cluster_name ist |
Der Wert von labels.kubernetes.cluster.name aus dem Rohprotokoll wird direkt diesem UDM-Feld zugeordnet. |
labels.kubernetes.deployment.name |
read_only_udm.additional.fields.value.string_value , wobei „key“ kubernetes_deployment_name ist |
Der Wert von labels.kubernetes.deployment.name aus dem Rohprotokoll wird direkt diesem UDM-Feld zugeordnet. |
labels.kubernetes.namespace.name |
read_only_udm.principal.namespace |
Der Wert von labels.kubernetes.namespace.name aus dem Rohprotokoll wird direkt diesem UDM-Feld zugeordnet. |
labels.kubernetes.node.name |
read_only_udm.additional.fields.value.string_value , wobei „key“ kubernetes_node_name ist |
Der Wert von labels.kubernetes.node.name aus dem Rohprotokoll wird direkt diesem UDM-Feld zugeordnet. |
labels.kubernetes.pod.name |
read_only_udm.additional.fields.value.string_value , wobei „key“ pod_name ist |
Der Wert von labels.kubernetes.pod.name aus dem Rohprotokoll wird direkt diesem UDM-Feld zugeordnet. |
labels.kubernetes.service.name |
read_only_udm.additional.fields.value.string_value , wobei „key“ kubernetes_service_name ist |
Der Wert von labels.kubernetes.service.name aus dem Rohprotokoll wird direkt diesem UDM-Feld zugeordnet. |
machineId |
read_only_udm.principal.mac |
Der Wert von machineId aus dem Rohprotokoll wird direkt diesem UDM-Feld zugeordnet. |
name |
read_only_udm.security_result.summary |
Der Wert von name aus dem Rohprotokoll wird direkt diesem UDM-Feld zugeordnet. |
severity |
read_only_udm.security_result.severity |
Der Wert von severity aus dem Rohprotokoll wird basierend auf diesen Bereichen einem Stringwert zugeordnet: < 4 = HOCH, > 3 und < 6 = MITTEL, 6 = NIEDRIG, 7 = INFORMATIONSMELDUNG. |
source |
read_only_udm.security_result.description |
Der Wert von source aus dem Rohprotokoll wird direkt diesem UDM-Feld zugeordnet. |
timestampRFC3339Nano |
read_only_udm.metadata.event_timestamp |
Der Wert von timestampRFC3339Nano aus dem Rohprotokoll wird als Zeitstempel geparst und diesem UDM-Feld zugeordnet. |
type |
read_only_udm.metadata.product_event_type |
Der Wert von type aus dem Rohprotokoll wird direkt diesem UDM-Feld zugeordnet. |
(Parser Logic) | read_only_udm.metadata.product_name |
Hartcodiert auf „SYSDIG“. |
(Parser Logic) | read_only_udm.metadata.vendor_name |
Hartcodiert auf „SYSDIG“. |
(Parser Logic) | read_only_udm.metadata.event_type |
Standardmäßig ist „PROCESS_UNCATEGORIZED“ festgelegt. Wenn labels.host.hostName leer ist, wird „GENERIC_EVENT“ verwendet. |
(Parser Logic) | read_only_udm.metadata.log_type |
Hartcodiert auf „SYSDIG“. |
(Parser Logic) | read_only_udm.target.resource.resource_type |
Wird auf „CLOUD_PROJECT“ gesetzt, wenn labels.aws.instanceId vorhanden ist. |
Änderungen
2024-01-05
- Wenn „severity“ den Wert 0, 1, 2 oder 3 hat, wurde die Zuordnung von „security_result.severity“ von „LOW“ zu „HIGH“ geändert.
- Wenn „severity“ den Wert 6 hat, wurde die Zuordnung von „security_result.severity“ von „HIGH“ (HOCH) zu „LOW“ (NIEDRIG) geändert.
- Wenn „severity“ den Wert 7 hat, wurde die Zuordnung von „security_result.severity“ von „HIGH“ zu „INFORMATIONAL“ geändert.
- „drop“ für Protokolle hinzugefügt, die nicht im JSON-Format sind
- „on_error“ wurde der Datumszuordnung „timestampRFC3339Nano“ hinzugefügt.
2022-10-07
- Neu erstellter Parser.