Palo Alto Prisma Cloud-Benachrichtigungsprotokolle erfassen
Übersicht
Dieser Parser extrahiert Benachrichtigungsprotokolle aus Palo Alto Prisma Cloud im JSON-Format und wandelt sie in das UDM um. Der Parser führt Datennormalisierung, Typkonvertierungen und bedingte Logik aus, um die entsprechenden UDM-Felder zu füllen. Außerdem werden verschachtelte JSON-Strukturen und ‑Arrays in den Protokolldaten verarbeitet, um relevante Informationen zu extrahieren.
Hinweis
- Sie benötigen eine Google SecOps-Instanz.
- Sie benötigen Berechtigungen für den Zugriff auf Palo Alto Prisma Cloud.
Feed in Google SecOps für die Aufnahme von Palo Alto Prisma Cloud-Benachrichtigungen 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. PAN Prisma Cloud Alerts.
- Wählen Sie als Quelltyp Webhook aus.
- Wählen Sie als Logtyp Palo Alto Prisma Cloud-Benachrichtigungsnutzlast 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.
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.
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 Security Operations authentifizieren.SECRET
: der geheime Schlüssel, den Sie zur Authentifizierung des Feeds generiert haben.
Palo Alto Prisma Cloud-Webhook für Google SecOps konfigurieren
- Melden Sie sich in Palo Alto Prisma Cloud an.
- Wählen Sie Einstellungen > Integrationen und Benachrichtigungen ((and_then)) Integrationen aus.
- Klicken Sie auf Integration hinzufügen.
- Wählen Sie Webhook aus.
- Geben Sie Werte für die folgenden Eingabeparameter an:
- Integrationsname: Geben Sie einen eindeutigen und aussagekräftigen Namen an, z. B. Google SecOps.
- Webhook-URL: Geben Sie die ENDPOINT_URL ein.
- Optional: Geben Sie eine Beschreibung der Integration ein.
- Optional: Aktivieren Sie Benutzerdefinierte Nutzlast > klicken Sie auf Weiter, um die benutzerdefinierte Nutzlast zu überprüfen oder zu ändern.
- Klicken Sie auf Weiter.
- Klicken Sie auf Testen und dann auf Integration speichern.
Palo Alto Prisma Cloud-Benachrichtigungen konfigurieren
- Klicken Sie in der Palo Alto Prisma Cloud Console auf Benachrichtigungen > Benachrichtigungsregeln ansehen.
- Wählen Sie eine vorhandene Benachrichtigungsregel aus, die Sie bearbeiten möchten.
- Optional: Erstellen Sie eine neue Benachrichtigung für die Cloud-Infrastruktur.
- Optional: Erstellen Sie eine neue Benachrichtigung für Cloud-Arbeitslast.
- Gehen Sie zu Benachrichtigungen konfigurieren.
- Wählen Sie Webhook aus.
- Optional: Wählen Sie die Kanäle aus, an die Benachrichtigungen zu Warnungen gesendet werden sollen, die durch die Benachrichtigungsregel ausgelöst wurden.
- Klicken Sie auf Weiter.
- Klicken Sie auf Speichern.
UDM-Zuordnungstabelle
Logfeld | UDM-Zuordnung | Logik |
---|---|---|
accountId |
target.resource.id |
Der Wert von accountId aus dem Rohprotokoll. |
accountId |
target.resource.product_object_id |
Der Wert von accountId aus dem Rohprotokoll. Dadurch wird das eingestellte Feld resource.id überschrieben. |
alertId |
security_result.detection_fields[].key |
Der Schlüssel ist auf „alert id“ festgelegt. |
alertId |
security_result.detection_fields[].value |
Der Wert von alertId aus dem Rohprotokoll. |
alertRuleId |
security_result.rule_id |
Der Wert von alertRuleId aus dem Rohprotokoll. |
alertRuleName |
security_result.rule_name |
Der Wert von alertRuleName aus dem Rohprotokoll. |
alertStatus |
security_result.detection_fields[].key |
Der Schlüssel ist auf „alert status“ gesetzt. |
alertStatus |
security_result.detection_fields[].value |
Der Wert von alertStatus aus dem Rohprotokoll. |
alertTs |
security_result.detection_fields[].key |
Der Schlüssel ist auf „alertTs“ festgelegt. |
alertTs |
security_result.detection_fields[].value |
Der Wert von alertTs aus dem Rohprotokoll, in einen String konvertiert. |
callbackUrl |
metadata.url_back_to_product |
Der Wert von callbackUrl aus dem Rohprotokoll. |
cloudType |
principal.cloud.environment |
Wenn cloudType „gcp“ ist (Groß- und Kleinschreibung wird nicht berücksichtigt), wird der Wert auf „GOOGLE_CLOUD_PLATFORM“ gesetzt. |
complianceMetadata[].complianceId |
security_result.detection_fields[].key |
Der Schlüssel ist auf „complianceId“ gesetzt. |
complianceMetadata[].complianceId |
security_result.detection_fields[].value |
Der Wert von complianceMetadata[].complianceId aus dem Rohprotokoll. |
complianceMetadata[].customAssigned |
security_result.detection_fields[].key |
Der Schlüssel ist auf „customAssigned“ gesetzt. |
complianceMetadata[].customAssigned |
security_result.detection_fields[].value |
Der Wert von complianceMetadata[].customAssigned aus dem Rohprotokoll, in einen String konvertiert. |
complianceMetadata[].policyId |
security_result.detection_fields[].key |
Der Schlüssel ist auf „Richtlinien-ID“ gesetzt. |
complianceMetadata[].policyId |
security_result.detection_fields[].value |
Der Wert von complianceMetadata[].policyId aus dem Rohprotokoll. |
complianceMetadata[].requirementId |
security_result.rule_id |
Der Wert von complianceMetadata[].requirementId aus dem Rohprotokoll. |
complianceMetadata[].requirementName |
security_result.summary |
Der Wert von complianceMetadata[].requirementName aus dem Rohprotokoll. |
complianceMetadata[].requirementViewOrder |
security_result.detection_fields[].key |
Der Schlüssel ist auf „requirementViewOrder“ gesetzt. |
complianceMetadata[].requirementViewOrder |
security_result.detection_fields[].value |
Der Wert von complianceMetadata[].requirementViewOrder aus dem Rohprotokoll, in einen String konvertiert. |
complianceMetadata[].sectionDescription |
security_result.detection_fields[].key |
Der Schlüssel ist auf „sectionDescription“ gesetzt. |
complianceMetadata[].sectionDescription |
security_result.detection_fields[].value |
Der Wert von complianceMetadata[].sectionDescription aus dem Rohprotokoll. |
complianceMetadata[].sectionId |
security_result.detection_fields[].key |
Der Schlüssel ist auf „sectionId“ gesetzt. |
complianceMetadata[].sectionId |
security_result.detection_fields[].value |
Der Wert von complianceMetadata[].sectionId aus dem Rohprotokoll. |
complianceMetadata[].sectionLabel |
security_result.detection_fields[].key |
Der Schlüssel ist auf „sectionLabel“ gesetzt. |
complianceMetadata[].sectionLabel |
security_result.detection_fields[].value |
Der Wert von complianceMetadata[].sectionLabel aus dem Rohprotokoll. |
complianceMetadata[].sectionViewOrder |
security_result.detection_fields[].key |
Der Schlüssel ist auf „sectionViewOrder“ gesetzt. |
complianceMetadata[].sectionViewOrder |
security_result.detection_fields[].value |
Der Wert von complianceMetadata[].sectionViewOrder aus dem Rohprotokoll, in einen String konvertiert. |
complianceMetadata[].standardDescription |
security_result.detection_fields[].key |
Der Schlüssel ist auf „standardDescription“ gesetzt. |
complianceMetadata[].standardDescription |
security_result.detection_fields[].value |
Der Wert von complianceMetadata[].standardDescription aus dem Rohprotokoll. |
complianceMetadata[].standardName |
security_result.rule_name |
Der Wert von complianceMetadata[].standardName aus dem Rohprotokoll. |
complianceMetadata[].systemDefault |
security_result.detection_fields[].key |
Der Schlüssel ist auf „systemDefault“ gesetzt. |
complianceMetadata[].systemDefault |
security_result.detection_fields[].value |
Der Wert von complianceMetadata[].systemDefault aus dem Rohprotokoll, in einen String konvertiert. |
create_time |
metadata.event_timestamp , events[].timestamp |
Der Wert von create_time aus dem Rohprotokoll. |
data.allocationId |
principal.resource.product_object_id |
Der Wert von data.allocationId aus dem Rohprotokoll. |
data.publicIp |
principal.ip |
Der Wert von data.publicIp aus dem Rohprotokoll. |
deleted |
additional.fields[].key |
Der Schlüssel ist auf „gelöscht“ gesetzt. |
deleted |
additional.fields[].value.string_value |
Der Wert von deleted aus dem Rohprotokoll, in einen String konvertiert. |
description |
metadata.description |
Der Wert von description aus dem Rohprotokoll. |
firstSeen |
principal.asset.first_seen_time |
Der Wert von firstSeen aus dem Rohprotokoll, der als Zeitstempel (UNIX_MS oder UNIX-Format) geparst wird. |
hasFinding |
security_result.detection_fields[].key |
Der Schlüssel ist auf „hasFinding“ festgelegt. |
hasFinding |
security_result.detection_fields[].value |
Der Wert von hasFinding aus dem Rohprotokoll, in einen String konvertiert. |
lastSeen |
principal.asset.last_discover_time |
Der Wert von lastSeen aus dem Rohprotokoll, der als Zeitstempel (UNIX_MS oder UNIX-Format) geparst wird. |
– | metadata.event_type |
Legen Sie „USER_RESOURCE_ACCESS“ fest, sofern dies nicht durch einen bestimmten Ereignistyp aus dem Protokoll überschrieben wird. Andernfalls „GENERIC_EVENT“. |
– | metadata.product_name |
„CASB“ ist hartcodiert. |
– | metadata.vendor_name |
„Palo Alto Networks“ ist hartcodiert. |
policyDescription |
security_result.detection_fields[].key |
Der Schlüssel ist auf „policyDescription“ gesetzt. |
policyDescription |
security_result.detection_fields[].value |
Der Wert von policyDescription aus dem Rohprotokoll. |
policyId |
security_result.detection_fields[].key |
Der Schlüssel ist auf „Richtlinien-ID“ gesetzt. |
policyId |
security_result.detection_fields[].value |
Der Wert von policyId aus dem Rohprotokoll. |
policyLabels |
additional.fields[].key |
Der Schlüssel ist auf „policyLabels“ festgelegt. |
policyLabels |
additional.fields[].value.string_value |
Der Wert von policyLabels aus dem Rohprotokoll. |
policyName |
security_result.description |
Der Wert von policyName aus dem Rohprotokoll. |
policyRecommendation |
security_result.detection_fields[].key |
Der Schlüssel ist auf „Richtlinienempfehlung“ gesetzt. |
policyRecommendation |
security_result.detection_fields[].value |
Der Wert von policyRecommendation aus dem Rohprotokoll. |
policyType |
security_result.detection_fields[].key |
Der Schlüssel ist auf „Richtlinientyp“ festgelegt. |
policyType |
security_result.detection_fields[].value |
Der Wert von policyType aus dem Rohprotokoll. |
reason |
security_result.summary |
Der Wert von reason aus dem Rohprotokoll. |
recommendation |
security_result.detection_fields[].key |
Der Schlüssel ist auf „Empfehlung“ gesetzt. |
recommendation |
security_result.detection_fields[].value |
Der Wert von recommendation aus dem Rohprotokoll. |
resource.additionalInfo |
principal.resource.attribute.labels[].key |
Der Schlüssel ist auf „resource additionalInfo“ gesetzt. |
resource.additionalInfo |
principal.resource.attribute.labels[].value |
Der Wert von resource.additionalInfo aus dem Rohprotokoll. |
resource.cloudAccountGroups |
principal.resource.attribute.labels[].key |
Der Schlüssel ist auf „resource cloudAccountGroups {index}“ festgelegt. |
resource.cloudAccountGroups |
principal.resource.attribute.labels[].value |
Der Wert von resource.cloudAccountGroups[] aus dem Rohprotokoll. |
resource.cloudType |
principal.resource.attribute.labels[].key |
Der Schlüssel ist auf „resource cloudType“ festgelegt. |
resource.cloudType |
principal.resource.attribute.labels[].value |
Der Wert von resource.cloudType aus dem Rohprotokoll. |
resource.data |
principal.resource.attribute.labels[].key |
Der Schlüssel ist auf „Ressourcendaten {verschachtelter_Schlüssel}“ festgelegt. |
resource.data |
principal.resource.attribute.labels[].value |
Der Wert von resource.data[] aus dem Rohprotokoll. |
resource.id |
principal.resource.product_object_id |
Der Wert von resource.id aus dem Rohprotokoll. |
resource.name |
principal.resource.name |
Der Wert von resource.name aus dem Rohprotokoll. |
resource.region |
principal.location.country_or_region |
Der Wert von resource.region aus dem Rohprotokoll. |
resource.regionId |
principal.cloud.availability_zone |
Der Wert von resource.regionId aus dem Rohprotokoll. |
resource.resourceApiName |
principal.resource.attribute.labels[].key |
Der Schlüssel ist auf „resource resourceApiName“ festgelegt. |
resource.resourceApiName |
principal.resource.attribute.labels[].value |
Der Wert von resource.resourceApiName aus dem Rohprotokoll. |
resource.resourceTags |
principal.resource.attribute.labels[].key |
Der Schlüssel ist auf „resource resourceTags {nested_key}“ festgelegt. |
resource.resourceTags |
principal.resource.attribute.labels[].value |
Der Wert von resource.resourceTags[] aus dem Rohprotokoll. |
resource.resourceTs |
principal.resource.attribute.labels[].key |
Der Schlüssel ist auf „resource resourceTs“ festgelegt. |
resource.resourceTs |
principal.resource.attribute.labels[].value |
Der Wert von resource.resourceTs aus dem Rohprotokoll. |
resource.resourceType |
principal.resource.attribute.labels[].key |
Der Schlüssel ist auf „resource resourceType“ festgelegt. |
resource.resourceType |
principal.resource.attribute.labels[].value |
Der Wert von resource.resourceType aus dem Rohprotokoll. |
resource.rrn |
principal.resource.attribute.labels[].key |
Der Schlüssel ist auf „resource rrn“ festgelegt. |
resource.rrn |
principal.resource.attribute.labels[].value |
Der Wert von resource.rrn aus dem Rohprotokoll. |
resource.url |
principal.url |
Der Wert von resource.url aus dem Rohprotokoll. |
resourceCloudService |
principal.resource.attribute.labels[].key |
Der Schlüssel ist auf „Ressourcen-Cloud-Dienst“ festgelegt. |
resourceCloudService |
principal.resource.attribute.labels[].value |
Der Wert von resourceCloudService aus dem Rohprotokoll. |
resourceName |
principal.resource.name |
Der Wert von resourceName aus dem Rohprotokoll. |
resourceRegion |
principal.location.country_or_region |
Der Wert von resourceRegion aus dem Rohprotokoll. |
resourceRegionId |
principal.cloud.availability_zone |
Der Wert von resourceRegionId aus dem Rohprotokoll. |
resourceType |
target.resource.resource_subtype |
Der Wert von resourceType aus dem Rohprotokoll. |
severity |
security_result.severity |
Der Wert von severity aus dem Rohprotokoll, in Großbuchstaben umgewandelt. Zugewiesene UDM-Schweregrade (KRITISCH, HOCH, MITTEL, NIEDRIG, INFORMATIONSMELDUNG). |
source |
principal.application |
Der Wert von source aus dem Rohprotokoll. |
unifiedAssetId |
principal.asset.asset_id |
Der Wert von unifiedAssetId aus dem Rohprotokoll mit dem Präfix „ASSETID:“. |
Änderungen
2023-12-10
- Es wurde ein Grok-Muster zum Extrahieren des JSON-Teils hinzugefügt.
- „resourceId“ wurde „principal.resource.product_object_id“ zugeordnet.
- „accountId“ wurde „target.resource.product_object_id“ zugeordnet.
- „alertRuleName“ wurde „security_result.rule_name“ zugeordnet.
- „accountName“ wurde „target.resource.name“ zugeordnet.
- „hasFinding“ wurde in „security_result.detection_fields“ geändert.
- „resourceRegionId“ wurde „principal.cloud.availability_zone“ zugeordnet.
- „source“ wurde „principal.application“ zugeordnet.
- „callbackUrl“ wurde mit „metadata.url_back_to_product“ verknüpft.
- „alertRuleId“ wurde auf „security_result.rule_id“ zugeordnet.
- „alertId“ wurde „security_result.detection_fields“ zugeordnet.
- „policyLabels“ wurde auf „additional.fields“ umgestellt.
- „policyName“ wurde auf „security_result.description“ zugeordnet.
- „resourceName“ wurde „principal.resource.name“ zugeordnet.
- „resourceRegion“ wurde auf „principal.location.country_or_region“ zugeordnet.
- „policyDescription“ wurde in „security_result.detection_fields“ geändert.
- „policyRecommendation“ wurde in „security_result.detection_fields“ geändert.
- „resourceCloudService“ wurde „principal.resource.attribute.labels“ zugeordnet.
- „resource.url“ wurde „principal.url“ zugeordnet.
- „alertTs“ wurde „security_result.detection_fields“ zugeordnet.
- „firstSeen“ wurde „principal.asset.first_seen_time“ zugeordnet.
- „lastSeen“ wurde „principal.asset.last_discover_time“ zugeordnet.
- „reason“ wurde „security_result.summary“ zugeordnet.
- „alertStatus“ wurde auf „security_result.detection_fields“ zugeordnet.
- Wenn der Wert „severity“ „HIGH“ ist, setzen Sie „security_result.severity“ auf „HIGH“.
- Wenn der Wert „cloudType“ „gcp“ ist, legen Sie „principal.cloud.environment“ auf „GOOGLE_CLOUD_PLATFORM“ fest.
2023-08-17
- Neu erstellter Parser.