Collecter les journaux d'alertes Palo Alto Prisma Cloud
Présentation
Cet analyseur extrait les journaux d'alertes de Palo Alto Prisma Cloud au format JSON, puis les transforme dans l'UDM. L'analyseur effectue la normalisation des données, les conversions de type et la logique conditionnelle pour renseigner les champs UDM appropriés. Il gère également les structures et les tableaux JSON imbriqués dans les données de journal pour extraire les informations pertinentes.
Avant de commencer
- Assurez-vous de disposer d'une instance Google SecOps.
- Assurez-vous de disposer d'un accès privilégié à Palo Alto Prisma Cloud.
Configurer un flux dans Google SecOps pour ingérer les alertes Palo Alto Prisma Cloud
- Accédez à Paramètres du SIEM > Flux.
- Cliquez sur Ajouter.
- Dans le champ Nom du flux, saisissez un nom pour le flux (par exemple, Alertes PAN Prisma Cloud).
- Sélectionnez Webhook comme type de source.
- Sélectionnez Charge utile des alertes Palo Alto Prisma Cloud comme Type de journal.
- Cliquez sur Suivant.
- Facultatif: spécifiez des valeurs pour les paramètres d'entrée suivants :
- Délimiteur de fractionnement: délimiteur utilisé pour séparer les lignes de journal, par exemple
\n
. - Espace de noms des éléments: espace de noms des éléments.
- Libellés d'ingestion: libellé appliqué aux événements de ce flux.
- Délimiteur de fractionnement: délimiteur utilisé pour séparer les lignes de journal, par exemple
- Cliquez sur Suivant.
- Vérifiez la configuration du flux dans l'écran Finaliser, puis cliquez sur Envoyer.
- Cliquez sur Générer une clé secrète pour générer une clé secrète permettant d'authentifier ce flux.
- Copiez et stockez la clé secrète. Vous ne pourrez plus afficher cette clé secrète. Si nécessaire, vous pouvez générer une nouvelle clé secrète, mais cette action rend l'ancienne clé secrète obsolète.
- Dans l'onglet Détails, copiez l'URL du point de terminaison du flux dans le champ Informations sur le point de terminaison. Vous devez spécifier cette URL de point de terminaison dans votre application cliente.
- Cliquez sur OK.
Créer une clé API pour le flux webhook
Accédez à la console Google Cloud > Identifiants.
Cliquez sur Créer des identifiants, puis sélectionnez Clé API.
Limitez l'accès de la clé API à l'API Google Security Operations.
Spécifier l'URL du point de terminaison
- Dans votre application cliente, spécifiez l'URL du point de terminaison HTTPS fournie dans le flux de webhook.
Activez l'authentification en spécifiant la clé API et la clé secrète dans l'en-tête personnalisé au format suivant:
X-goog-api-key = API_KEY X-Webhook-Access-Key = SECRET
Recommandation: Spécifiez la clé API en tant qu'en-tête plutôt que dans l'URL.
Si votre client webhook n'est pas compatible avec les en-têtes personnalisés, vous pouvez spécifier la clé API et la clé secrète à l'aide de paramètres de requête au format suivant:
ENDPOINT_URL?key=API_KEY&secret=SECRET
Remplacez les éléments suivants :
ENDPOINT_URL
: URL du point de terminaison du flux.API_KEY
: clé API permettant de s'authentifier auprès de Google Security Operations.SECRET
: clé secrète que vous avez générée pour authentifier le flux.
Configurer le webhook Palo Alto Prisma Cloud pour Google SecOps
- Connectez-vous à Palo Alto Prisma Cloud.
- Sélectionnez Paramètres > Intégrations et notifications ((and_then)) Intégrations.
- Cliquez sur Ajouter une intégration.
- Sélectionnez Webhook.
- Spécifiez les valeurs des paramètres d'entrée suivants :
- Nom de l'intégration: indiquez un nom unique et descriptif (par exemple, Google SecOps).
- URL du webhook: saisissez ENDPOINT_URL.
- Facultatif: Fournissez une description de l'intégration.
- Facultatif: Activez Charge utile personnalisée > cliquez sur Suivant pour examiner ou modifier la charge utile personnalisée.
- Cliquez sur Suivant.
- Testez et Enregistrez l'intégration.
Configurer les alertes Palo Alto Prisma Cloud
- Dans la console Palo Alto Prisma Cloud, accédez à Alertes > Afficher les règles d'alerte.
- Sélectionnez une règle d'alerte existante à modifier.
- Facultatif: Créez une alerte pour Cloud Infrastructure.
- Facultatif: Créez une alerte pour Charge de travail dans le cloud.
- Accédez à Configurer les notifications.
- Sélectionnez Webhook.
- Facultatif: Sélectionnez les canaux auxquels vous souhaitez envoyer des notifications d'alertes déclenchées par la règle d'alerte.
- Cliquez sur Suivant.
- Cliquez sur Enregistrer.
Tableau de mappage UDM
Champ de journal | Mappage UDM | Logique |
---|---|---|
accountId |
target.resource.id |
Valeur de accountId dans le journal brut. |
accountId |
target.resource.product_object_id |
Valeur de accountId dans le journal brut. Cela remplace le champ resource.id , obsolète. |
alertId |
security_result.detection_fields[].key |
La clé est définie sur "alert id". |
alertId |
security_result.detection_fields[].value |
Valeur de alertId dans le journal brut. |
alertRuleId |
security_result.rule_id |
Valeur de alertRuleId dans le journal brut. |
alertRuleName |
security_result.rule_name |
Valeur de alertRuleName dans le journal brut. |
alertStatus |
security_result.detection_fields[].key |
La clé est définie sur "état de l'alerte". |
alertStatus |
security_result.detection_fields[].value |
Valeur de alertStatus dans le journal brut. |
alertTs |
security_result.detection_fields[].key |
La clé est définie sur "alertTs". |
alertTs |
security_result.detection_fields[].value |
Valeur de alertTs à partir du journal brut, convertie en chaîne. |
callbackUrl |
metadata.url_back_to_product |
Valeur de callbackUrl dans le journal brut. |
cloudType |
principal.cloud.environment |
Si cloudType est "gcp" (insensible à la casse), la valeur est définie sur "GOOGLE_CLOUD_PLATFORM". |
complianceMetadata[].complianceId |
security_result.detection_fields[].key |
La clé est définie sur "complianceId". |
complianceMetadata[].complianceId |
security_result.detection_fields[].value |
Valeur de complianceMetadata[].complianceId dans le journal brut. |
complianceMetadata[].customAssigned |
security_result.detection_fields[].key |
La clé est définie sur "customAssigned". |
complianceMetadata[].customAssigned |
security_result.detection_fields[].value |
Valeur de complianceMetadata[].customAssigned à partir du journal brut, convertie en chaîne. |
complianceMetadata[].policyId |
security_result.detection_fields[].key |
La clé est définie sur "ID de règle". |
complianceMetadata[].policyId |
security_result.detection_fields[].value |
Valeur de complianceMetadata[].policyId dans le journal brut. |
complianceMetadata[].requirementId |
security_result.rule_id |
Valeur de complianceMetadata[].requirementId dans le journal brut. |
complianceMetadata[].requirementName |
security_result.summary |
Valeur de complianceMetadata[].requirementName dans le journal brut. |
complianceMetadata[].requirementViewOrder |
security_result.detection_fields[].key |
La clé est définie sur "requirementViewOrder". |
complianceMetadata[].requirementViewOrder |
security_result.detection_fields[].value |
Valeur de complianceMetadata[].requirementViewOrder à partir du journal brut, convertie en chaîne. |
complianceMetadata[].sectionDescription |
security_result.detection_fields[].key |
La clé est définie sur "sectionDescription". |
complianceMetadata[].sectionDescription |
security_result.detection_fields[].value |
Valeur de complianceMetadata[].sectionDescription dans le journal brut. |
complianceMetadata[].sectionId |
security_result.detection_fields[].key |
La clé est définie sur "sectionId". |
complianceMetadata[].sectionId |
security_result.detection_fields[].value |
Valeur de complianceMetadata[].sectionId dans le journal brut. |
complianceMetadata[].sectionLabel |
security_result.detection_fields[].key |
La clé est définie sur "sectionLabel". |
complianceMetadata[].sectionLabel |
security_result.detection_fields[].value |
Valeur de complianceMetadata[].sectionLabel dans le journal brut. |
complianceMetadata[].sectionViewOrder |
security_result.detection_fields[].key |
La clé est définie sur "sectionViewOrder". |
complianceMetadata[].sectionViewOrder |
security_result.detection_fields[].value |
Valeur de complianceMetadata[].sectionViewOrder à partir du journal brut, convertie en chaîne. |
complianceMetadata[].standardDescription |
security_result.detection_fields[].key |
La clé est définie sur "standardDescription". |
complianceMetadata[].standardDescription |
security_result.detection_fields[].value |
Valeur de complianceMetadata[].standardDescription dans le journal brut. |
complianceMetadata[].standardName |
security_result.rule_name |
Valeur de complianceMetadata[].standardName dans le journal brut. |
complianceMetadata[].systemDefault |
security_result.detection_fields[].key |
La clé est définie sur "systemDefault". |
complianceMetadata[].systemDefault |
security_result.detection_fields[].value |
Valeur de complianceMetadata[].systemDefault à partir du journal brut, convertie en chaîne. |
create_time |
metadata.event_timestamp , events[].timestamp |
Valeur de create_time dans le journal brut. |
data.allocationId |
principal.resource.product_object_id |
Valeur de data.allocationId dans le journal brut. |
data.publicIp |
principal.ip |
Valeur de data.publicIp dans le journal brut. |
deleted |
additional.fields[].key |
La clé est définie sur "deleted". |
deleted |
additional.fields[].value.string_value |
Valeur de deleted à partir du journal brut, convertie en chaîne. |
description |
metadata.description |
Valeur de description dans le journal brut. |
firstSeen |
principal.asset.first_seen_time |
Valeur de firstSeen dans le journal brut, analysée en tant que code temporel (format UNIX_MS ou UNIX). |
hasFinding |
security_result.detection_fields[].key |
La clé est définie sur "hasFinding". |
hasFinding |
security_result.detection_fields[].value |
Valeur de hasFinding à partir du journal brut, convertie en chaîne. |
lastSeen |
principal.asset.last_discover_time |
Valeur de lastSeen dans le journal brut, analysée en tant que code temporel (format UNIX_MS ou UNIX). |
N/A | metadata.event_type |
Défini sur "USER_RESOURCE_ACCESS" si aucun type d'événement spécifique du journal ne le remplace. Sinon, définissez-le sur "GENERIC_EVENT". |
N/A | metadata.product_name |
Code dur "CASB". |
N/A | metadata.vendor_name |
Code dur "Palo Alto Networks". |
policyDescription |
security_result.detection_fields[].key |
La clé est définie sur "policyDescription". |
policyDescription |
security_result.detection_fields[].value |
Valeur de policyDescription dans le journal brut. |
policyId |
security_result.detection_fields[].key |
La clé est définie sur "ID de règle". |
policyId |
security_result.detection_fields[].value |
Valeur de policyId dans le journal brut. |
policyLabels |
additional.fields[].key |
La clé est définie sur "policyLabels". |
policyLabels |
additional.fields[].value.string_value |
Valeur de policyLabels dans le journal brut. |
policyName |
security_result.description |
Valeur de policyName dans le journal brut. |
policyRecommendation |
security_result.detection_fields[].key |
La clé est définie sur "recommandation de règles". |
policyRecommendation |
security_result.detection_fields[].value |
Valeur de policyRecommendation dans le journal brut. |
policyType |
security_result.detection_fields[].key |
La clé est définie sur "Type de règle". |
policyType |
security_result.detection_fields[].value |
Valeur de policyType dans le journal brut. |
reason |
security_result.summary |
Valeur de reason dans le journal brut. |
recommendation |
security_result.detection_fields[].key |
La clé est définie sur "Recommandation". |
recommendation |
security_result.detection_fields[].value |
Valeur de recommendation dans le journal brut. |
resource.additionalInfo |
principal.resource.attribute.labels[].key |
La clé est définie sur "resource additionalInfo". |
resource.additionalInfo |
principal.resource.attribute.labels[].value |
Valeur de resource.additionalInfo dans le journal brut. |
resource.cloudAccountGroups |
principal.resource.attribute.labels[].key |
La clé est définie sur "resource cloudAccountGroups {index}". |
resource.cloudAccountGroups |
principal.resource.attribute.labels[].value |
Valeur de resource.cloudAccountGroups[] dans le journal brut. |
resource.cloudType |
principal.resource.attribute.labels[].key |
La clé est définie sur "resource cloudType". |
resource.cloudType |
principal.resource.attribute.labels[].value |
Valeur de resource.cloudType dans le journal brut. |
resource.data |
principal.resource.attribute.labels[].key |
La clé est définie sur "données de ressources {nested_key}". |
resource.data |
principal.resource.attribute.labels[].value |
Valeur de resource.data[] dans le journal brut. |
resource.id |
principal.resource.product_object_id |
Valeur de resource.id dans le journal brut. |
resource.name |
principal.resource.name |
Valeur de resource.name dans le journal brut. |
resource.region |
principal.location.country_or_region |
Valeur de resource.region dans le journal brut. |
resource.regionId |
principal.cloud.availability_zone |
Valeur de resource.regionId dans le journal brut. |
resource.resourceApiName |
principal.resource.attribute.labels[].key |
La clé est définie sur "resource resourceApiName". |
resource.resourceApiName |
principal.resource.attribute.labels[].value |
Valeur de resource.resourceApiName dans le journal brut. |
resource.resourceTags |
principal.resource.attribute.labels[].key |
La clé est définie sur "resource resourceTags {nested_key}". |
resource.resourceTags |
principal.resource.attribute.labels[].value |
Valeur de resource.resourceTags[] dans le journal brut. |
resource.resourceTs |
principal.resource.attribute.labels[].key |
La clé est définie sur "resource resourceTs". |
resource.resourceTs |
principal.resource.attribute.labels[].value |
Valeur de resource.resourceTs dans le journal brut. |
resource.resourceType |
principal.resource.attribute.labels[].key |
La clé est définie sur "resource resourceType". |
resource.resourceType |
principal.resource.attribute.labels[].value |
Valeur de resource.resourceType dans le journal brut. |
resource.rrn |
principal.resource.attribute.labels[].key |
La clé est définie sur "resource rrn". |
resource.rrn |
principal.resource.attribute.labels[].value |
Valeur de resource.rrn dans le journal brut. |
resource.url |
principal.url |
Valeur de resource.url dans le journal brut. |
resourceCloudService |
principal.resource.attribute.labels[].key |
La clé est définie sur "service cloud de ressources". |
resourceCloudService |
principal.resource.attribute.labels[].value |
Valeur de resourceCloudService dans le journal brut. |
resourceName |
principal.resource.name |
Valeur de resourceName dans le journal brut. |
resourceRegion |
principal.location.country_or_region |
Valeur de resourceRegion dans le journal brut. |
resourceRegionId |
principal.cloud.availability_zone |
Valeur de resourceRegionId dans le journal brut. |
resourceType |
target.resource.resource_subtype |
Valeur de resourceType dans le journal brut. |
severity |
security_result.severity |
Valeur de severity dans le journal brut, convertie en majuscules. Correspond aux valeurs de gravité UDM (CRITICAL, HIGH, MEDIUM, LOW, INFORMATIONAL). |
source |
principal.application |
Valeur de source dans le journal brut. |
unifiedAssetId |
principal.asset.asset_id |
Valeur de unifiedAssetId dans le journal brut, précédée du préfixe "ASSETID:". |
Modifications
2023-12-10
- Ajout d'un modèle Grok pour extraire la partie JSON.
- "resourceId" a été mappé sur "principal.resource.product_object_id".
- "accountId" a été mappé sur "target.resource.product_object_id".
- "alertRuleName" a été mappé sur "security_result.rule_name".
- "accountName" a été mappé sur "target.resource.name".
- Mappage de "hasFinding" sur "security_result.detection_fields".
- Mappage de "resourceRegionId" sur "principal.cloud.availability_zone".
- Mappage de "source" sur "principal.application".
- Mappage de "callbackUrl" sur "metadata.url_back_to_product".
- Mappage de "alertRuleId" sur "security_result.rule_id".
- Mappage de "alertId" sur "security_result.detection_fields".
- Mappage de "policyLabels" sur "additional.fields".
- Mappage de "policyName" sur "security_result.description".
- "resourceName" a été mappé sur "principal.resource.name".
- "resourceRegion" a été mappé sur "principal.location.country_or_region".
- Mappage de "policyDescription" sur "security_result.detection_fields".
- Mappage de "policyRecommendation" sur "security_result.detection_fields".
- Mappage de "resourceCloudService" sur "principal.resource.attribute.labels".
- Mappage de "resource.url" sur "principal.url".
- Mappage de "alertTs" sur "security_result.detection_fields".
- Mappage de "firstSeen" sur "principal.asset.first_seen_time".
- Mappage de "lastSeen" sur "principal.asset.last_discover_time".
- Mappage de "reason" sur "security_result.summary".
- Mappage de "alertStatus" sur "security_result.detection_fields".
- Si la valeur de "severity" est "HIGH", définissez "security_result.severity" sur "HIGH".
- Si la valeur de "cloudType" est "gcp", définissez "principal.cloud.environment" sur "GOOGLE_CLOUD_PLATFORM".
2023-08-17
- Analyseur nouvellement créé.