Collecter les journaux d'alertes Palo Alto Cortex XDR
Ce document explique comment collecter les journaux d'alertes Palo Alto Cortex XDR en configurant un flux Google Security Operations.
Pour en savoir plus, consultez Ingestion de données dans Google Security Operations.
Un libellé d'ingestion identifie l'analyseur qui normalise les données de journaux brutes au format UDM structuré. Les informations de ce document s'appliquent au parseur avec le libellé d'ingestion CORTEX_XDR
.
Configurer les alertes Palo Alto Cortex XDR
Pour configurer les alertes Palo Alto Cortex XDR, effectuez les tâches suivantes :
- Obtenez la clé API des alertes Palo Alto Cortex XDR.
- Obtenez l'ID de clé API des alertes Palo Alto Cortex XDR.
- Obtenez le nom de domaine complet.
Obtenir la clé API des alertes Palo Alto Cortex XDR
- Connectez-vous au portail Cortex XDR.
- Dans le menu Paramètres, cliquez sur Paramètres.
- Sélectionnez + Nouvelle clé.
- Dans la section Niveau de sécurité, sélectionnez Avancé.
- Dans la section Rôles, sélectionnez Lecteur.
- Cliquez sur Générer.
- Copiez la clé API, puis cliquez sur OK. La clé API représente votre clé d'autorisation unique et n'est affichée qu'au moment de la création. Elle est obligatoire lorsque vous configurez le flux Google Security Operations.
Obtenir l'ID de la clé API d'alertes Palo Alto Cortex XDR
Dans la section Configurations, accédez à Clés API > ID. Notez le numéro d'ID correspondant, qui représente le jeton x-xdr-auth-id:{key_id}
.
Obtenir le nom de domaine complet
- Accédez à Clés API.
- Cliquez sur Copier l'URL. Enregistrez l'URL, qui est requise lorsque vous configurez le flux Google Security Operations.
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 plusieurs flux pour différents types de journaux dans cette famille de produits, consultez Configurer des flux par produit.
Pour configurer un seul flux :
- 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, Journaux des alertes Palo Alto Cortex XDR).
- Sélectionnez API tierce comme Type de source.
- Sélectionnez Alertes Palo Alto Cortex XDR comme Type de journal.
- Cliquez sur Suivant.
- Configurez les paramètres d'entrée obligatoires suivants :
- En-têtes HTTP d'authentification : fournissez la clé d'autorisation et l'ID de clé d'autorisation que vous avez obtenus précédemment.
- Nom d'hôte de l'API : indiquez l'URL que vous avez obtenue précédemment.
- Point de terminaison : spécifiez le point de terminaison.
- Cliquez sur Suivant, puis sur Envoyer.
Pour en savoir plus sur les flux Google Security Operations, consultez la documentation sur les flux Google Security Operations. Pour en savoir plus sur les exigences associées à chaque type de flux, consultez Configuration des flux par type.
Configurer des flux depuis le Hub de contenu
Indiquez les valeurs des champs suivants :
- En-têtes HTTP d'authentification : fournissez la clé d'autorisation et l'ID de clé d'autorisation que vous avez obtenus précédemment.
- Nom d'hôte de l'API : indiquez l'URL que vous avez obtenue précédemment.
- Point de terminaison : spécifiez le point de terminaison.
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.
Référence du mappage de champs
Ce parseur extrait les journaux de sécurité de Palo Alto Networks Cortex XDR au format JSON ou SYSLOG (clé-valeur), normalise les champs et les mappe à l'UDM. Il gère les formats JSON et clé/valeur, extrait les dates, enrichit les données avec des métadonnées et structure la sortie pour l'ingestion dans Google SecOps.
Activer les requêtes de l'API REST sur Cortex XDR et configurer un flux Google SecOps
Ce guide fournit des instructions détaillées pour activer les requêtes de l'API REST sur Cortex XDR et configurer un flux correspondant dans Google SecOps.
Partie 1 : Activer les requêtes de l'API REST sur Cortex XDR
Cortex XDR utilise des clés API pour l'authentification. Pour générer une clé API :
- Connectez-vous à la console de gestion Cortex XDR.
- Accédez à Paramètres.
- Accédez à Clés API.
- Générez une clé.
- Attribuez un nom à la clé (par exemple, "Intégration SecOps").
- Attribuez à la clé API les autorisations nécessaires pour accéder aux données requises. C'est essentiel pour la sécurité et permet de s'assurer que la clé n'a accès qu'à ce dont elle a besoin. Consultez la documentation Cortex XDR pour connaître les autorisations spécifiques requises pour votre cas d'utilisation.
- Stockez la clé API de manière sécurisée. Vous en aurez besoin pour la configuration du flux Google SecOps. C'est la seule fois où vous verrez la clé complète. Assurez-vous donc de la copier maintenant.
- (Facultatif) Configurez une date d'expiration pour la clé API afin de renforcer la sécurité.
Partie 2 : Configurer le flux dans Google SecOps
Une fois la clé API générée, configurez le flux dans Google SecOps pour recevoir les données de Cortex XDR :
- Accédez à Paramètres SIEM> Flux.
- Cliquez sur Ajouter.
- Sélectionnez API tierce comme Type de source.
- Sélectionnez le type de journal requis correspondant aux données que vous souhaitez ingérer à partir de Cortex XDR.
- Cliquez sur Suivant.
- Configurez les paramètres d'entrée suivants :
- Point de terminaison de l'API : saisissez l'URL de base de l'API Cortex XDR. Vous trouverez cette information dans la documentation de l'API Cortex XDR.
- Clé API : collez la clé API que vous avez générée précédemment.
- Autres paramètres : selon l'API Cortex XDR spécifique que vous utilisez, vous devrez peut-être fournir des paramètres supplémentaires, tels que des filtres de données ou des plages de temps spécifiques. Pour en savoir plus, consultez la documentation de l'API Cortex XDR.
- Cliquez sur Suivant, puis sur Envoyer.
Remarques importantes :
- Limitation du débit : tenez compte des limites de débit imposées par l'API Cortex XDR. Configurez le flux en conséquence pour éviter de dépasser ces limites.
- Gestion des erreurs : implémentez gestion des exceptions appropriée dans votre configuration Google SecOps pour gérer les situations où l'API Cortex XDR est indisponible ou renvoie des erreurs.
- Sécurité : stockez la clé API de manière sécurisée et suivez les bonnes pratiques de sécurité. Alternez régulièrement les clés API pour minimiser l'impact d'éventuelles compromissions.
- Documentation : consultez la documentation officielle de l'API Cortex XDR pour obtenir des informations détaillées sur les points de terminaison, les paramètres et les formats de données disponibles.
Table de mappage UDM
Champ de journal | Mappage UDM | Logique |
---|---|---|
action |
security_result.action |
Si action contient "BLOCKED", définissez la valeur sur "BLOCK". |
action |
security_result.action_details |
Si act n'est pas vide, nul ou "none", utilisez la valeur de act . Sinon, si action n'est pas défini sur "BLOCKED", utilisez la valeur de action . |
action_country |
security_result.about.location.country_or_region |
Mappage direct. Également utilisé dans le champ events imbriqué. |
action_file_path |
target.resource.attribute.labels |
Crée un libellé avec la clé "action_file_path" et la valeur du champ de journal. |
action_file_sha256 |
target.file.sha256 |
Convertit en minuscules. |
action_local_port |
principal.port |
Convertit en entier. |
action_remote_ip |
target.ip |
Fusionné dans le tableau target.ip . |
action_remote_ip |
target.asset.ip |
Fusionné dans le tableau target.asset.ip . |
action_remote_port |
target.port |
Convertit en entier. |
act |
security_result.action_details |
Utilisé s'il n'est pas vide, nul ou "none". |
agent_data_collection_status |
Non mappé | Bien que présent dans le journal brut, ce champ n'est pas mappé à l'objet IDM dans l'UDM final. |
agent_device_domain |
target.administrative_domain |
Mappage direct. |
agent_fqdn |
Non mappé | Bien que présent dans le journal brut, ce champ n'est pas mappé à l'objet IDM dans l'UDM final. |
agent_install_type |
Non mappé | Bien que présent dans le journal brut, ce champ n'est pas mappé à l'objet IDM dans l'UDM final. |
agent_is_vdi |
Non mappé | Bien que présent dans le journal brut, ce champ n'est pas mappé à l'objet IDM dans l'UDM final. |
agent_os_sub_type |
target.platform_version |
Mappage direct. |
agent_os_type |
target.platform |
Si vous avez sélectionné "Windows", définissez la valeur sur "WINDOWS". |
agent_version |
Non mappé | Bien que présent dans le journal brut, ce champ n'est pas mappé à l'objet IDM dans l'UDM final. |
alert_id |
security_result.rule_id |
Mappage direct. |
app |
target.application |
Mappage direct. |
cat |
security_result.category_details |
Fusionné dans le champ security_result.category_details . |
category |
security_result.category |
Si la valeur est "Logiciel malveillant", définissez-la sur "SOFTWARE_MALICIOUS". |
category |
security_result.category_details |
Fusionné dans le champ security_result.category_details . |
cn1 |
network.session_id |
Mappage direct. |
cn1Label |
Non mappé | Bien que présent dans le journal brut, ce champ n'est pas mappé à l'objet IDM dans l'UDM final. |
contains_featured_host |
Non mappé | Bien que présent dans le journal brut, ce champ n'est pas mappé à l'objet IDM dans l'UDM final. |
contains_featured_ip |
Non mappé | Bien que présent dans le journal brut, ce champ n'est pas mappé à l'objet IDM dans l'UDM final. |
contains_featured_user |
Non mappé | Bien que présent dans le journal brut, ce champ n'est pas mappé à l'objet IDM dans l'UDM final. |
creation_time |
metadata.event_timestamp |
Converti en code temporel. |
cs1 |
security_result.rule_name |
Concaténé avec cs1Label pour former security_result.rule_name . |
cs1Label |
security_result.rule_name |
Concaténé avec cs1 pour former security_result.rule_name . |
cs2 |
additional.fields |
Crée une paire clé-valeur dans additional.fields avec la clé de cs2Label et la valeur de chaîne de cs2 . |
cs2Label |
additional.fields |
Utilisé comme clé pour la valeur cs2 dans additional.fields . |
cs3 |
additional.fields |
Crée une paire clé-valeur dans additional.fields avec la clé de cs3Label et la valeur de chaîne de cs3 . |
cs3Label |
additional.fields |
Utilisé comme clé pour la valeur cs3 dans additional.fields . |
cs4 |
additional.fields |
Crée une paire clé-valeur dans additional.fields avec la clé de cs4Label et la valeur de chaîne de cs4 . |
cs4Label |
additional.fields |
Utilisé comme clé pour la valeur cs4 dans additional.fields . |
cs5 |
additional.fields |
Crée une paire clé-valeur dans additional.fields avec la clé de cs5Label et la valeur de chaîne de cs5 . |
cs5Label |
additional.fields |
Utilisé comme clé pour la valeur cs5 dans additional.fields . |
cs6 |
additional.fields |
Crée une paire clé-valeur dans additional.fields avec la clé de cs6Label et la valeur de chaîne de cs6 . |
cs6Label |
additional.fields |
Utilisé comme clé pour la valeur cs6 dans additional.fields . |
CSPaccountname |
additional.fields |
Crée une paire clé-valeur dans additional.fields avec la clé "CSPaccountname" et la valeur de chaîne du champ de journal. |
description |
metadata.description |
Mappage direct. Également utilisé pour security_result.description si event_type n'est pas GENERIC_EVENT. |
destinationTranslatedAddress |
target.ip |
Fusionné dans le tableau target.ip . |
destinationTranslatedAddress |
target.asset.ip |
Fusionné dans le tableau target.asset.ip . |
destinationTranslatedPort |
target.port |
Converti en entier s'il n'est pas vide ou s'il est égal à -1. |
deviceExternalId |
security_result.about.asset_id |
Il doit être précédé de "Device External Id: ". |
dpt |
target.port |
Converti en entier si destinationTranslatedPort est vide ou égal à -1. |
dst |
target.ip |
Fusionné dans le tableau target.ip . |
dst |
target.asset.ip |
Fusionné dans le tableau target.asset.ip . |
dst_agent_id |
target.ip |
Converti en adresse IP et fusionné dans le tableau target.ip s'il s'agit d'une adresse IP valide. |
dst_agent_id |
target.asset.ip |
Converti en adresse IP et fusionné dans le tableau target.asset.ip s'il s'agit d'une adresse IP valide. |
dvchost |
principal.hostname |
Mappage direct. |
dvchost |
principal.asset.hostname |
Mappage direct. |
endpoint_id |
target.process.product_specific_process_id |
Préfixé par "cor:". |
event_id |
Non mappé | Bien que présent dans le journal brut, ce champ n'est pas mappé à l'objet IDM dans l'UDM final. |
event_sub_type |
Non mappé | Bien que présent dans le journal brut, ce champ n'est pas mappé à l'objet IDM dans l'UDM final. |
event_timestamp |
metadata.event_timestamp |
Converti en code temporel. Également utilisé dans le champ events imbriqué. |
event_type |
metadata.event_type |
Mappé à un type d'événement UDM en fonction de la logique. Également utilisé dans le champ events imbriqué. |
event_type |
metadata.product_event_type |
Mappage direct. |
event_type |
security_result.threat_name |
Mappage direct. |
events |
Événements imbriqués | Les champs du tableau events sont mappés aux champs UDM correspondants dans les objets events imbriqués. Pour en savoir plus, consultez les mappages de champs individuels. |
external_id |
Non mappé | Bien que présent dans le journal brut, ce champ n'est pas mappé à l'objet IDM dans l'UDM final. |
fileId |
target.resource.attribute.labels |
Crée un libellé avec la clé "fileId" et la valeur du champ de journal. |
fileHash |
target.file.sha256 |
Converti en minuscules. Définit metadata.event_type sur FILE_UNCATEGORIZED. |
filePath |
target.file.full_path |
Mappage direct. Définit metadata.event_type sur FILE_UNCATEGORIZED. |
fw_app_category |
Non mappé | Bien que présent dans le journal brut, ce champ n'est pas mappé à l'objet IDM dans l'UDM final. |
fw_app_id |
Non mappé | Bien que présent dans le journal brut, ce champ n'est pas mappé à l'objet IDM dans l'UDM final. |
fw_app_subcategory |
Non mappé | Bien que présent dans le journal brut, ce champ n'est pas mappé à l'objet IDM dans l'UDM final. |
fw_app_technology |
Non mappé | Bien que présent dans le journal brut, ce champ n'est pas mappé à l'objet IDM dans l'UDM final. |
fw_device_name |
Non mappé | Bien que présent dans le journal brut, ce champ n'est pas mappé à l'objet IDM dans l'UDM final. |
fw_email_recipient |
Non mappé | Bien que présent dans le journal brut, ce champ n'est pas mappé à l'objet IDM dans l'UDM final. |
fw_email_sender |
Non mappé | Bien que présent dans le journal brut, ce champ n'est pas mappé à l'objet IDM dans l'UDM final. |
fw_email_subject |
Non mappé | Bien que présent dans le journal brut, ce champ n'est pas mappé à l'objet IDM dans l'UDM final. |
fw_interface_from |
Non mappé | Bien que présent dans le journal brut, ce champ n'est pas mappé à l'objet IDM dans l'UDM final. |
fw_interface_to |
Non mappé | Bien que présent dans le journal brut, ce champ n'est pas mappé à l'objet IDM dans l'UDM final. |
fw_is_phishing |
Non mappé | Bien que présent dans le journal brut, ce champ n'est pas mappé à l'objet IDM dans l'UDM final. |
fw_misc |
Non mappé | Bien que présent dans le journal brut, ce champ n'est pas mappé à l'objet IDM dans l'UDM final. |
fw_rule |
Non mappé | Bien que présent dans le journal brut, ce champ n'est pas mappé à l'objet IDM dans l'UDM final. |
fw_rule_id |
Non mappé | Bien que présent dans le journal brut, ce champ n'est pas mappé à l'objet IDM dans l'UDM final. |
fw_serial_number |
Non mappé | Bien que présent dans le journal brut, ce champ n'est pas mappé à l'objet IDM dans l'UDM final. |
fw_url_domain |
Non mappé | Bien que présent dans le journal brut, ce champ n'est pas mappé à l'objet IDM dans l'UDM final. |
fw_vsys |
Non mappé | Bien que présent dans le journal brut, ce champ n'est pas mappé à l'objet IDM dans l'UDM final. |
fw_xff |
Non mappé | Bien que présent dans le journal brut, ce champ n'est pas mappé à l'objet IDM dans l'UDM final. |
host_ip |
principal.ip |
Séparés par une virgule et fusionnés dans le tableau principal.ip . |
host_ip |
principal.asset.ip |
Séparés par une virgule et fusionnés dans le tableau principal.asset.ip . |
host_name |
principal.hostname |
Mappage direct. |
host_name |
principal.asset.hostname |
Mappage direct. |
hosts |
target.hostname |
Extrait le nom d'hôte du premier élément du tableau hosts . |
hosts |
target.asset.hostname |
Extrait le nom d'hôte du premier élément du tableau hosts . |
hosts |
target.user.employee_id |
Extrait l'ID utilisateur du premier élément du tableau hosts . |
incident_id |
metadata.product_log_id |
Mappage direct. |
is_whitelisted |
Non mappé | Bien que présent dans le journal brut, ce champ n'est pas mappé à l'objet IDM dans l'UDM final. |
local_insert_ts |
Non mappé | Bien que présent dans le journal brut, ce champ n'est pas mappé à l'objet IDM dans l'UDM final. |
mac |
principal.mac |
Séparés par une virgule et fusionnés dans le tableau principal.mac . |
matching_status |
Non mappé | Bien que présent dans le journal brut, ce champ n'est pas mappé à l'objet IDM dans l'UDM final. |
metadata.description |
security_result.description |
Utilisé si event_type est GENERIC_EVENT. |
metadata.event_type |
metadata.event_type |
Définissez-les en fonction de la logique à l'aide de event_type , host_ip et d'autres champs. |
metadata.log_type |
metadata.log_type |
Défini sur "CORTEX_XDR". |
metadata.product_name |
metadata.product_name |
Définissez-le sur "Cortex". |
metadata.vendor_name |
metadata.vendor_name |
Défini sur "Palo Alto Networks". |
msg |
security_result.description |
Mappage direct. |
name |
security_result.summary |
Mappage direct. |
PanOSDGHierarchyLevel1 |
security_result.detection_fields |
Crée une paire clé-valeur dans security_result.detection_fields avec la clé "PanOSDGHierarchyLevel1" et la valeur du champ de journal. |
PanOSDestinationLocation |
target.location.country_or_region |
Mappage direct. |
PanOSDynamicUserGroupName |
principal.group.group_display_name |
Mappage direct s'il n'est pas vide ou si la valeur est "-". |
PanOSSourceLocation |
principal.location.country_or_region |
Mappage direct. |
PanOSThreatCategory |
security_result.category_details |
Fusionné dans le champ security_result.category_details . |
PanOSThreatID |
security_result.threat_id |
Mappage direct. |
principal.asset.attribute.labels |
principal.asset.attribute.labels |
Crée un libellé avec la clé "Source" et la valeur du champ source . |
proto |
network.ip_protocol |
Converti en majuscules. Définit metadata.event_type sur NETWORK_CONNECTION. |
request |
network.http.referral_url |
Mappage direct. |
rt |
metadata.event_timestamp |
Converti en code temporel. |
security_result.severity |
security_result.severity |
Définissez sur la valeur en majuscules de severity . |
severity |
security_result.severity |
Converti en majuscules. |
shost |
principal.hostname |
Mappage direct. Définit metadata.event_type sur STATUS_UPDATE. |
shost |
principal.asset.hostname |
Mappage direct. Définit metadata.event_type sur STATUS_UPDATE. |
source |
principal.asset.attribute.labels |
Utilisé comme valeur pour le libellé "Source". |
source |
security_result.summary |
Utilisé si les filtres not_json et grok correspondent. |
sourceTranslatedAddress |
principal.ip |
Fusionné dans le tableau principal.ip . |
sourceTranslatedAddress |
principal.asset.ip |
Fusionné dans le tableau principal.asset.ip . |
sourceTranslatedPort |
principal.port |
Converti en entier s'il n'est pas vide ou s'il est égal à -1. |
spt |
principal.port |
Converti en entier. |
sr_summary |
security_result.summary |
Utilisé si les filtres not_json et grok correspondent. |
src |
principal.ip |
Fusionné dans le tableau principal.ip . |
src |
principal.asset.ip |
Fusionné dans le tableau principal.asset.ip . |
suser |
principal.user.user_display_name |
Mappage direct. |
tenantCDLid |
additional.fields |
Crée une paire clé-valeur dans additional.fields avec la clé "tenantCDLid" et la valeur de chaîne du champ de journal. |
tenantname |
additional.fields |
Crée une paire clé-valeur dans additional.fields avec la clé "tenantname" et la valeur de chaîne du champ de journal. |
users |
target.user.userid |
Utilise le premier élément du tableau users . |
xdr_url |
metadata.url_back_to_product |
Mappage direct. |
Vous avez encore besoin d'aide ? Obtenez des réponses de membres de la communauté et de professionnels Google SecOps.