Okta 사용자 컨텍스트 로그 수집

다음에서 지원:

이 문서에서는 서드 파티 API를 사용하여 Google Security Operations 피드를 설정하여 Okta 사용자 컨텍스트 로그를 수집하는 방법을 설명합니다.

시작하기 전에

다음 기본 요건이 충족되었는지 확인합니다.

  • Google SecOps 인스턴스
  • Okta 테넌트 또는 관리 콘솔에 대한 액세스 권한
  • Okta의 API 토큰 생성 권한

IP 허용 목록 구성

피드를 만들기 전에 Okta 방화벽 또는 네트워크 설정에서 Google SecOps IP 범위를 허용 목록에 추가해야 합니다.

Google SecOps IP 범위 가져오기

Okta 사용자 컨텍스트에 IP 범위 추가

  1. Okta 관리 콘솔에 로그인합니다.
  2. 보안 > 네트워크로 이동합니다.
  3. IP 주소 제한에서 수정을 클릭합니다.
  4. 각 Google SecOps IP 범위를 CIDR 표기법으로 신뢰할 수 있는 IP 주소에 추가합니다.
  5. 저장을 클릭합니다.

Okta 사용자 컨텍스트 API 액세스 구성

Google SecOps가 사용자 컨텍스트 데이터를 가져올 수 있도록 하려면 읽기 권한이 있는 API 토큰을 만들어야 합니다.

API 토큰 만들기

  1. Okta 관리 콘솔에 로그인합니다.
  2. 보안 > API로 이동합니다.
  3. 토큰 탭을 선택합니다.
  4. 토큰 만들기를 클릭합니다.
  5. 다음 구성 세부정보를 제공합니다.
    • 이름: 설명이 포함된 이름을 입력합니다 (예: Google SecOps Integration).
    • 설명 (선택사항): 설명을 입력합니다.
  6. 토큰 만들기를 클릭합니다.

API 사용자 인증 정보 기록

API 토큰을 만든 후 다음 사용자 인증 정보가 표시됩니다.

  • API 토큰: API 토큰 값 (예: 00QCGr-1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1)

필수 API 권한

API 토큰에는 Okta에서 다음 권한이 필요합니다.

권한/역할 액세스 수준 목적
읽기 전용 관리자 읽기 사용자 프로필 데이터 액세스
최고 관리자 읽기 모든 사용자 데이터에 대한 전체 액세스 권한

피드 설정

피드를 구성하려면 다음 단계를 따르세요.

  1. SIEM 설정> 피드로 이동합니다.
  2. 새 피드 추가를 클릭합니다.
  3. 다음 페이지에서 단일 피드 구성을 클릭합니다.
  4. 피드 이름 필드에 피드 이름을 입력합니다(예: Okta User Context).
  5. 소스 유형으로 서드 파티 API를 선택합니다.
  6. 로그 유형으로 Okta 사용자 컨텍스트를 선택합니다.
  7. 다음을 클릭합니다.
  8. 다음 입력 매개변수의 값을 지정합니다.

    • 인증 HTTP 헤더: 다음 형식으로 인증 사용자 인증 정보를 입력합니다.

      Authorization:SSWS your-api-token
      
      • 예를 들면 다음과 같습니다. Authorization:SSWS 00QCGr-1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1
    • API 호스트 이름: Okta 인스턴스의 정규화된 도메인 이름입니다 (예: example.okta.com, 구성된 커스텀 도메인은 아님).

      • 예를 들면 다음과 같습니다. company.okta.com
    • 관리자 ID 참조 필드: Okta 이외의 ID를 사용하여 관리자를 참조할 때 필요한 ID입니다 (선택사항).

    • 애셋 네임스페이스: 애셋 네임스페이스입니다.

    • 수집 라벨: 이 피드의 이벤트에 적용할 라벨입니다.

  9. 다음을 클릭합니다.

  10. 확정 화면에서 새 피드 구성을 검토한 다음 제출을 클릭합니다.

설정이 완료되면 피드가 Okta 사용자 컨텍스트 인스턴스에서 로그를 시간순으로 가져오기 시작합니다.

리전 엔드포인트

Okta는 조직의 지역에 따라 다른 API 엔드포인트를 사용합니다.

