Workday HCM ログを収集する

以下でサポートされています。

このドキュメントでは、API を使用して Workday ログを Google Security Operations に取り込む方法について説明します。パーサーは、JSON 形式のログから Workday HCM ユーザーデータを抽出します。フィールド名の変更、ネストされたオブジェクトの統合、日付の解析、ユーザー属性、雇用情報、組織構造の UDM フィールドへのデータの入力など、さまざまなデータ変換を処理します。また、形式が正しくない JSON や重要なフィールドの欠落に対するエラー処理も含まれています。

始める前に

次の前提条件を満たしていることを確認します。

  • Google SecOps インスタンス。
  • Workday への特権アクセス。

Workday API 認証を構成する

Workday で統合システム ユーザー(ISU)を作成する

  1. 管理者権限で Workday にログインします。
  2. 検索バーに「Create Integration System User」と入力し、結果からタスクを選択します。
  3. [Username] にユーザー名を入力します。
  4. パスワードを設定します。
  5. ISU がタイムアウトしないように、[Session Timeout Minutes] を 0 に設定します。
  6. [UI セッションを許可しない] を有効にして、UI ログインを制限することでセキュリティを強化します。
  7. [パスワード ルールの維持] タスクに移動します。
  8. 統合システム ユーザーを [パスワードの有効期限が切れないシステム ユーザー] フィールドに追加します。

Workday で統合セキュリティ グループを作成する

  1. 検索バーに「Create Security Group」と入力し、結果からタスクを選択します。
  2. [テナント化されたセキュリティ グループ] フィールドを見つけて、[統合システム セキュリティ グループ(制限なし)] を選択します。
  3. セキュリティ グループの名前を指定します。
  4. [OK] をクリックします。
  5. 新しく作成したセキュリティ グループの [編集] をクリックします。
  6. 前の手順で作成した統合システム ユーザーをセキュリティ グループに割り当てます。
  7. [完了] をクリックします。

Workday でセキュリティ グループにドメイン アクセス権を付与する

  1. 検索バーに「セキュリティ グループの権限を維持」と入力し、結果からタスクを選択します。
  2. [送信元セキュリティ グループ] リストから作成したセキュリティ グループを選択して、権限を変更します。
  3. [OK] をクリックします。
  4. [セキュリティ グループの権限を維持] > [ドメイン セキュリティ ポリシーの権限] に移動します。
  5. 各ドメインに必要な権限(GET オペレーションなど)を割り当てます。
  6. [OK] をクリックします。
  7. [完了] をクリックして変更を保存します。

Workday でセキュリティ ポリシーの変更を有効にする

  1. 検索バーに「Activate Pending Security Policy Changes」と入力し、結果からタスクを選択します。
  2. コメント フィールドに監査の理由を入力して [OK] をクリックし、[保留中のセキュリティ ポリシーの変更を有効にする] タスクを開始します。
  3. 次の画面で [Confirm] を選択してタスクを完了し、[OK] をクリックします。

統合用の API クライアントを構成する

  1. 検索バーに「Register API Client for Integrations」と入力して選択します。
  2. [作成] をクリックします。
  3. 次の構成の詳細を入力します。
    • クライアント名: 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. ユーザーを選択して [OK] をクリックします。
  5. 表示された更新トークンをコピーして保存します。

API エンドポイントの URL を取得する

  1. Workday の検索バーに「View API Clients」と入力して選択します。
  2. [API Clients for Integrations] で、作成した Google SecOps Client を見つけます。
  3. 次の詳細情報をコピーして保存します。
    • トークン エンドポイント: アクセス トークンを取得するためのリクエストを送信する URL
    • Workday REST API エンドポイント: Google SecOps との統合を構成するために使用する URL

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 プラットフォームでフィードを設定するには、次の 2 つのエントリ ポイントがあります。

  • [SIEM 設定] > [フィード]
  • [Content Hub] > [Content Packs]

[SIEM 設定] > [フィード] でフィードを設定する

フィードを構成する手順は次のとおりです。

  1. [SIEM Settings] > [Feeds] に移動します。
  2. [Add New Feed] をクリックします。
  3. 次のページで [単一のフィードを設定] をクリックします。
  4. [フィード名] フィールドに、フィードの名前を入力します(例: Workday Logs)。
  5. [ソースタイプ] として [サードパーティ API] を選択します。
  6. [Workday] ログタイプを選択します。
  7. [次へ] をクリックします。
  8. 次の入力パラメータの値を指定します。
    • API ホスト名: Workday REST API エンドポイントの URL。
    • テナント: インスタンスを識別する Workday API エンドポイントの最後のパス要素。
    • アクセス トークン: OAuth アクセス トークン。
  9. [次へ] をクリックします。
  10. [Finalize] 画面でフィードの設定を確認し、[Submit] をクリックします。

コンテンツ ハブからフィードを設定する

次のフィールドに値を指定します。

  • API Hostname: Workday REST API エンドポイントの FQDN。
  • テナント: インスタンスを識別する Workday API エンドポイントの最後のパス要素。
  • アクセス トークン: OAuth アクセス トークン。

詳細オプション

  • フィード名: フィードを識別する事前入力された値。
  • ソースタイプ: Google SecOps にログを収集するために使用される方法。
  • アセットの名前空間: フィードに関連付けられた名前空間。
  • Ingestion Labels: このフィードのすべてのイベントに適用されるラベル。

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_timecollected_timestamp にマッピングされます。

さらにサポートが必要な場合 コミュニティ メンバーや Google SecOps のプロフェッショナルから回答を得ることができます。