Workday HCM 로그 수집
다음에서 지원:
Google SecOps
SIEM
이 문서에서는 API를 사용하여 Workday 로그를 Google Security Operations로 수집하는 방법을 설명합니다. 파서는 JSON 형식 로그에서 Workday HCM 사용자 데이터를 추출합니다. 필드 이름 바꾸기, 중첩된 객체 병합, 날짜 파싱, 사용자 속성, 고용 세부정보, 조직 구조의 UDM 필드 채우기 등 다양한 데이터 변환을 처리합니다. 또한 잘못된 JSON 및 누락된 중요 필드에 대한 오류 처리도 포함됩니다.
시작하기 전에
다음 기본 요건이 충족되었는지 확인합니다.
- Google SecOps 인스턴스
- Workday에 대한 액세스 권한 관리
Workday API 인증 구성
Workday에서 통합 시스템 사용자 (ISU) 만들기
- 관리자 권한으로 Workday에 로그인합니다.
- 검색창에
Create Integration System User
를 입력하고 결과에서 작업을 선택합니다. - Username(사용자 이름)을 입력합니다.
- 비밀번호를 설정합니다.
- ISU의 시간 초과를 방지하려면 세션 제한 시간(분)을
0
로 설정합니다. - UI 세션 허용 안 함을 사용 설정하여 UI 로그인을 제한하여 보안을 강화합니다.
- 비밀번호 규칙 유지 작업으로 이동합니다.
- 통합 시스템 사용자를 비밀번호 만료에서 제외된 시스템 사용자 필드에 추가합니다.
Workday에서 통합 보안 그룹 만들기
- 검색창에
Create Security Group
를 입력하고 결과에서 작업을 선택합니다. - Type of Tenanted Security Group(테넌트 보안 그룹 유형) 필드를 찾아 Integration System Security Group (Unconstrained)(통합 시스템 보안 그룹(제약 없음))을 선택합니다.
- 보안 그룹의 이름을 입력합니다.
- 확인을 클릭합니다.
- 새로 만든 보안 그룹의 수정을 클릭합니다.
- 이전 단계의 통합 시스템 사용자를 보안 그룹에 할당합니다.
- 완료를 클릭합니다.
Workday에서 보안 그룹에 도메인 액세스 권한 부여
- 검색창에 Maintain Permissions for Security Group을 입력하고 결과에서 작업을 선택합니다.
- 소스 보안 그룹 목록에서 생성한 보안 그룹을 선택하여 권한을 수정합니다.
- 확인을 클릭합니다.
- 보안 그룹의 권한 유지 > 도메인 보안 정책 권한으로 이동합니다.
- GET 작업과 같은 각 도메인에 필요한 권한을 할당합니다.
- 확인을 클릭합니다.
- 완료를 클릭하여 변경사항을 저장합니다.
Workday에서 보안 정책 변경사항 활성화
- 검색창에
Activate Pending Security Policy Changes
를 입력하고 결과에서 작업을 선택합니다. - 댓글 필드에 감사 이유를 입력하여 대기 중인 보안 정책 변경사항 활성화 작업을 시작한 다음 확인을 클릭합니다.
- 다음 화면에서 확인을 선택하여 작업을 완료한 다음 확인을 클릭합니다.
통합을 위한 API 클라이언트 구성
- 검색창에
Register API Client for Integrations
를 입력하고 선택합니다. - 만들기를 클릭합니다.
- 다음 구성 세부정보를 제공합니다.
- 클라이언트 이름: API 클라이언트의 이름을 입력합니다 (예:
Google SecOps Client
). - 시스템 사용자: 이전 단계에서 만든 통합 시스템 사용자를 선택합니다.
- 범위: HCM API 또는 액세스하는 직원 데이터 및 기타 영역이 포함된 관련 범위를 선택합니다.
- 클라이언트 이름: API 클라이언트의 이름을 입력합니다 (예:
- 저장을 선택합니다.
- 확인을 클릭하여 API 클라이언트를 만듭니다.
- API 클라이언트를 만든 후 클라이언트 보안 비밀번호를 저장합니다. 페이지를 종료한 후에는 다시 표시되지 않습니다.
OAuth 2.0 갱신 토큰 생성
- Workday 검색창에
Manage Refresh Tokens for Integrations
을 입력하고 선택합니다. - 새로고침 토큰 생성을 클릭합니다.
- Workday 계정 필드에서 생성한 통합 시스템 사용자를 검색하여 선택합니다.
- 사용자를 선택하고 확인을 클릭합니다.
- 표시된 갱신 토큰을 복사하여 저장합니다.
API 엔드포인트 URL 가져오기
- Workday 검색창에
View API Clients
을 입력하고 선택합니다. - 통합용 API 클라이언트에서 생성한
Google SecOps Client
를 찾습니다. - 다음 세부정보를 복사하여 저장합니다.
- 토큰 엔드포인트: 액세스 토큰을 획득하기 위해 요청을 보낼 URL입니다.
- Workday REST API 엔드포인트: Google SecOps와의 통합을 구성하는 데 사용할 URL입니다.
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"
)이 반환됩니다.액세스 토큰을 복사하여 저장합니다.
피드 설정
피드를 구성하려면 다음 단계를 따르세요.
- SIEM 설정 > 피드로 이동합니다.
- 새 피드 추가를 클릭합니다.
- 다음 페이지에서 단일 피드 구성을 클릭합니다.
- 피드 이름 필드에 피드 이름을 입력합니다 (예:
Workday Logs
). - 소스 유형으로 서드 파티 API를 선택합니다.
- Workday 로그 유형을 선택합니다.
- 다음을 클릭합니다.
- 다음 입력 파라미터의 값을 지정합니다.
- API 호스트 이름: Workday REST API 엔드포인트의 URL입니다.
- 테넌트: 인스턴스를 식별하는 Workday API 엔드포인트의 마지막 경로 요소입니다.
- 액세스 토큰: OAuth 액세스 토큰입니다.
- 다음을 클릭합니다.
- 확정 화면에서 피드 구성을 검토한 다음 제출을 클릭합니다.
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 에 매핑됩니다. |
도움이 더 필요하신가요? 커뮤니티 회원 및 Google SecOps 전문가로부터 답변을 받으세요.