收集 Okta 使用者情境記錄

支援的國家/地區:

本文說明如何使用第三方 API 設定 Google Security Operations 資訊提供,藉此收集 Okta 使用者環境記錄。

事前準備

請確認您已完成下列事前準備事項:

  • Google SecOps 執行個體
  • Okta 租戶或管理控制台的特殊存取權
  • Okta 中的 API 權杖建立權限

設定 IP 許可清單

建立動態饋給前,請先在 Okta 防火牆或網路設定中,將 Google SecOps IP 範圍加入允許清單。

取得 Google SecOps IP 範圍

將 IP 範圍新增至 Okta 使用者情境

  1. 登入 Okta 管理控制台
  2. 依序前往「安全性」>「網路」
  3. 在「IP 位址限制」下方,按一下「編輯」
  4. 以 CIDR 標記法將每個 Google SecOps IP 範圍新增至信任的 IP 位址。
  5. 按一下 [儲存]

設定 Okta User Context 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. 在「Finalize」(完成) 畫面中檢查新的動態饋給設定,然後按一下「Submit」(提交)

設定完成後,動態消息就會開始依時間順序從 Okta 使用者環境例項擷取記錄。

地區端點

Okta 會根據貴機構的所在區域,使用不同的 API 端點:

區域 基準網址 / 主機名稱
美國 (預設) {org-name}.okta.com
歐盟 (歐洲、中東和非洲地區) {org-name}.okta-emea.com
亞太地區 {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.organizationprofile.company event.idm.entity.entity.user.company_name profile.organization 取得的值,如果前者不存在,則從 profile.company 取得。
profile.department event.idm.entity.entity.user.department 取自 profile.department 的值。
profile.emailprofile.secondEmailprofile.login event.idm.entity.entity.user.email_addresses 系統會將 profile.emailprofile.secondEmailprofile.login 的值 (如果是電子郵件且不重複) 合併到這個欄位。
profile.employeeNumber event.idm.entity.entity.user.employee_id 取自 profile.employeeNumber 的值。
profile.firstNameprofile.Preferred_First_Name event.idm.entity.entity.user.first_name profile.firstName 取得的值,如果前者不存在,則從 profile.Preferred_First_Name 取得。
profile.EmployeeWorkGroup event.idm.entity.entity.user.group_identifiers 取自 profile.EmployeeWorkGroup 的值。
profile.HireDateprofile.hiredate event.idm.entity.entity.user.hire_date 如果前者不存在,系統會從 profile.HireDateprofile.hiredate 剖析值。
profile.lastNameprofile.preferred_Last_Name event.idm.entity.entity.user.last_name 如果存在 profile.lastNameprofile.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.managerprofile.managerEmailprofile.managerId event.idm.entity.entity.user.managers 填入的物件包含 profile.manager 中的 user_display_nameprofile.managerEmail 中的 email_addresses,以及 profile.managerId 中的 employee_id
profile.cityprofile.firstBaseCity event.idm.entity.entity.user.office_address.city profile.city 取得的值,如果前者不存在,則從 profile.firstBaseCity 取得。
profile.countryCodeprofile.country event.idm.entity.entity.user.office_address.country_or_region 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.primaryPhoneprofile.mobilePhoneprofile.mobile event.idm.entity.entity.user.phone_numbers profile.primaryPhoneprofile.mobilePhoneprofile.mobile 的值會合併至這個欄位。
profile.terminationDateprofile.terminationdate event.idm.entity.entity.user.termination_date 如果前者不存在,系統會從 profile.terminationDateprofile.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 -> ACTIVESUSPENDED -> SUSPENDEDDEPROVISIONED -> DELETED;否則為 UNKNOWN_AUTHENTICATION_STATUS
profile.displayName event.idm.entity.entity.user.user_display_name 取自 profile.displayName 的值。
profile.samAccountNameprofile.samaccountnameprofile.loginprofile.ldapUid event.idm.entity.entity.user.userid 依優先順序填入:profile.samAccountNameprofile.samaccountnameprofile.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 專業人員尋求答案。