Raccogli i log degli avvisi di Palo Alto Prisma Cloud
Panoramica
Questo parser estrae i log di avviso da Palo Alto Prisma Cloud in formato JSON, trasformandoli nell'UDM. Il parser esegue la normalizzazione dei dati, le conversioni di tipo e la logica condizionale per compilare i campi UDM appropriati. Gestisce inoltre strutture e array JSON nidificati all'interno dei dati dei log per estrarre le informazioni pertinenti.
Prima di iniziare
- Assicurati di avere un'istanza Google SecOps.
- Assicurati di disporre dell'accesso con privilegi a Palo Alto Prisma Cloud.
Configura un feed in Google SecOps per importare gli avvisi di Palo Alto Prisma Cloud
- Vai a Impostazioni SIEM > Feed.
- Fai clic su Aggiungi nuova.
- Nel campo Nome feed, inserisci un nome per il feed (ad esempio PAN Prisma Cloud Alerts).
- Seleziona Webhook come Tipo di origine.
- Seleziona Payload degli avvisi Palo Alto Prisma Cloud come Tipo di log.
- Fai clic su Avanti.
- (Facoltativo) Specifica i valori per i seguenti parametri di input:
- Delimitatore di split: il delimitatore utilizzato per separare le righe di log, ad esempio
\n
. - Spazio dei nomi degli asset: lo spazio dei nomi degli asset.
- Etichette di importazione: l'etichetta applicata agli eventi di questo feed.
- Delimitatore di split: il delimitatore utilizzato per separare le righe di log, ad esempio
- Fai clic su Avanti.
- Controlla la configurazione del feed nella schermata Concludi e poi fai clic su Invia.
- Fai clic su Genera chiave segreta per generare una chiave segreta per autenticare questo feed.
- Copia e memorizza la chiave segreta. Non potrai più visualizzare questa chiave segreta. Se necessario, puoi rigenerare una nuova chiave segreta, ma questa azione rende obsoleta la chiave segreta precedente.
- Dalla scheda Dettagli, copia l'URL dell'endpoint del feed dal campo Informazioni endpoint. Devi specificare questo URL endpoint nell'applicazione client.
- Fai clic su Fine.
Crea una chiave API per il feed webhook
Vai alla console Google Cloud > Credenziali.
Fai clic su Crea credenziali e poi seleziona Chiave API.
Limita l'accesso della chiave API all'API Google Security Operations.
Specifica l'URL dell'endpoint
- Nell'applicazione client, specifica l'URL dell'endpoint HTTPS fornito nel feed webhook.
Attiva l'autenticazione specificando la chiave API e la chiave segreta nell'intestazione personalizzata nel seguente formato:
X-goog-api-key = API_KEY X-Webhook-Access-Key = SECRET
Consiglio: specifica la chiave API come intestazione anziché nell'URL.
Se il client webhook non supporta le intestazioni personalizzate, puoi specificare la chiave API e la chiave segreta utilizzando parametri di ricerca nel seguente formato:
ENDPOINT_URL?key=API_KEY&secret=SECRET
Sostituisci quanto segue:
ENDPOINT_URL
: l'URL dell'endpoint del feed.API_KEY
: la chiave API per l'autenticazione in Google Security Operations.SECRET
: la chiave segreta che hai generato per autenticare il feed.
Configurare il webhook Palo Alto Prisma Cloud per Google SecOps
- Accedi a Palo Alto Prisma Cloud.
- Seleziona Impostazioni > Integrazioni e notifiche ((and_then)) Integrazioni.
- Fai clic su Aggiungi integrazione.
- Seleziona Webhook.
- Specifica i valori per i seguenti parametri di input:
- Nome integrazione: fornisci un nome univoco e descrittivo (ad esempio Google SecOps).
- URL webhook: inserisci ENDPOINT_URL.
- (Facoltativo) Fornisci una descrizione dell'integrazione.
- (Facoltativo) Attiva Payload personalizzato > fai clic su Avanti per esaminare o modificare il payload personalizzato.
- Fai clic su Avanti.
- Testa e Salva integrazione.
Configurare gli avvisi di Palo Alto Prisma Cloud
- Nella console Palo Alto Prisma Cloud, vai a Avvisi > Visualizza regole di avviso.
- Seleziona una regola di avviso esistente da modificare.
- (Facoltativo) Crea nuovo avviso per Cloud Infrastructure.
- (Facoltativo) Crea nuovo avviso per Carico di lavoro cloud.
- Vai a Configura notifiche.
- Seleziona Webhook.
- (Facoltativo) Seleziona i canali a cui vuoi inviare notifiche degli avvisi attivati dalla regola di avviso.
- Fai clic su Avanti.
- Fai clic su Salva.
Tabella di mappatura UDM
Campo log | Mappatura UDM | Logica |
---|---|---|
accountId |
target.resource.id |
Il valore di accountId dal log non elaborato. |
accountId |
target.resource.product_object_id |
Il valore di accountId dal log non elaborato. Questa azione sostituisce il campo resource.id deprecato. |
alertId |
security_result.detection_fields[].key |
La chiave è impostata su "alert id". |
alertId |
security_result.detection_fields[].value |
Il valore di alertId dal log non elaborato. |
alertRuleId |
security_result.rule_id |
Il valore di alertRuleId dal log non elaborato. |
alertRuleName |
security_result.rule_name |
Il valore di alertRuleName dal log non elaborato. |
alertStatus |
security_result.detection_fields[].key |
La chiave è impostata su "stato avviso". |
alertStatus |
security_result.detection_fields[].value |
Il valore di alertStatus dal log non elaborato. |
alertTs |
security_result.detection_fields[].key |
La chiave è impostata su "alertTs". |
alertTs |
security_result.detection_fields[].value |
Il valore di alertTs dal log non elaborato, convertito in una stringa. |
callbackUrl |
metadata.url_back_to_product |
Il valore di callbackUrl dal log non elaborato. |
cloudType |
principal.cloud.environment |
Se cloudType è "gcp" (non è sensibile alle maiuscole), il valore viene impostato su "GOOGLE_CLOUD_PLATFORM". |
complianceMetadata[].complianceId |
security_result.detection_fields[].key |
La chiave è impostata su "complianceId". |
complianceMetadata[].complianceId |
security_result.detection_fields[].value |
Il valore di complianceMetadata[].complianceId dal log non elaborato. |
complianceMetadata[].customAssigned |
security_result.detection_fields[].key |
La chiave è impostata su "customAssigned". |
complianceMetadata[].customAssigned |
security_result.detection_fields[].value |
Il valore di complianceMetadata[].customAssigned dal log non elaborato, convertito in una stringa. |
complianceMetadata[].policyId |
security_result.detection_fields[].key |
La chiave è impostata su "ID criterio". |
complianceMetadata[].policyId |
security_result.detection_fields[].value |
Il valore di complianceMetadata[].policyId dal log non elaborato. |
complianceMetadata[].requirementId |
security_result.rule_id |
Il valore di complianceMetadata[].requirementId dal log non elaborato. |
complianceMetadata[].requirementName |
security_result.summary |
Il valore di complianceMetadata[].requirementName dal log non elaborato. |
complianceMetadata[].requirementViewOrder |
security_result.detection_fields[].key |
La chiave è impostata su "requirementViewOrder". |
complianceMetadata[].requirementViewOrder |
security_result.detection_fields[].value |
Il valore di complianceMetadata[].requirementViewOrder dal log non elaborato, convertito in una stringa. |
complianceMetadata[].sectionDescription |
security_result.detection_fields[].key |
La chiave è impostata su "sectionDescription". |
complianceMetadata[].sectionDescription |
security_result.detection_fields[].value |
Il valore di complianceMetadata[].sectionDescription dal log non elaborato. |
complianceMetadata[].sectionId |
security_result.detection_fields[].key |
La chiave è impostata su "sectionId". |
complianceMetadata[].sectionId |
security_result.detection_fields[].value |
Il valore di complianceMetadata[].sectionId dal log non elaborato. |
complianceMetadata[].sectionLabel |
security_result.detection_fields[].key |
La chiave è impostata su "sectionLabel". |
complianceMetadata[].sectionLabel |
security_result.detection_fields[].value |
Il valore di complianceMetadata[].sectionLabel dal log non elaborato. |
complianceMetadata[].sectionViewOrder |
security_result.detection_fields[].key |
La chiave è impostata su "sectionViewOrder". |
complianceMetadata[].sectionViewOrder |
security_result.detection_fields[].value |
Il valore di complianceMetadata[].sectionViewOrder dal log non elaborato, convertito in una stringa. |
complianceMetadata[].standardDescription |
security_result.detection_fields[].key |
La chiave è impostata su "standardDescription". |
complianceMetadata[].standardDescription |
security_result.detection_fields[].value |
Il valore di complianceMetadata[].standardDescription dal log non elaborato. |
complianceMetadata[].standardName |
security_result.rule_name |
Il valore di complianceMetadata[].standardName dal log non elaborato. |
complianceMetadata[].systemDefault |
security_result.detection_fields[].key |
La chiave è impostata su "systemDefault". |
complianceMetadata[].systemDefault |
security_result.detection_fields[].value |
Il valore di complianceMetadata[].systemDefault dal log non elaborato, convertito in una stringa. |
create_time |
metadata.event_timestamp , events[].timestamp |
Il valore di create_time dal log non elaborato. |
data.allocationId |
principal.resource.product_object_id |
Il valore di data.allocationId dal log non elaborato. |
data.publicIp |
principal.ip |
Il valore di data.publicIp dal log non elaborato. |
deleted |
additional.fields[].key |
La chiave è impostata su "deleted". |
deleted |
additional.fields[].value.string_value |
Il valore di deleted dal log non elaborato, convertito in una stringa. |
description |
metadata.description |
Il valore di description dal log non elaborato. |
firstSeen |
principal.asset.first_seen_time |
Il valore di firstSeen dal log non elaborato, analizzato come timestamp (formato UNIX_MS o UNIX). |
hasFinding |
security_result.detection_fields[].key |
La chiave è impostata su "hasFinding". |
hasFinding |
security_result.detection_fields[].value |
Il valore di hasFinding dal log non elaborato, convertito in una stringa. |
lastSeen |
principal.asset.last_discover_time |
Il valore di lastSeen dal log non elaborato, analizzato come timestamp (formato UNIX_MS o UNIX). |
N/D | metadata.event_type |
Impostato su "USER_RESOURCE_ACCESS" se non è sostituito da un tipo di evento specifico del log. In caso contrario, impostalo su "GENERIC_EVENT". |
N/D | metadata.product_name |
Hardcoded su "CASB". |
N/D | metadata.vendor_name |
Hardcoded su "Palo Alto Networks". |
policyDescription |
security_result.detection_fields[].key |
La chiave è impostata su "policyDescription". |
policyDescription |
security_result.detection_fields[].value |
Il valore di policyDescription dal log non elaborato. |
policyId |
security_result.detection_fields[].key |
La chiave è impostata su "ID criterio". |
policyId |
security_result.detection_fields[].value |
Il valore di policyId dal log non elaborato. |
policyLabels |
additional.fields[].key |
La chiave è impostata su "policyLabels". |
policyLabels |
additional.fields[].value.string_value |
Il valore di policyLabels dal log non elaborato. |
policyName |
security_result.description |
Il valore di policyName dal log non elaborato. |
policyRecommendation |
security_result.detection_fields[].key |
La chiave è impostata su "policy recommendation". |
policyRecommendation |
security_result.detection_fields[].value |
Il valore di policyRecommendation dal log non elaborato. |
policyType |
security_result.detection_fields[].key |
La chiave è impostata su "Tipo di norma". |
policyType |
security_result.detection_fields[].value |
Il valore di policyType dal log non elaborato. |
reason |
security_result.summary |
Il valore di reason dal log non elaborato. |
recommendation |
security_result.detection_fields[].key |
La chiave è impostata su "Consiglio". |
recommendation |
security_result.detection_fields[].value |
Il valore di recommendation dal log non elaborato. |
resource.additionalInfo |
principal.resource.attribute.labels[].key |
La chiave è impostata su "resource additionalInfo". |
resource.additionalInfo |
principal.resource.attribute.labels[].value |
Il valore di resource.additionalInfo dal log non elaborato. |
resource.cloudAccountGroups |
principal.resource.attribute.labels[].key |
La chiave è impostata su "resource cloudAccountGroups {index}". |
resource.cloudAccountGroups |
principal.resource.attribute.labels[].value |
Il valore di resource.cloudAccountGroups[] dal log non elaborato. |
resource.cloudType |
principal.resource.attribute.labels[].key |
La chiave è impostata su "resource cloudType". |
resource.cloudType |
principal.resource.attribute.labels[].value |
Il valore di resource.cloudType dal log non elaborato. |
resource.data |
principal.resource.attribute.labels[].key |
La chiave è impostata su "resource data {nested_key}". |
resource.data |
principal.resource.attribute.labels[].value |
Il valore di resource.data[] dal log non elaborato. |
resource.id |
principal.resource.product_object_id |
Il valore di resource.id dal log non elaborato. |
resource.name |
principal.resource.name |
Il valore di resource.name dal log non elaborato. |
resource.region |
principal.location.country_or_region |
Il valore di resource.region dal log non elaborato. |
resource.regionId |
principal.cloud.availability_zone |
Il valore di resource.regionId dal log non elaborato. |
resource.resourceApiName |
principal.resource.attribute.labels[].key |
La chiave è impostata su "resource resourceApiName". |
resource.resourceApiName |
principal.resource.attribute.labels[].value |
Il valore di resource.resourceApiName dal log non elaborato. |
resource.resourceTags |
principal.resource.attribute.labels[].key |
La chiave è impostata su "resource resourceTags {nested_key}". |
resource.resourceTags |
principal.resource.attribute.labels[].value |
Il valore di resource.resourceTags[] dal log non elaborato. |
resource.resourceTs |
principal.resource.attribute.labels[].key |
La chiave è impostata su "resource resourceTs". |
resource.resourceTs |
principal.resource.attribute.labels[].value |
Il valore di resource.resourceTs dal log non elaborato. |
resource.resourceType |
principal.resource.attribute.labels[].key |
La chiave è impostata su "resource resourceType". |
resource.resourceType |
principal.resource.attribute.labels[].value |
Il valore di resource.resourceType dal log non elaborato. |
resource.rrn |
principal.resource.attribute.labels[].key |
La chiave è impostata su "resource rrn". |
resource.rrn |
principal.resource.attribute.labels[].value |
Il valore di resource.rrn dal log non elaborato. |
resource.url |
principal.url |
Il valore di resource.url dal log non elaborato. |
resourceCloudService |
principal.resource.attribute.labels[].key |
La chiave è impostata su "resource cloud service". |
resourceCloudService |
principal.resource.attribute.labels[].value |
Il valore di resourceCloudService dal log non elaborato. |
resourceName |
principal.resource.name |
Il valore di resourceName dal log non elaborato. |
resourceRegion |
principal.location.country_or_region |
Il valore di resourceRegion dal log non elaborato. |
resourceRegionId |
principal.cloud.availability_zone |
Il valore di resourceRegionId dal log non elaborato. |
resourceType |
target.resource.resource_subtype |
Il valore di resourceType dal log non elaborato. |
severity |
security_result.severity |
Il valore di severity dal log non elaborato, convertito in maiuscolo. Mappati ai valori di gravità UDM (CRITICAL, HIGH, MEDIUM, LOW, INFORMATIONAL). |
source |
principal.application |
Il valore di source dal log non elaborato. |
unifiedAssetId |
principal.asset.asset_id |
Il valore di unifiedAssetId dal log non elaborato, preceduto dal prefisso "ASSETID:". |
Modifiche
2023-12-10
- È stato aggiunto un pattern Grok per estrarre la parte JSON.
- "resourceId" è stato mappato a "principal.resource.product_object_id".
- "account_id" è stato mappato a "target.resource.product_object_id".
- "alertRuleName" è stato mappato a "security_result.rule_name".
- "accountName" è stato mappato a "target.resource.name".
- "hasFinding" è stato mappato a "security_result.detection_fields".
- "resourceRegionId" è stato mappato a "principal.cloud.availability_zone".
- "source" è stato mappato a "principal.application".
- "callbackUrl" è stato mappato a "metadata.url_back_to_product".
- "alertRuleId" è stato mappato a "security_result.rule_id".
- "alertId" è stato mappato a "security_result.detection_fields".
- "policyLabels" è stato mappato a "additional.fields".
- "policyName" è stato mappato a "security_result.description".
- "resourceName" è stato mappato a "principal.resource.name".
- "resourceRegion" è stato mappato a "principal.location.country_or_region".
- "policyDescription" è stato mappato a "security_result.detection_fields".
- "policyRecommendation" è stato mappato a "security_result.detection_fields".
- "resourceCloudService" è stato mappato a "principal.resource.attribute.labels".
- "resource.url" è stato mappato a "principal.url".
- "alertTs" è stato mappato a "security_result.detection_fields".
- "firstSeen" è stato mappato a "principal.asset.first_seen_time".
- "lastSeen" è stato mappato a "principal.asset.last_discover_time".
- "reason" è stato mappato a "security_result.summary".
- "alertStatus" è stato mappato a "security_result.detection_fields".
- Se il valore "severity" è "HIGH", imposta "security_result.severity" su "HIGH".
- Se il valore "cloudType" è "gcp", imposta "principal.cloud.environment" su "GOOGLE_CLOUD_PLATFORM".
2023-08-17
- Parser appena creato.