Collecter les journaux d'événements Palo Alto Cortex XDR
Ce document explique comment ingérer les journaux d'événements Palo Alto Cortex XDR dans Google Security Operations à l'aide de Google Cloud Storage. L'analyseur extrait les données d'événements de sécurité des journaux JSON Palo Alto Networks Cortex XDR. Il normalise les données dans le modèle de données unifié (UDM) en mappant les champs, en convertissant les types de données et en enrichissant les événements avec des métadonnées telles que le fournisseur, le produit et les types d'événements en fonction de la logique conditionnelle liée aux champs event_type
et event_sub_type
. Il gère également les connexions réseau, les opérations sur les fichiers et le registre, les informations sur les processus et l'activité des utilisateurs.
Avant de commencer
Assurez-vous de remplir les conditions suivantes :
- Instance Google SecOps
- Google Cloud Storage est configuré et actif dans votre environnement Google Cloud .
- Accès privilégié à Google Cloud et autorisations appropriées
- Accès privilégié à Palo Alto Cortex XDR
Créer un bucket de stockage Google Cloud
- Connectez-vous à la console Google Cloud .
Accédez à la page Buckets Cloud Storage.
Cliquez sur Créer.
Sur la page Créer un bucket, saisissez les informations concernant votre bucket. Après chacune de ces étapes, cliquez sur Continuer pour passer à l'étape suivante :
Dans la section Premiers pas, procédez comme suit : * Saisissez un nom unique qui répond aux exigences de dénomination des buckets (par exemple, cortex-xdr-events-googlesecops). * Pour activer l'espace de noms hiérarchique, cliquez sur la flèche d'expansion pour développer la section Optimiser pour les charges de travail orientées fichiers et à forte intensité de données, puis sélectionnez Activer l'espace de noms hiérarchique sur ce bucket.
Note: You can't enable hierarchical namespace in an existing bucket. * To add a bucket label, click the expander arrow to expand the **Labels** section. * Click **Add label** and specify a key and a value for your label.
Dans la section Choisir l'emplacement de stockage de vos données, procédez comme suit : * Sélectionnez un type d'emplacement. * Utilisez le menu du type d'emplacement pour sélectionner un emplacement où les données d'objets de votre bucket seront stockées de manière permanente.
Note: If you select the **dual-region** location type, you can also choose to enable **turbo replication** by selecting the relevant checkbox. * To set up cross-bucket replication, expand the **Set up cross-bucket replication** section.
Dans la section Choisir une classe de stockage pour vos données, sélectionnez une classe de stockage par défaut pour le bucket, ou bien classe automatique pour une gestion automatique des classes de stockage des données de votre bucket.
Dans la section Choisir comment contrôler l'accès aux objets, sélectionnez non pour appliquer la protection contre l'accès public, puis sélectionnez un modèle de contrôle des accès pour les objets de votre bucket.
Dans la section Choisir comment protéger les données d'objet, procédez comme suit : * Sélectionnez l'une des options sous Protection des données que vous souhaitez définir pour votre bucket. * Pour choisir comment vos données d'objet seront chiffrées, cliquez sur la flèche d'expansion Chiffrement des données, puis sélectionnez une méthode de chiffrement des données.
Cliquez sur Créer.
Configurer le transfert d'événements Cortex XDR
- Connectez-vous à l'interface utilisateur Web Cortex XDR.
- Accédez à Paramètres > Configurations > Gestion des données > Transfert d'événements.
- Activez les licences dans la section Activation.
- Activez l'envoi d'événements GB pour exporter les journaux analysés pour Cortex XDR Pro par Go vers un SIEM externe à des fins de stockage.
- Activez Endpoints Event Forwarding pour exporter les données brutes des points de terminaison pour Cortex XDR Pro EP et Cloud Endpoints.
- Enregistrez la sélection.
- Copiez le chemin de stockage affiché.
- Générez et téléchargez le jeton Web JSON du compte de service, qui contient la clé d'accès.
- Enregistrez-le dans un emplacement sécurisé.
Configurer Google Cloud Secret Manager
- Connectez-vous à GCP.
- Accédez à la page Secret Manager.
- Si c'est la première fois, vous serez invité à activer l'API Secret Manager.
- Créez un secret appelé EVENT_FRWD_CRTX_KEY et copiez le contenu du fichier JSON xdr_sa_key.json que vous avez téléchargé en tant que valeur du secret.
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, Journaux d'événements PANW Cortex XDR).
- Sélectionnez Google Cloud Storage comme Type de source.
- Sélectionnez Événements Palo Alto Cortex XDR comme Type de journal.
- Cliquez sur Obtenir un compte de service en tant que compte de service Chronicle.
- Cliquez sur Suivant.
Spécifiez les valeurs des paramètres d'entrée suivants :
- URI du bucket Storage : URL du bucket Storage (par exemple,
gs://cortex-xdr-events-chronicle
). Google Cloud - URI Is A (L'URI est un) : sélectionnez Directory which includes subdirectories (Répertoire incluant des sous-répertoires).
- Options de suppression de la source : sélectionnez l'option de suppression de votre choix.
- URI du bucket Storage : URL du bucket Storage (par exemple,
Cliquez sur Suivant.
Vérifiez la configuration de votre nouveau flux sur l'écran Finaliser, puis cliquez sur Envoyer.
Une fois le flux créé, recherchez-le dans la liste Flux, puis cliquez sur les trois points d'action à droite de la ligne.
Sélectionnez Désactiver le flux.
Configurer des flux depuis le Hub de contenu
Indiquez les valeurs des champs suivants :
- URI du bucket Storage : URL du bucket Storage (par exemple,
gs://cortex-xdr-events-chronicle
). Google Cloud - URI Is A (L'URI est un) : sélectionnez Directory which includes subdirectories (Répertoire incluant des sous-répertoires).
Options de suppression de la source : sélectionnez l'option de suppression de votre choix.
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.
Configurer l'accès JSON secret à Cloud Storage
- Connectez-vous à GCP.
- Accédez à la page Secret Manager.
- Sélectionnez le secret EVENT_FRWD_CRTX_KEY.
- Accédez à l'onglet Autorisations.
- Accordez l'accès Administrateur d'objets Storage et Lecteur des anciens buckets Storage au bucket cortex-xdr-events-chronicle créé précédemment.
Configurer les autorisations Google SecOps pour Cloud Storage
- Accédez à IAM et administration> IAM.
- Recherchez le compte de service Chronicle.
- Accordez l'accès Lecteur des objets Storage (roles/storage.objectViewer) au bucket cortex-xdr-events-chronicle créé précédemment.
Configurer l'ingestion des journaux d'événements PANW Cortex XDR dans Project Cloud Storage
- Dans Google Cloud, accédez à API et services > Bibliothèque.
- Activez les API Cloud Run et Artifact Registry.
- Ouvrez Cloud Shell en cliquant sur l'icône dans la barre de navigation supérieure.
Téléchargez un code personnalisé à l'aide de la commande suivante :
git clone https://github.com/PaloAltoNetworks/google-cloud-cortex-chronicle.git
Accédez au répertoire en exécutant la commande suivante :
cd google-cloud-cortex-chronicle/
Ouvrez le fichier
env.properties
avec un éditeur tel quevi
.Fournissez les informations de configuration suivantes :
REGION=us-central1 # Update according to your project region REPO_NAME=panw-chronicle IMAGE_NAME=sync_cortex_bucket GCP_PROJECT_ID=chrxxxxxxxxx # Update according to your project ID JOB_NAME=cloud-run-job-cortex-data-sync # The Cloud Job name ROJECT_NUMBER=80xxxxx9 # Update according to your project number # JOB ENV VARIABLES SRC_BUCKET=xdr-us-xxxxx-event-forwarding # Update with the Cortex XDR GCS bucket name DEST_BUCKET=cortex-xdr-events-chronicle # Update with the GCS name of the bucket you created SECRET_NAME=EVENT_FRWD_CRTX_KEY # Need to match the secret you created JOB_SCHEDULE_MINS=30
Accordez les autorisations nécessaires au script
deploy.sh
:chmod 744 deploy.sh
Exécutez le script
deploy.sh
:./deploy.sh
Identifiez le compte de service Cloud Jobs utilisé à partir de la sortie du script.
Accordez au compte de service Cloud Job l'autorisation Ancêtre secret Secret Manager pour accéder au secret que vous avez créé précédemment (EVENT_FRWD_CRTX_KEY dans notre exemple).
Accédez à Secret Manager > EVENT_FRWD_CRTX_KEY (secret) > Autorisations.
Dans la plate-forme Google SecOps, accédez à Paramètres du SIEM > Flux > Nom du flux d'événements XDR > Activer le flux.
Table de mappage UDM
Champ de journal | Mappage UDM | Logique |
---|---|---|
action_file_path |
target.file.full_path |
Mappé directement |
action_file_size |
target.file.size |
Mappé directement et converti en entier non signé |
action_local_ip |
principal.ip |
Mappées directement et fusionnées avec d'autres adresses IP |
action_local_port |
principal.port |
Mappé directement et converti en entier |
action_module_path |
target.process.file.full_path |
Mappé directement |
action_network_connection_id |
network.session_id |
Mappé directement |
action_network_protocol |
network.ip_protocol |
Renommé protocol_number_src , analysé à l'aide de parse_ip_protocol.include et mappé à network.ip_protocol |
action_process_image_command_line |
target.process.command_line |
Mappé directement |
action_process_image_md5 |
target.process.file.md5 |
Mappé directement |
action_process_image_path |
target.process.file.full_path |
Mappé directement |
action_process_image_sha256 |
target.process.file.sha256 |
Mappé directement |
action_process_os_pid |
target.process.pid |
Mappé directement et converti en chaîne |
action_process_user_sid |
target.user.windows_sid |
Mappé directement |
action_process_username |
target.user.userid , target.administrative_domain |
Mises en minuscules, analysées pour le domaine et l'utilisateur, et mappées en conséquence |
action_registry_data |
target.registry.registry_value_data |
Mappé directement |
action_registry_key_name |
target.registry.registry_key |
Mappé directement |
action_registry_value_name |
target.registry.registry_value_name |
Mappé directement |
action_remote_ip |
target.ip |
Mappées directement et fusionnées avec d'autres adresses IP |
action_remote_port |
target.port |
Mappé directement et converti en entier |
action_total_download |
network.received_bytes |
Mappé directement et converti en entier non signé |
action_total_upload |
network.sent_bytes |
Mappé directement et converti en entier non signé |
agent_hostname |
principal.hostname , observer.hostname |
En minuscules et mappé |
agent_ip_addresses |
observer.ip |
Analysées au format JSON, divisées en adresses IP individuelles et fusionnées |
agent_os_sub_type |
target.platform_version |
Mappé directement |
event_id |
metadata.product_log_id |
Mappé directement |
event_sub_type |
metadata.product_event_type |
Converti en chaîne et utilisé pour le mappage conditionnel de metadata.event_type et metadata.product_event_type |
event_timestamp |
metadata.event_timestamp , timestamp |
Converti en chaîne, analysé en tant que code temporel UNIX_MS et mappé |
event_type |
metadata.event_type |
Converti en chaîne et utilisé pour le mappage conditionnel de metadata.event_type et metadata.product_event_type |
os_actor_process_command_line |
principal.process.command_line |
Mappé directement |
os_actor_process_image_md5 |
principal.process.file.md5 |
Mappé directement |
os_actor_process_image_path |
principal.process.file.full_path |
Mappé directement |
os_actor_process_image_sha256 |
principal.process.file.sha256 |
Mappé directement |
os_actor_process_instance_id |
principal.process.product_specific_process_id |
Préfixé par "PAN:" et mappé |
os_actor_process_os_pid |
principal.process.pid |
Converti en chaîne et mappé |
os_actor_primary_user_sid |
principal.user.windows_sid |
Mappé s'il commence par "S-" ou "s-" |
os_actor_primary_username |
principal.user.userid , principal.administrative_domain |
Mises en minuscules, analysées pour le domaine et l'utilisateur, et mappées en conséquence |
_action |
security_result.action |
Fusionné dans _security_result , puis mappé |
metadata.log_type |
metadata.log_type |
Codé en dur sur "PAN_CORTEX_XDR_EVENTS" |
metadata.product_name |
metadata.product_name |
Codé en dur sur "Cortex XDR" |
metadata.vendor_name |
metadata.vendor_name |
Codé en dur sur "PAN" |
target.platform |
target.platform |
Défini sur "WINDOWS" si agent_os_sub_type contient "Windows" |
Vous avez encore besoin d'aide ? Obtenez des réponses de membres de la communauté et de professionnels Google SecOps.