收集 Palo Alto Cortex XDR 事件日志
本文档介绍了如何使用 Google Cloud 存储空间将 Palo Alto Cortex XDR 事件日志注入到 Google 安全运营中心。解析器会从 Palo Alto Networks Cortex XDR JSON 日志中提取安全事件数据。它会根据与 event_type
和 event_sub_type
字段相关联的条件逻辑,映射字段、转换数据类型,并使用供应商、产品和事件类型等元数据丰富事件,以便将数据标准化为统一数据模型 (UDM)。它还会处理网络连接、文件和注册表操作、进程信息和用户活动。
准备工作
请确保满足以下前提条件:
- 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 将 Cortex XDR Pro 的解析日志导出到外部 SIEM 进行存储。
- 启用端点事件转发,以便为 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 的值。
在 Google SecOps 中配置 Feed 以注入 Palo Alto Cortex XDR 事件日志
- 依次前往 SIEM 设置 > Feed。
- 点击新增。
- 在Feed 名称字段中,输入 Feed 的名称(例如 PANW Cortex XDR 事件日志)。
- 选择 Google Cloud Storage 作为来源类型。
- 选择 Palo Alto Cortex XDR Events 作为日志类型。
- 点击获取服务账号作为 Chronicle 服务账号。
- 点击下一步。
为以下输入参数指定值:
- 存储桶 URI: Google Cloud 存储桶网址(例如
gs://cortex-xdr-events-chronicle
)。 - URI 类型:选择包含子目录的目录。
- 来源删除选项:根据您的偏好设置选择删除选项。
- 资产命名空间:资产命名空间。
- 提取标签:应用于此 Feed 中的事件的标签。
- 存储桶 URI: Google Cloud 存储桶网址(例如
点击下一步。
在最终确定界面中查看新的 Feed 配置,然后点击提交。
创建 Feed 后,在信息流列表中找到该 Feed,然后点击该行右侧的三点状操作图标。
选择停用 Feed。
配置对 Cloud Storage 的 Secret JSON 访问权限
- 登录您的 GCP。
- 前往 Secret Manager 页面。
- 选择 Secret EVENT_FRWD_CRTX_KEY。
- 前往权限标签页。
- 向 Storage Object Admin 和 Storage Legacy Bucket Reader 授予对之前创建的存储桶 cortex-xdr-events-chronicle 的访问权限。
为 Cloud Storage 配置 Google SecOps 权限
- 依次前往 IAM 和管理 > IAM。
- 找到 Chronicle 服务账号。
- 向 Storage Object Viewer (roles/storage.objectViewer) 授予对之前创建的存储桶 cortex-xdr-events-chronicle 的访问权限。
配置将 PANW Cortex XDR 事件日志提取到项目 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 作业服务账号。
向 Cloud 作业服务账号授予 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 专业人士寻求解答。