收集 Workday HCM 日志
支持的平台:
Google secops
Siem
本文档介绍了如何使用 API 将 Workday 日志注入到 Google 安全运营中心。解析器会从 JSON 格式的日志中提取 Workday HCM 用户数据。它可处理各种数据转换,包括重命名字段、合并嵌套对象、解析日期,以及为用户属性、雇佣详情和组织结构填充 UDM 字段。此外,它还包含针对格式错误的 JSON 和缺少关键字段的错误处理。
准备工作
- 确保您拥有 Google SecOps 实例。
- 确保您拥有对 Workday 的特权访问权限。
配置 Workday API 身份验证
在 Workday 中创建集成系统用户 (ISU)
- 使用管理员权限登录 Workday。
- 在搜索栏中输入
Create Integration System User
,然后从搜索结果中选择相应任务。 - 输入用户名。
- 设置密码。
- 将会话超时分钟数设置为
0
,以防止 ISU 超时。 - 启用不允许界面会话,以通过限制界面登录来增强安全性。
- 前往维护密码规则任务。
- 将集成系统用户添加到不受密码过期限制的系统用户字段。
在 Workday 中创建集成安全群组
- 在搜索栏中输入
Create Security Group
,然后从搜索结果中选择相应任务。 - 找到租户安全群组的类型字段,然后选择集成系统安全群组(不受约束)。
- 为安全群组提供名称。
- 点击确定。
- 点击新创建的安全组对应的修改。
- 将上一步中的集成系统用户分配给安全群组。
- 点击完成。
向 Workday 中的安全群组授予网域访问权限
- 在搜索栏中输入维护安全群组的权限,然后从搜索结果中选择相应任务。
- 从来源安全群组列表中选择您创建的安全群组,以修改其权限。
- 点击确定。
- 依次前往维护安全群组的权限 > 网域安全策略权限。
- 为每个网域分配必要的权限,例如 GET 操作。
- 点击确定。
- 点击完成以保存更改。
在 Workday 中启用安全政策更改
- 在搜索栏中输入
Activate Pending Security Policy Changes
,然后从搜索结果中选择相应任务。 - 在“备注”字段中输入审核原因,然后点击确定,以启动启用待处理的安全政策更改任务。
- 在下一个界面上,选择确认完成相应任务,然后点击 OK。
配置 API 客户端以进行集成
- 在搜索栏中,输入
Register API Client for Integrations
并选择它。 - 点击创建。
- 提供以下配置详细信息:
- Client Name:输入 API 客户端的名称(例如
Google SecOps Client
)。 - 系统用户:选择您在上一步中创建的集成系统用户。
- 范围:选择 HCM API 或包含工人数据和您要访问的其他区域的相关范围。
- Client Name:输入 API 客户端的名称(例如
- 选择保存。
- 点击 OK 以创建 API 客户端。
- 创建 API 客户端后,保存客户端密钥。您退出此页面后,系统将不会再显示该值。
生成 OAuth 2.0 刷新令牌
- 在 Workday 搜索栏中,输入
Manage Refresh Tokens for Integrations
并选择它。 - 点击生成新的刷新令牌。
- 在 Workday 账号字段中,搜索并选择您创建的集成系统用户。
- 选择相应用户,然后点击确定。
- 复制并保存系统显示的刷新令牌。
获取 API 端点网址
- 在 Workday 搜索栏中,输入
View API Clients
并选择它。 - 在用于集成的 API 客户端下,找到您创建的
Google SecOps Client
。 - 复制并保存以下详细信息:
- 令牌端点:您发送请求以获取访问令牌的网址。
- Workday REST API 端点:您将用于配置与 Google SecOps 集成的网址。
生成 OAuth 访问令牌
使用 curl 或类似的 HTTP 客户端向令牌端点发送 POST 请求:
curl -X POST "https://{hostname}/ccx/oauth2/token" \ -d "grant_type=refresh_token" \ -d "client_id={your_client_id}" \ -d "client_secret={your_client_secret}" \ -d "refresh_token={your_refresh_token}"
这将返回一个访问令牌(例如
"access_token": "abcd1234"
)复制并保存访问令牌。
在 Google SecOps 中配置 Feed 以注入 Workday 日志
- 依次前往 SIEM 设置 > Feed。
- 点击新增。
- 在Feed 名称字段中,输入 Feed 的名称(例如
Workday Logs
)。 - 选择第三方 API 作为来源类型。
- 选择 Workday 日志类型。
- 点击下一步。
- 为以下输入参数指定值:
- API 主机名:Workday REST API 端点的网址。
- 租户:Workday API 端点的最后一个路径元素,用于标识您的实例。
- 访问令牌:OAuth 访问令牌。
- 资源命名空间:资源命名空间。
- 提取标签:应用于此 Feed 中的事件的标签。
- 点击下一步。
- 在最终确定界面中查看 Feed 配置,然后点击提交。
UDM 映射表
日志字段 | UDM 映射 | 逻辑 |
---|---|---|
@timestamp |
read_only_udm.metadata.event_timestamp.seconds |
原始日志的 @timestamp 字段会重命名为 timestamp ,并解析为自公元纪年开始算起的秒数时间戳。 |
businessTitle |
read_only_udm.entity.entity.user.title |
直接从原始日志中的 businessTitle 字段映射而来。 |
descriptor |
read_only_udm.entity.entity.user.user_display_name |
直接从原始日志中的 descriptor 字段映射而来。 |
Employee_ID |
read_only_udm.entity.entity.user.employee_id |
直接从原始日志中的 Employee_ID 字段映射而来。 |
Employee_ID |
read_only_udm.entity.metadata.product_entity_id |
如果不存在 id ,则直接从原始日志中的 Employee_ID 字段映射。 |
gopher-supervisor.descriptor |
read_only_udm.entity.entity.user.managers.user_display_name |
直接从原始日志中的 gopher-supervisor.descriptor 字段映射,重命名为 empmanager.user_display_name ,然后合并到 managers 。 |
gopher-supervisor.id |
read_only_udm.entity.entity.user.managers.product_object_id |
直接从原始日志中的 gopher-supervisor.id 字段映射,重命名为 empmanager.product_object_id ,然后合并到 managers 。 |
gopher-supervisor.primaryWorkEmail |
read_only_udm.entity.entity.user.managers.email_addresses |
直接从原始日志中的 gopher-supervisor.primaryWorkEmail 字段映射,然后合并到 managers 。 |
gopher-time-off.date |
read_only_udm.entity.entity.user.time_off.interval.start_time |
从原始日志中的 gopher-time-off 数组内的 gopher-time-off.date 字段解析为日期。 |
gopher-time-off.descriptor |
read_only_udm.entity.entity.user.time_off.description |
直接从原始日志中的 gopher-time-off 数组内的 gopher-time-off.descriptor 字段映射而来。 |
Hire_Date |
read_only_udm.entity.entity.user.hire_date |
从原始日志中的 Hire_Date 字段解析为日期。 |
id |
read_only_udm.entity.metadata.product_entity_id |
直接从原始日志中的 id 字段(如果有)映射而来。 |
Job_Profile |
read_only_udm.entity.entity.user.title |
如果不存在 businessTitle ,则直接从原始日志中的 Job_Profile 字段映射。 |
Legal_Name_First_Name |
read_only_udm.entity.entity.user.first_name |
直接从原始日志中的 Legal_Name_First_Name 字段映射而来。 |
Legal_Name_Last_Name |
read_only_udm.entity.entity.user.last_name |
直接从原始日志中的 Legal_Name_Last_Name 字段映射而来。 |
location.descriptor |
read_only_udm.entity.entity.location.city |
直接从原始日志中的 location.descriptor 字段映射,并重命名为 _location.city ,然后重命名为 entity.entity.location.city 。 |
primarySupervisoryOrganization.descriptor |
read_only_udm.entity.entity.user.department |
直接从原始日志中的 primarySupervisoryOrganization.descriptor 字段映射而来。 |
primaryWorkEmail |
read_only_udm.entity.entity.user.email_addresses |
直接从原始日志中的 primaryWorkEmail 字段映射而来。 |
primaryWorkPhone |
read_only_udm.entity.entity.user.phone_numbers |
直接从原始日志中的 primaryWorkPhone 字段映射而来。 |
Termination_Date |
read_only_udm.entity.entity.user.termination_date |
从原始日志中的 Termination_Date 字段解析为日期。 |
Work_Email |
read_only_udm.entity.entity.user.email_addresses |
如果不存在 primaryWorkEmail ,则直接从原始日志中的 Work_Email 字段映射。 |
collection_time |
read_only_udm.metadata.event_timestamp.collected_timestamp |
日志的 collection_time 会映射到 collected_timestamp 。 |
变化
2024-06-25
增强功能:
- 添加了对 UDM 事件的支持
- 在
href"
上添加了 Grok 模式,以提取字段entity_host_name
- 将
entity_host_name
映射到entity.entity.asset.hostname
- 将
href
映射到entity.entity.url
2024-06-24
增强功能:
- 添加了对 CSV 日志的支持
2022-09-15
- 已迁移到默认解析器
2022-05-11
- 已迁移到默认解析器
需要更多帮助?向社区成员和 Google SecOps 专业人士寻求解答。