리전 기본 URL / 호스트 이름
미국 (기본값) {org-name}.okta.com
EU (유럽, 중동, 아프리카) {org-name}.okta-emea.com
APAC {org-name}.okta.com.au
미리보기 (테스트) {org-name}.oktapreview.com

Okta 인스턴스 리전에 해당하는 호스트 이름을 사용합니다.

API 비율 제한

Okta API에는 다음과 같은 비율 제한이 있습니다.

  • 기본 비율 제한: 대부분의 엔드포인트에 대해 분당 600개 요청
  • 시스템 로그 API: 분당 60개 요청
  • 사용자 엔드포인트: 분당 600개 요청

Google SecOps는 지수 백오프를 사용하여 비율 제한을 자동으로 처리합니다. 문제가 발생하면 Okta 지원팀에 문의하여 API 한도를 늘리세요.

UDM 매핑 테이블

로그 필드 UDM 매핑 논리
activated event.idm.entity.entity.labels activated가 있으면 값이 키 'activated'가 있는 키-값 쌍으로 추가됩니다.
created event.idm.entity.entity.labels created가 있으면 값이 'created' 키가 있는 키-값 쌍으로 추가됩니다.
profile.costCenter event.idm.entity.entity.labels profile.costCenter가 있으면 해당 값이 키 'costCenter'가 있는 키-값 쌍으로 추가됩니다.
profile.Function event.idm.entity.entity.labels profile.Function가 있으면 해당 값이 'Function' 키가 있는 키-값 쌍으로 추가됩니다.
statusChanged event.idm.entity.entity.labels statusChanged가 있으면 값이 'statusChanged' 키가 있는 키-값 쌍으로 추가됩니다.
type.id event.idm.entity.entity.labels type.id가 있으면 값이 'type_id' 키가 있는 키-값 쌍으로 추가됩니다.
profile.location event.idm.entity.entity.location.name profile.location에서 가져온 값입니다.
profile.AD_ObjectGUID event.idm.entity.entity.user.attribute.labels profile.AD_ObjectGUID가 있으면 해당 값이 키 'AD_ObjectGUID'가 있는 키-값 쌍으로 추가됩니다.
profile.ADpwdLastSet event.idm.entity.entity.user.attribute.labels profile.ADpwdLastSet가 있으면 해당 값이 키 'ADpwdLastSet'이 있는 키-값 쌍으로 추가됩니다.
profile.AFF_Code event.idm.entity.entity.user.attribute.labels profile.AFF_Code가 있으면 값이 키 'AFF_Code'가 있는 키-값 쌍으로 추가됩니다.
profile.Desk_Location_WD event.idm.entity.entity.user.attribute.labels profile.Desk_Location_WD가 있으면 해당 값이 키 'Desk_Location_WD'가 있는 키-값 쌍으로 추가됩니다.
profile.Mailing_Address_WD event.idm.entity.entity.user.attribute.labels profile.Mailing_Address_WD가 있으면 값이 'Mailing_Address_WD' 키가 있는 키-값 쌍으로 추가됩니다.
profile.Manager_UPN event.idm.entity.entity.user.attribute.labels profile.Manager_UPN이 있으면 값이 'Manager_UPN' 키가 있는 키-값 쌍으로 추가됩니다.
profile.PRIVATE_CONF_Profile event.idm.entity.entity.user.attribute.labels profile.PRIVATE_CONF_Profile가 있으면 값이 'PRIVATE_CONF_Profile' 키가 있는 키-값 쌍으로 추가됩니다.
profile.Region_WD event.idm.entity.entity.user.attribute.labels profile.Region_WD이 있으면 값이 'Region_WD' 키가 있는 키-값 쌍으로 추가됩니다.
profile.Subsidiary_Company event.idm.entity.entity.user.attribute.labels profile.Subsidiary_Company가 있으면 값이 'Subsidiary_Company' 키가 있는 키-값 쌍으로 추가됩니다.
profile.Telephone_Work event.idm.entity.entity.user.attribute.labels profile.Telephone_Work이 있으면 값이 'Telephone_Work' 키가 있는 키-값 쌍으로 추가됩니다.
profile.Temp_WD_Primary_Email event.idm.entity.entity.user.attribute.labels profile.Temp_WD_Primary_Email가 있으면 해당 값이 'Temp_WD_Primary_Email' 키가 있는 키-값 쌍으로 추가됩니다.
profile.VMware_WS1_Username event.idm.entity.entity.user.attribute.labels profile.VMware_WS1_Username가 있으면 값이 키 'VMware_WS1_Username'이 있는 키-값 쌍으로 추가됩니다.
profile.Work_Street_Address_WD event.idm.entity.entity.user.attribute.labels profile.Work_Street_Address_WD가 있으면 해당 값이 키 'Work_Street_Address_WD'가 있는 키-값 쌍으로 추가됩니다.
profile.Workato_WD_Primary_Email event.idm.entity.entity.user.attribute.labels profile.Workato_WD_Primary_Email가 있으면 해당 값이 'Workato_WD_Primary_Email' 키가 있는 키-값 쌍으로 추가됩니다.
profile.Workday_ID event.idm.entity.entity.user.attribute.labels profile.Workday_ID가 있으면 값이 'Workday_ID' 키가 있는 키-값 쌍으로 추가됩니다.
profile.Worker_Type_WD event.idm.entity.entity.user.attribute.labels profile.Worker_Type_WD가 있으면 해당 값이 키 'Worker_Type_WD'가 있는 키-값 쌍으로 추가됩니다.
profile.businessUnit event.idm.entity.entity.user.attribute.labels profile.businessUnit가 있으면 값이 'businessUnit' 키가 있는 키-값 쌍으로 추가됩니다.
profile.companyName event.idm.entity.entity.user.attribute.labels profile.companyName가 있으면 값이 'companyName' 키가 있는 키-값 쌍으로 추가됩니다.
profile.contingentSupplierName event.idm.entity.entity.user.attribute.labels profile.contingentSupplierName가 있으면 값이 'contingentSupplierName' 키가 있는 키-값 쌍으로 추가됩니다.
profile.conversationId event.idm.entity.entity.user.attribute.labels profile.conversationId가 있으면 값이 'conversationId' 키가 있는 키-값 쌍으로 추가됩니다.
profile.distinguishedName event.idm.entity.entity.user.attribute.labels profile.distinguishedName이 있으면 값이 'distinguishedName' 키가 있는 키-값 쌍으로 추가됩니다.
profile.division event.idm.entity.entity.user.attribute.labels profile.division가 있으면 값이 'division' 키가 있는 키-값 쌍으로 추가됩니다.
profile.emailPrefix event.idm.entity.entity.user.attribute.labels profile.emailPrefix가 있으면 값이 'emailPrefix' 키가 있는 키-값 쌍으로 추가됩니다.
profile.employeeType event.idm.entity.entity.user.attribute.labels profile.employeeType가 있으면 해당 값이 키가 'employeeType'인 키-값 쌍으로 추가됩니다.
profile.homePostalAddress event.idm.entity.entity.user.attribute.labels profile.homePostalAddress가 있으면 값이 'homePostalAddress' 키가 있는 키-값 쌍으로 추가됩니다.
profile.isManager event.idm.entity.entity.user.attribute.labels profile.isManager가 있으면 값이 'isManager' 키가 있는 키-값 쌍으로 추가됩니다.
lastLogin event.idm.entity.entity.user.attribute.labels lastLogin가 있으면 값이 키 'lastLogin'이 있는 키-값 쌍으로 추가됩니다.
profile.leaveOfAbsence event.idm.entity.entity.user.attribute.labels profile.leaveOfAbsence가 있으면 값이 'leaveOfAbsence' 키가 있는 키-값 쌍으로 추가됩니다.
profile.managerDn event.idm.entity.entity.user.attribute.labels profile.managerDn이 있으면 값이 'managerDn' 키가 있는 키-값 쌍으로 추가됩니다.
profile.payGroup event.idm.entity.entity.user.attribute.labels profile.payGroup가 있으면 값이 'payGroup' 키가 있는 키-값 쌍으로 추가됩니다.
profile.wdemployeeID event.idm.entity.entity.user.attribute.labels profile.wdemployeeID가 있으면 값이 'wdemployeeID' 키가 있는 키-값 쌍으로 추가됩니다.
profile.zipCode event.idm.entity.entity.user.attribute.labels profile.zipCode가 있으면 해당 값이 키 'zipCode'가 있는 키-값 쌍으로 추가됩니다.
profile.userType event.idm.entity.entity.user.attribute.roles profile.userType가 있으면 해당 값이 역할 배열에 추가됩니다.
profile.organization, profile.company event.idm.entity.entity.user.company_name profile.organization에서 가져온 값입니다. profile.organization이 없는 경우 profile.company에서 가져옵니다.
profile.department event.idm.entity.entity.user.department profile.department에서 가져온 값입니다.
profile.email, profile.secondEmail, profile.login event.idm.entity.entity.user.email_addresses profile.email, profile.secondEmail, profile.login의 값 (이메일이고 중복이 아닌 경우)이 이 필드로 병합됩니다.
profile.employeeNumber event.idm.entity.entity.user.employee_id profile.employeeNumber에서 가져온 값입니다.
profile.firstName, profile.Preferred_First_Name event.idm.entity.entity.user.first_name profile.firstName에서 가져온 값입니다. profile.firstName이 없는 경우 profile.Preferred_First_Name에서 가져옵니다.
profile.EmployeeWorkGroup event.idm.entity.entity.user.group_identifiers profile.EmployeeWorkGroup에서 가져온 값입니다.
profile.HireDate, profile.hiredate event.idm.entity.entity.user.hire_date 값이 profile.HireDate에서 파싱됩니다. profile.HireDate이 없는 경우 profile.hiredate에서 파싱됩니다.
profile.lastName, profile.preferred_Last_Name event.idm.entity.entity.user.last_name profile.lastName 또는 profile.preferred_Last_Name이 있는 경우 profile.lastName에서 가져온 값입니다.
lastLogin event.idm.entity.entity.user.last_login_time 값은 lastLogin에서 파싱됩니다.
passwordChanged event.idm.entity.entity.user.last_password_change_time 값은 passwordChanged에서 파싱됩니다.
profile.manager, profile.managerEmail, profile.managerId event.idm.entity.entity.user.managers profile.manageruser_display_name, profile.managerEmailemail_addresses, profile.managerIdemployee_id이 포함된 객체로 채워집니다.
profile.city, profile.firstBaseCity event.idm.entity.entity.user.office_address.city profile.city에서 가져온 값입니다. profile.city이 없는 경우 profile.firstBaseCity에서 가져옵니다.
profile.countryCode, profile.country event.idm.entity.entity.user.office_address.country_or_region profile.countryCode에서 가져온 값입니다. profile.countryCode이 없는 경우 profile.country에서 가져옵니다.
profile.streetAddress event.idm.entity.entity.user.personal_address.name profile.streetAddress에서 가져온 값입니다.
profile.state event.idm.entity.entity.user.personal_address.state profile.state에서 가져온 값입니다.
profile.primaryPhone, profile.mobilePhone, profile.mobile event.idm.entity.entity.user.phone_numbers profile.primaryPhone, profile.mobilePhone, profile.mobile의 값이 이 필드로 병합됩니다.
profile.terminationDate, profile.terminationdate event.idm.entity.entity.user.termination_date 값이 profile.terminationDate에서 파싱됩니다. profile.terminationDate이 없는 경우 profile.terminationdate에서 파싱됩니다.
profile.title event.idm.entity.entity.user.title profile.title에서 가져온 값입니다.
status event.idm.entity.entity.user.user_authentication_status status에서 매핑: ACTIVE/RECOVERY/LOCKED_OUT/PASSWORD_EXPIRED -> ACTIVE; SUSPENDED -> SUSPENDED; DEPROVISIONED -> DELETED; 그 외에는 UNKNOWN_AUTHENTICATION_STATUS
profile.displayName event.idm.entity.entity.user.user_display_name profile.displayName에서 가져온 값입니다.
profile.samAccountName, profile.samaccountname, profile.login, profile.ldapUid event.idm.entity.entity.user.userid 우선순위가 profile.samAccountName, profile.samaccountname, profile.login (이메일이 아닌 경우), profile.ldapUid (profile.login이 이메일이 아닌 경우)로 채워집니다.
event.idm.entity.metadata.entity_type USER로 설정합니다.
id event.idm.entity.metadata.product_entity_id id에서 가져온 값입니다.
event.idm.entity.metadata.product_name Identity Cloud로 설정합니다.
event.idm.entity.metadata.vendor_name Okta로 설정합니다.

도움이 더 필요하신가요? 커뮤니티 회원 및 Google SecOps 전문가에게 문의하여 답변을 받으세요.