收集 Palo Alto Cortex XDR Events 日志
本文档介绍了如何使用 Google Cloud Storage 将 Palo Alto Cortex XDR 事件日志注入到 Google Security Operations。解析器从 Palo Alto Networks Cortex XDR JSON 日志中提取安全事件数据。它通过以下方式将数据标准化为统一数据模型 (UDM):映射字段、转换数据类型,以及根据与 event_type 和 event_sub_type 字段关联的条件逻辑,使用供应商、产品和事件类型等元数据来丰富事件。它还处理网络连接、文件和注册表操作、进程信息以及用户活动。
准备工作
请确保满足以下前提条件:
- Google SecOps 实例
 - Google Cloud 存储空间已在 Google Cloud 环境中设置并处于活动状态
 - 对 Google Cloud 的特权访问权限和适当的权限
 - 对 Palo Alto Cortex XDR 的特权访问权限
 
创建 Google Cloud 存储分区
- 登录 Google Cloud 控制台。
 前往 Cloud Storage 存储分区页面。
点击创建。
在创建存储桶页面上,输入您的存储桶信息。完成以下每一步后,点击继续以继续执行后续步骤:
在开始使用部分中,执行以下操作: * 输入符合存储桶名称要求的唯一名称(例如 cortex-xdr-events-googlesecops)。 * 如需启用分层命名空间,请点击展开箭头以展开优化文件导向型和数据密集型工作负载部分,然后选择在此存储桶上启用分层命名空间。
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.在选择数据存储位置部分中,执行以下操作: * 选择位置类型。 * 使用位置类型的菜单选择一个位置,用于永久存储存储桶中的对象数据。
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.在为数据选择一个存储类别部分中,为存储桶选择默认存储类别,或者选择 Autoclass 对存储桶数据进行自动存储类别管理。
在选择如何控制对对象的访问权限部分中,选择不强制执行禁止公开访问,然后为存储桶对象选择访问权限控制模型。
在选择如何保护对象数据部分中,执行以下操作: * 在数据保护下,选择您要为存储桶设置的任何选项。 * 如需选择对象数据的加密方式,请点击数据加密展开箭头,然后选择数据加密方法。
点击创建。
配置 Cortex XDR 事件转发
- 登录 Cortex XDR 网页界面。
 - 依次前往设置 > 配置 > 数据管理 > 事件转发。
 - 在激活部分中激活许可。
 - 启用 GB 事件转发,以将每 GB 的已解析日志导出到外部 SIEM 进行存储,以供 Cortex XDR Pro 使用。
 - 启用 Endpoints Event Forwarding 以导出 Cortex XDR Pro EP 和 Cloud Endpoints 的原始端点数据。
 - 保存所选内容。
 - 复制显示的存储路径。
 - 生成并下载包含访问密钥的服务账号 JSON Web 令牌。
 - 将其保存在安全的位置。
 
配置 Google Cloud Secret Manager
- 登录 GCP。
 - 前往 Secret Manager 页面。
 - 如果这是您第一次使用,系统会提示您启用 Secret Manager API。
 - 创建一个名为 EVENT_FRWD_CRTX_KEY 的 Secret,并将您下载的 JSON xdr_sa_key.json 的内容复制为该 Secret 的值。
 
设置 Feed
如需配置 Feed,请按以下步骤操作:
- 依次前往 SIEM 设置> Feed。
 - 点击添加新 Feed。
 - 在下一页上,点击配置单个 Feed。
 - 在 Feed 名称字段中,输入 Feed 的名称(例如,PANW Cortex XDR 事件日志)。
 - 选择 Google Cloud Storage V2 作为来源类型。
 - 选择 Palo Alto Cortex XDR Events 作为日志类型。
 - 点击获取服务账号作为 Chronicle 服务账号。
 - 点击下一步。
 为以下输入参数指定值:
- 存储桶 URI: Google Cloud 存储桶网址(例如 
gs://cortex-xdr-events-chronicle/)。此网址必须以尾随正斜线 (/) 结尾。 - 来源删除选项:根据您的偏好设置选择删除选项。
 
- 存储桶 URI: Google Cloud 存储桶网址(例如 
 点击下一步。
在最终确定界面中查看新的 Feed 配置,然后点击提交。
创建 Feed 后,在 Feed 列表中找到该 Feed,然后点击该行右侧的三个操作点。
选择停用 Feed。
配置对 Cloud Storage 的 Secret JSON 访问权限
- 登录 GCP。
 - 前往 Secret Manager 页面。
 - 选择密钥 EVENT_FRWD_CRTX_KEY。
 - 前往权限标签页。
 - 为之前创建的存储桶 cortex-xdr-events-chronicle 提供 Storage Object Admin 和 Storage Legacy Bucket Reader 访问权限。
 
为 Cloud Storage 配置 Google SecOps 权限
- 前往 IAM 和管理> IAM。
 - 找到 Chronicle 服务账号。
 - 向之前创建的存储桶 cortex-xdr-events-chronicle 授予 Storage Object Viewer (roles/storage.objectViewer) 访问权限。
 
将 PANW Cortex XDR Events 日志提取配置到项目 Cloud Storage
- 在 Google Cloud中,依次前往 API 和服务 > 库。
 - 启用 Cloud Run 和 Artifact Registry API。
 - 点击顶部导航栏中的图标,打开 Cloud Shell。
 使用以下命令下载自定义代码:
git clone https://github.com/PaloAltoNetworks/google-cloud-cortex-chronicle.git运行以下命令,前往相应目录:
cd google-cloud-cortex-chronicle/使用
vi等编辑器打开文件env.properties。提供以下配置详细信息:
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为
deploy.sh脚本提供必要的权限:chmod 744 deploy.sh运行
deploy.sh脚本:./deploy.sh从脚本输出中确定所用的 Cloud Job 服务账号。
向 Cloud Job 服务账号授予 Secret Manager Secret Ancestor 权限,以访问您之前创建的 Secret(如我们的示例中的 EVENT_FRWD_CRTX_KEY)。
依次前往 Secret Manager > EVENT_FRWD_CRTX_KEY(密钥)> 权限。
在 Google SecOps 平台中,依次前往 SIEM 设置> Feed > XDR 事件 Feed 名称 > 启用 Feed。
UDM 映射表
| 日志字段 | UDM 映射 | 逻辑 | 
|---|---|---|
action_file_path | 
target.file.full_path | 
直接映射 | 
action_file_size | 
target.file.size | 
直接映射并转换为无符号整数 | 
action_local_ip | 
principal.ip | 
直接映射并与其他 IP 地址合并 | 
action_local_port | 
principal.port | 
直接映射并转换为整数 | 
action_module_path | 
target.process.file.full_path | 
直接映射 | 
action_network_connection_id | 
network.session_id | 
直接映射 | 
action_network_protocol | 
network.ip_protocol | 
已重命名为 protocol_number_src,使用 parse_ip_protocol.include 进行解析,并映射到 network.ip_protocol | 
action_process_image_command_line | 
target.process.command_line | 
直接映射 | 
action_process_image_md5 | 
target.process.file.md5 | 
直接映射 | 
action_process_image_path | 
target.process.file.full_path | 
直接映射 | 
action_process_image_sha256 | 
target.process.file.sha256 | 
直接映射 | 
action_process_os_pid | 
target.process.pid | 
直接映射并转换为字符串 | 
action_process_user_sid | 
target.user.windows_sid | 
直接映射 | 
action_process_username | 
target.user.userid,target.administrative_domain | 
转换为小写,解析为网域和用户,并相应地进行映射 | 
action_registry_data | 
target.registry.registry_value_data | 
直接映射 | 
action_registry_key_name | 
target.registry.registry_key | 
直接映射 | 
action_registry_value_name | 
target.registry.registry_value_name | 
直接映射 | 
action_remote_ip | 
target.ip | 
直接映射并与其他 IP 地址合并 | 
action_remote_port | 
target.port | 
直接映射并转换为整数 | 
action_total_download | 
network.received_bytes | 
直接映射并转换为无符号整数 | 
action_total_upload | 
network.sent_bytes | 
直接映射并转换为无符号整数 | 
agent_hostname | 
principal.hostname,observer.hostname | 
小写并映射 | 
agent_ip_addresses | 
observer.ip | 
解析为 JSON,拆分为各个 IP,然后合并 | 
agent_os_sub_type | 
target.platform_version | 
直接映射 | 
event_id | 
metadata.product_log_id | 
直接映射 | 
event_sub_type | 
metadata.product_event_type | 
转换为字符串并用于 metadata.event_type 和 metadata.product_event_type 的条件映射 | 
event_timestamp | 
metadata.event_timestamp,timestamp | 
转换为字符串,解析为 UNIX_MS 时间戳,并进行映射 | 
event_type | 
metadata.event_type | 
转换为字符串并用于 metadata.event_type 和 metadata.product_event_type 的条件映射 | 
os_actor_process_command_line | 
principal.process.command_line | 
直接映射 | 
os_actor_process_image_md5 | 
principal.process.file.md5 | 
直接映射 | 
os_actor_process_image_path | 
principal.process.file.full_path | 
直接映射 | 
os_actor_process_image_sha256 | 
principal.process.file.sha256 | 
直接映射 | 
os_actor_process_instance_id | 
principal.process.product_specific_process_id | 
带有“PAN:”前缀并已映射 | 
os_actor_process_os_pid | 
principal.process.pid | 
已转换为字符串并映射 | 
os_actor_primary_user_sid | 
principal.user.windows_sid | 
如果以“S-”或“s-”开头,则进行映射 | 
os_actor_primary_username | 
principal.user.userid,principal.administrative_domain | 
转换为小写,解析为网域和用户,并相应地进行映射 | 
_action | 
security_result.action | 
合并到 _security_result 中,然后进行映射 | 
metadata.log_type | 
metadata.log_type | 
硬编码为“PAN_CORTEX_XDR_EVENTS” | 
metadata.product_name | 
metadata.product_name | 
硬编码为“Cortex XDR” | 
metadata.vendor_name | 
metadata.vendor_name | 
硬编码为“PAN” | 
target.platform | 
target.platform | 
如果 agent_os_sub_type 包含“Windows”,则设置为“WINDOWS” | 
需要更多帮助?从社区成员和 Google SecOps 专业人士那里获得解答。