收集 Workday HCM 日志

支持的平台:

本文档介绍了如何使用 API 将 Workday 日志注入到 Google 安全运营中心。解析器会从 JSON 格式的日志中提取 Workday HCM 用户数据。它可处理各种数据转换,包括重命名字段、合并嵌套对象、解析日期,以及为用户属性、雇佣详情和组织结构填充 UDM 字段。此外,它还包含针对格式错误的 JSON 和缺少关键字段的错误处理。

准备工作

  • 确保您拥有 Google SecOps 实例。
  • 确保您拥有对 Workday 的特权访问权限。

配置 Workday API 身份验证

在 Workday 中创建集成系统用户 (ISU)

  1. 使用管理员权限登录 Workday。
  2. 在搜索栏中输入 Create Integration System User,然后从搜索结果中选择相应任务。
  3. 输入用户名
  4. 设置密码
  5. 会话超时分钟数设置为 0,以防止 ISU 超时。
  6. 启用不允许界面会话,以通过限制界面登录来增强安全性。
  7. 前往维护密码规则任务。
  8. 将集成系统用户添加到不受密码过期限制的系统用户字段。

在 Workday 中创建集成安全群组

  1. 在搜索栏中输入 Create Security Group,然后从搜索结果中选择相应任务。
  2. 找到租户安全群组的类型字段,然后选择集成系统安全群组(不受约束)
  3. 为安全群组提供名称
  4. 点击确定
  5. 点击新创建的安全组对应的修改
  6. 将上一步中的集成系统用户分配给安全群组。
  7. 点击完成

向 Workday 中的安全群组授予网域访问权限

  1. 在搜索栏中输入维护安全群组的权限,然后从搜索结果中选择相应任务。
  2. 来源安全群组列表中选择您创建的安全群组,以修改其权限。
  3. 点击确定
  4. 依次前往维护安全群组的权限 > 网域安全策略权限
  5. 为每个网域分配必要的权限,例如 GET 操作。
  6. 点击确定
  7. 点击完成以保存更改。

在 Workday 中启用安全政策更改

  1. 在搜索栏中输入 Activate Pending Security Policy Changes,然后从搜索结果中选择相应任务。
  2. 在“备注”字段中输入审核原因,然后点击确定,以启动启用待处理的安全政策更改任务。
  3. 在下一个界面上,选择确认完成相应任务,然后点击 OK

配置 API 客户端以进行集成

  1. 在搜索栏中,输入 Register API Client for Integrations 并选择它。
  2. 点击创建
  3. 提供以下配置详细信息:
    • Client Name:输入 API 客户端的名称(例如 Google SecOps Client)。
    • 系统用户:选择您在上一步中创建的集成系统用户
    • 范围:选择 HCM API 或包含工人数据和您要访问的其他区域的相关范围。
  4. 选择保存
  5. 点击 OK 以创建 API 客户端。
  6. 创建 API 客户端后,保存客户端密钥。您退出此页面后,系统将不会再显示该值。

生成 OAuth 2.0 刷新令牌

  1. 在 Workday 搜索栏中,输入 Manage Refresh Tokens for Integrations 并选择它。
  2. 点击生成新的刷新令牌
  3. Workday 账号字段中,搜索并选择您创建的集成系统用户
  4. 选择相应用户,然后点击确定
  5. 复制并保存系统显示的刷新令牌。

获取 API 端点网址

  1. 在 Workday 搜索栏中,输入 View API Clients 并选择它。
  2. 用于集成的 API 客户端下,找到您创建的 Google SecOps Client
  3. 复制并保存以下详细信息:
    • 令牌端点:您发送请求以获取访问令牌的网址
    • Workday REST API 端点:您将用于配置与 Google SecOps 集成的网址

生成 OAuth 访问令牌

  1. 使用 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}"
    
  2. 这将返回一个访问令牌(例如 "access_token": "abcd1234"

  3. 复制并保存访问令牌。

在 Google SecOps 中配置 Feed 以注入 Workday 日志

  1. 依次前往 SIEM 设置 > Feed
  2. 点击新增
  3. Feed 名称字段中,输入 Feed 的名称(例如 Workday Logs)。
  4. 选择第三方 API 作为来源类型
  5. 选择 Workday 日志类型。
  6. 点击下一步
  7. 为以下输入参数指定值:
    • API 主机名:Workday REST API 端点的网址。
    • 租户:Workday API 端点的最后一个路径元素,用于标识您的实例。
    • 访问令牌:OAuth 访问令牌。
    • 资源命名空间资源命名空间
    • 提取标签:应用于此 Feed 中的事件的标签。
  8. 点击下一步
  9. 最终确定界面中查看 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 专业人士寻求解答。