Collecter les journaux d'alertes Prisma Cloud de Palo Alto
Présentation
Cet analyseur extrait les journaux d'alerte de Palo Alto Prisma Cloud au format JSON et les transforme en UDM. L'analyseur effectue la normalisation des données, les conversions de type et la logique conditionnelle pour remplir les champs UDM appropriés. Il gère également les structures et les tableaux JSON imbriqués dans les données de journaux pour extraire les informations pertinentes.
Avant de commencer
Assurez-vous de remplir les conditions préalables suivantes :
- Instance Google SecOps.
- Accès privilégié à Palo Alto Prisma Cloud.
Configurer des flux
Il existe deux points d'entrée différents pour configurer les flux dans la plate-forme Google SecOps :
- Paramètres SIEM> Flux
- Plate-forme de contenu > Packs de contenu
Configurer des flux à partir de Paramètres SIEM > Flux
Pour configurer un flux, procédez comme suit :
- Accédez à Paramètres SIEM > Flux.
- Cliquez sur Add New Feed (Ajouter un flux).
- Sur la page suivante, cliquez sur Configurer un seul flux.
- 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 les valeurs des paramètres d'entrée suivants :
- Délimiteur de fractionnement : délimiteur utilisé pour séparer les lignes de journaux, tel que
\n
.
- Délimiteur de fractionnement : délimiteur utilisé pour séparer les lignes de journaux, tel que
- Cliquez sur Suivant.
- Vérifiez la configuration du flux sur 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 l'ancienne deviendra obsolète.
- Dans l'onglet Détails, copiez l'URL du point de terminaison du flux à partir du champ Informations sur le point de terminaison. Vous devez spécifier cette URL de point de terminaison dans votre application cliente.
- Cliquez sur OK.
Configurer des flux depuis le Hub de contenu
Indiquez les valeurs des champs suivants :
- Délimiteur de fractionnement : délimiteur utilisé pour séparer les lignes de journaux, tel que
\n
.
Options avancées
- Nom du flux : valeur préremplie qui identifie le flux.
- Type de source : méthode utilisée pour collecter les journaux dans Google SecOps.
- Espace de noms de l'élément : espace de noms associé au flux.
Libellés d'ingestion : libellés appliqués à tous les événements de ce flux.
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 l'ancienne deviendra obsolète.
Dans l'onglet Détails, copiez l'URL du point de terminaison du flux à partir du champ Informations sur le point de terminaison. Vous devez spécifier cette URL de point de terminaison dans votre application cliente.
Créer une clé API pour le flux de webhook
Accédez à la consoleGoogle Cloud > Identifiants.
Cliquez sur Créer des identifiants, puis sélectionnez Clé API.
Restreignez l'accès à 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 au lieu de la spécifier dans l'URL.
Si votre client de webhook n'accepte pas 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 pour 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 Add Integration (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 de 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.
- Tester et Enregistrer l'intégration.
Configurer les alertes Palo Alto Prisma Cloud
- Dans la console Palo Alto Prisma Cloud, accédez à Alerts > View Alert Rules.
- Sélectionnez une règle d'alerte existante à modifier.
- Facultatif : créez une alerte pour Infrastructure cloud.
- Facultatif : Créez une alerte pour Charge de travail cloud.
- Accédez à Configurer les notifications.
- Sélectionnez Webhook.
- Facultatif : Sélectionnez les canaux sur lesquels vous souhaitez envoyer des notifications d'alertes déclenchées par la règle d'alerte.
- Cliquez sur Suivant.
- Cliquez sur Enregistrer.
Table de mappage UDM
Champ de journal | Mappage UDM | Logique |
---|---|---|
accountId |
target.resource.id |
Valeur de accountId à partir du journal brut. |
accountId |
target.resource.product_object_id |
Valeur de accountId à partir du journal brut. Cela remplace le champ resource.id , désormais 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 à partir du journal brut. |
alertRuleId |
security_result.rule_id |
Valeur de alertRuleId à partir du journal brut. |
alertRuleName |
security_result.rule_name |
Valeur de alertRuleName à partir du journal brut. |
alertStatus |
security_result.detection_fields[].key |
La clé est définie sur "alert status". |
alertStatus |
security_result.detection_fields[].value |
Valeur de alertStatus à partir du journal brut. |
alertTs |
security_result.detection_fields[].key |
La clé est définie sur "alertTs". |
alertTs |
security_result.detection_fields[].value |
Valeur de alertTs du journal brut, convertie en chaîne. |
callbackUrl |
metadata.url_back_to_product |
Valeur de callbackUrl à partir du journal brut. |
cloudType |
principal.cloud.environment |
Si cloudType est défini sur "gcp" (sans tenir compte de 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 à partir du 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 du journal brut, convertie en chaîne. |
complianceMetadata[].policyId |
security_result.detection_fields[].key |
La clé est définie sur "ID de la règle". |
complianceMetadata[].policyId |
security_result.detection_fields[].value |
Valeur de complianceMetadata[].policyId à partir du journal brut. |
complianceMetadata[].requirementId |
security_result.rule_id |
Valeur de complianceMetadata[].requirementId à partir du journal brut. |
complianceMetadata[].requirementName |
security_result.summary |
Valeur de complianceMetadata[].requirementName à partir du 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 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 à partir du 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 à partir du 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 à partir du 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 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 à partir du journal brut. |
complianceMetadata[].standardName |
security_result.rule_name |
Valeur de complianceMetadata[].standardName à partir du 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 du journal brut, convertie en chaîne. |
create_time |
metadata.event_timestamp , events[].timestamp |
Valeur de create_time à partir du journal brut. |
data.allocationId |
principal.resource.product_object_id |
Valeur de data.allocationId à partir du journal brut. |
data.publicIp |
principal.ip |
Valeur de data.publicIp à partir du journal brut. |
deleted |
additional.fields[].key |
La clé est définie sur "supprimée". |
deleted |
additional.fields[].value.string_value |
Valeur de deleted du journal brut, convertie en chaîne. |
description |
metadata.description |
Valeur de description à partir du journal brut. |
firstSeen |
principal.asset.first_seen_time |
Valeur de firstSeen du 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 du journal brut, convertie en chaîne. |
lastSeen |
principal.asset.last_discover_time |
Valeur de lastSeen du journal brut, analysée en tant que code temporel (format UNIX_MS ou UNIX). |
N/A | metadata.event_type |
Définissez 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 |
Codé en dur sur "CASB". |
N/A | metadata.vendor_name |
Codé en dur sur "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 à partir du journal brut. |
policyId |
security_result.detection_fields[].key |
La clé est définie sur "ID de la règle". |
policyId |
security_result.detection_fields[].value |
Valeur de policyId à partir du journal brut. |
policyLabels |
additional.fields[].key |
La clé est définie sur "policyLabels". |
policyLabels |
additional.fields[].value.string_value |
Valeur de policyLabels à partir du journal brut. |
policyName |
security_result.description |
Valeur de policyName à partir du journal brut. |
policyRecommendation |
security_result.detection_fields[].key |
La clé est définie sur "policy recommendation". |
policyRecommendation |
security_result.detection_fields[].value |
Valeur de policyRecommendation à partir du journal brut. |
policyType |
security_result.detection_fields[].key |
La clé est définie sur "Type de règlement". |
policyType |
security_result.detection_fields[].value |
Valeur de policyType à partir du journal brut. |
reason |
security_result.summary |
Valeur de reason à partir du journal brut. |
recommendation |
security_result.detection_fields[].key |
La clé est définie sur "Recommendation" (Recommandation). |
recommendation |
security_result.detection_fields[].value |
Valeur de recommendation à partir du 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 à partir du 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[] à partir du 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 à partir du journal brut. |
resource.data |
principal.resource.attribute.labels[].key |
La clé est définie sur "resource data {nested_key}". |
resource.data |
principal.resource.attribute.labels[].value |
Valeur de resource.data[] à partir du journal brut. |
resource.id |
principal.resource.product_object_id |
Valeur de resource.id à partir du journal brut. |
resource.name |
principal.resource.name |
Valeur de resource.name à partir du journal brut. |
resource.region |
principal.location.country_or_region |
Valeur de resource.region à partir du journal brut. |
resource.regionId |
principal.cloud.availability_zone |
Valeur de resource.regionId à partir du 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 à partir du 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[] à partir du 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 à partir du 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 à partir du 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 à partir du journal brut. |
resource.url |
principal.url |
Valeur de resource.url à partir du journal brut. |
resourceCloudService |
principal.resource.attribute.labels[].key |
La clé est définie sur "resource cloud service" (service cloud de ressources). |
resourceCloudService |
principal.resource.attribute.labels[].value |
Valeur de resourceCloudService à partir du journal brut. |
resourceName |
principal.resource.name |
Valeur de resourceName à partir du journal brut. |
resourceRegion |
principal.location.country_or_region |
Valeur de resourceRegion à partir du journal brut. |
resourceRegionId |
principal.cloud.availability_zone |
Valeur de resourceRegionId à partir du journal brut. |
resourceType |
target.resource.resource_subtype |
Valeur de resourceType à partir du journal brut. |
severity |
security_result.severity |
Valeur de severity du journal brut, convertie en majuscules. Mappé aux valeurs de gravité UDM (CRITICAL, HIGH, MEDIUM, LOW, INFORMATIONAL). |
source |
principal.application |
Valeur de source à partir du journal brut. |
unifiedAssetId |
principal.asset.asset_id |
Valeur de unifiedAssetId du journal brut, précédée de "ASSETID:". |
Vous avez encore besoin d'aide ? Obtenez des réponses de membres de la communauté et de professionnels Google SecOps.