Palo Alto Prisma Cloud-Benachrichtigungsprotokolle erfassen

Unterstützt in:

Ü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

  1. Gehen Sie zu SIEM-Einstellungen > Feeds.
  2. Klicken Sie auf Neu hinzufügen.
  3. Geben Sie im Feld Feedname einen Namen für den Feed ein, z. B. PAN Prisma Cloud Alerts.
  4. Wählen Sie als Quelltyp Webhook aus.
  5. Wählen Sie als Logtyp Palo Alto Prisma Cloud-Benachrichtigungsnutzlast aus.
  6. Klicken Sie auf Weiter.
  7. 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.
  8. Klicken Sie auf Weiter.
  9. Überprüfen Sie die Feedkonfiguration auf dem Bildschirm Abschließen und klicken Sie dann auf Senden.
  10. Klicken Sie auf Secret-Schlüssel generieren, um einen Secret-Schlüssel zur Authentifizierung dieses Feeds zu generieren.
  11. 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.
  12. Kopieren Sie auf dem Tab Details die Feedendpunkt-URL aus dem Feld Endpunktinformationen. Sie müssen diese Endpunkt-URL in Ihrer Clientanwendung angeben.
  13. Klicken Sie auf Fertig.

API-Schlüssel für den Webhook-Feed erstellen

  1. Rufen Sie die Google Cloud Console > Anmeldedaten auf.

    Zu den Anmeldedaten

  2. Klicken Sie auf Anmeldedaten erstellen und wählen Sie anschließend API-Schlüssel aus.

  3. Beschränken Sie den API-Schlüsselzugriff auf die Google Security Operations API.

Endpunkt-URL angeben

  1. Geben Sie in Ihrer Clientanwendung die HTTPS-Endpunkt-URL an, die im Webhook-Feed angegeben ist.
  2. 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.

  3. 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

  1. Melden Sie sich in Palo Alto Prisma Cloud an.
  2. Wählen Sie Einstellungen > Integrationen und Benachrichtigungen ((and_then)) Integrationen aus.
  3. Klicken Sie auf Integration hinzufügen.
  4. Wählen Sie Webhook aus.
  5. 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.
  6. Klicken Sie auf Weiter.
  7. Klicken Sie auf Testen und dann auf Integration speichern.

Palo Alto Prisma Cloud-Benachrichtigungen konfigurieren

  1. Klicken Sie in der Palo Alto Prisma Cloud Console auf Benachrichtigungen > Benachrichtigungsregeln ansehen.
  2. Wählen Sie eine vorhandene Benachrichtigungsregel aus, die Sie bearbeiten möchten.
  3. Optional: Erstellen Sie eine neue Benachrichtigung für die Cloud-Infrastruktur.
  4. Optional: Erstellen Sie eine neue Benachrichtigung für Cloud-Arbeitslast.
  5. Gehen Sie zu Benachrichtigungen konfigurieren.
  6. Wählen Sie Webhook aus.
  7. Optional: Wählen Sie die Kanäle aus, an die Benachrichtigungen zu Warnungen gesendet werden sollen, die durch die Benachrichtigungsregel ausgelöst wurden.
  8. Klicken Sie auf Weiter.
  9. 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.