收集 Okta 日志
支持的平台:
Google SecOps
SIEM
本文档介绍了如何使用 Okta API 将 Okta 日志提取到 Google 安全运营中心。解析器会提取系统日志,同时处理 JSON 数组中的单个事件和批量事件。该服务会将数据标准化为 UDM 格式,将 Okta 字段映射到 UDM 等效字段,使用解析的用户代理、地理信息和身份验证详细信息丰富数据,并根据结果和风险信息生成安全结果事件。
准备工作
- 确保您有一个 Google SecOps 实例。
- 确保您拥有对 Okta 的超级用户访问权限。
配置 Okta
如需配置 Okta SSO,请完成以下任务:
创建具有只读权限的 Okta 管理员用户
- 登录 Okta 管理控制台。
创建标准用户。
- 依次点击目录 > 人员。
- 点击添加用户,然后填写必填字段。
依次选择安全>管理员。
点击添加管理员。
在由管理员分配的管理员字段中,找到“标准用户”。
在角色部分,从列表中选择只读管理员。
退出管理员账号。
获取 API 密钥
- 使用只读管理员用户登录 Okta 管理控制台。
- 依次前往安全性 > API > 令牌。
- 点击 Create Token(创建令牌)。
- 为令牌提供一个有意义的名称。
- 提供 API 将被使用的 IP 区域(如果不确定,可以选择任意 IP)。
- 点击 Create Token(创建令牌)。
- 复制 API 密钥。
- 点击知道了。
在 Google SecOps 中配置 Feed 以提取 Okta 日志
- 依次前往 SIEM 设置 > Feed。
- 点击新增。
- 在 Feed 名称字段中,输入 Feed 的名称(例如 Okta 日志)。
- 选择第三方 API 作为来源类型。
- 选择 Okta 作为日志类型。
- 点击下一步。
- 为以下输入参数指定值:
- 身份验证 HTTP 标头:请按以下格式输入 Okta API 密钥:
Authorization:<API_KEY>
。 - API 主机名:指定 Okta 主机的域名(例如
<your-domain>.okta.com
)。 - 资源命名空间:资源命名空间。
- 提取标签:应用于此 Feed 中事件的标签。
- 身份验证 HTTP 标头:请按以下格式输入 Okta API 密钥:
- 点击下一步。
- 在最终确定界面中查看 Feed 配置,然后点击提交。
UDM 映射表
日志字段 | UDM 映射 | 逻辑 |
---|---|---|
actor.alternateId |
principal.user.email_addresses |
如果 actor.alternateId 是电子邮件地址,则从中提取。如果不是电子邮件地址,则用作 principal.user.userid 。 |
actor.displayName |
principal.user.user_display_name |
直接映射。 |
actor.id |
principal.user.product_object_id |
直接映射。 |
actor.type |
principal.user.attribute.roles.name |
直接映射。 |
authenticationContext.authenticationProvider |
security_result.detection_fields.value |
直接映射,键为 authenticationProvider 。 |
authenticationContext.credentialProvider |
security_result.detection_fields.value |
直接映射,键为 credentialProvider 。 |
authenticationContext.credentialType |
extensions.auth.mechanism |
用于派生身份验证机制 (OTP、USERNAME_PASSWORD、LOCAL)。 |
authenticationContext.externalSessionId |
network.parent_session_id |
直接映射。 |
client.device |
principal.asset.type /additional.fields.value.string_value |
根据值映射到 principal.asset.type (WORKSTATION、MOBILE、ROLE_UNSPECIFIED)。还会在 additional.fields 中映射为键为 device 的字符串值。 |
client.geographicalContext.city |
principal.location.city |
直接映射。 |
client.geographicalContext.country |
principal.location.country_or_region |
直接映射。 |
client.geographicalContext.geolocation.lat |
principal.location.region_latitude |
直接映射。 |
client.geographicalContext.geolocation.lon |
principal.location.region_longitude |
直接映射。 |
client.geographicalContext.postalCode |
additional.fields.value.string_value |
直接映射为 additional.fields 中键值为 Postal code 的字符串值。 |
client.geographicalContext.state |
principal.location.state |
直接映射。 |
client.ipAddress |
principal.ip ,principal.asset.ip |
直接映射。 |
client.userAgent.browser |
target.resource.attribute.labels.value |
直接映射,键为 Browser 。 |
client.userAgent.os |
principal.platform |
根据值映射到平台(LINUX、WINDOWS、MAC)。 |
client.userAgent.rawUserAgent |
network.http.user_agent ,network.http.parsed_user_agent |
直接映射和解析。 |
client.zone |
additional.fields.value.string_value |
直接映射为 additional.fields 中键值为 zone 的字符串值。 |
debugContext.debugData.behaviors |
security_result.description ,security_result.detection_fields |
直接映射到说明。系统会提取个别行为并将其添加为检测字段。 |
debugContext.debugData.changedAttributes |
security_result.detection_fields.value |
直接映射,键为 changedAttributes 。 |
debugContext.debugData.clientAddress |
principal.ip ,principal.asset.ip |
如果缺少 request.ipChain 和 client.ipAddress ,则直接映射。 |
debugContext.debugData.deviceFingerprint |
target.asset.asset_id |
直接映射,前缀为 device_finger_print: 。 |
debugContext.debugData.dtHash |
security_result.detection_fields.value |
直接映射,键为 dtHash 。 |
debugContext.debugData.factor |
security_result.detection_fields.value |
直接映射,键为 factor 。 |
debugContext.debugData.factorIntent |
security_result.detection_fields.value |
直接映射,键为 factorIntent 。 |
debugContext.debugData.logOnlySecurityData.risk.reasons |
security_result.detection_fields.value |
直接映射,键为 Risk Reasons 。 |
debugContext.debugData.privilegeGranted |
target.user.attribute.roles |
拆分为各项权限,并作为具有名称和说明的角色添加。 |
debugContext.debugData.pushOnlyResponseType |
security_result.detection_fields.value |
直接映射,键为 pushOnlyResponseType 。 |
debugContext.debugData.pushWithNumberChallengeResponseType |
security_result.detection_fields.value |
直接映射,键为 pushWithNumberChallengeResponseType 。 |
debugContext.debugData.requestUri |
extensions.auth.auth_details |
直接映射。 |
debugContext.debugData.suspiciousActivityEventId |
security_result.detection_fields.value |
直接映射,键为 suspiciousActivityEventId 。 |
debugContext.debugData.suspiciousActivityEventType |
security_result.detection_fields.value |
直接映射,键为 suspiciousActivityEventType 。 |
debugContext.debugData.threatDetections |
security_result.detection_fields.value |
直接映射,键为 threatDetections 。 |
debugContext.debugData.threatSuspected |
security_result.detection_fields.value ,security_result.threat_status |
映射为键为 threatSuspected 的检测字段。用于派生威胁状态(ACTIVE 或 FALSE_POSITIVE)。 |
debugContext.debugData.url |
target.url |
直接映射。 |
displayMessage |
security_result.summary |
直接映射。 |
eventType |
metadata.product_event_type ,metadata.event_type |
直接映射到 product_event_type 。用于派生 event_type (USER_LOGIN、USER_LOGOUT、USER_CHANGE_PASSWORD、USER_CHANGE_PERMISSIONS、USER_DELETION、GROUP_MODIFICATION、SETTING_MODIFICATION、SCHEDULED_TASK_ENABLE、RESOURCE_CREATION、USER_UNCATEGORIZED)。 |
legacyEventType |
security_result.detection_fields.value |
直接映射,键为 legacyEventType 。 |
outcome.reason |
security_result.category_details |
直接映射。 |
outcome.result |
security_result.action |
根据值映射到操作(ALLOW、CHALLENGE、BLOCK)。 |
published |
metadata.event_timestamp |
已解析为时间戳。 |
request.ipChain.n.geographicalContext |
intermediary.location |
请求链中中继 IP 的地理位置背景信息。 |
request.ipChain.n.ip |
intermediary.ip |
请求链中中介的 IP 地址。 |
securityContext.asNumber |
security_result.detection_fields.value |
直接映射,键为 asNumber 。 |
securityContext.asOrg |
security_result.detection_fields.value |
直接映射,键为 asOrg 。 |
securityContext.domain |
security_result.detection_fields.value |
直接映射,键为 domain 。 |
securityContext.isp |
security_result.detection_fields.value |
直接映射,键为 isp 。 |
securityContext.isProxy |
security_result.detection_fields.value |
直接映射,键为 anonymized IP 。 |
target.n.alternateId |
target.user.email_addresses /target.user.userid |
如果是电子邮件地址,则映射到 target.user.email_addresses 。如果不是电子邮件地址,则用作 target.user.userid 。 |
target.n.detailEntry.clientAppId |
target.asset_id |
直接映射,前缀为 Client_app_id: 。 |
target.n.detailEntry.methodTypeUsed |
target.resource_ancestors.attribute.labels.value |
直接映射,如果目标类型为 AuthenticatorEnrollment,则使用键 methodTypeUsed 。 |
target.n.detailEntry.methodUsedVerifiedProperties |
target.resource_ancestors.attribute.labels.value |
直接映射,如果目标类型为 AuthenticatorEnrollment,则使用键 methodUsedVerifiedProperties 。 |
target.n.detailEntry.policyType |
target.resource_ancestors.attribute.labels.value |
直接映射,键为 Policy Type 。 |
target.n.detailEntry.signOnModeType |
security_result.detection_fields.value |
直接映射,键为 signOnModeType 。 |
target.n.displayName |
target.user.user_display_name / target.application / target.resource.name |
根据目标类型进行映射。 |
target.n.id |
target.user.product_object_id / target.resource.product_object_id / target.resource_ancestors.product_object_id |
根据目标类型进行映射。 |
target.n.type |
target.user.attribute.roles.name / target.resource.resource_subtype / target.resource_ancestors.resource_subtype |
根据目标类型进行映射。 |
transaction.id |
network.session_id |
直接映射。 |
transaction.type |
additional.fields.value.string_value |
直接映射为 additional.fields 中键值为 type 的字符串值。 |
uuid |
metadata.product_log_id |
直接映射。 |
不适用 | metadata.vendor_name |
设置为 Okta 。 |
不适用 | metadata.product_name |
设置为 Okta 。 |
不适用 | extensions.auth.type |
设置为 SSO 。 |
不适用 | is_alert |
对于 security.threat.detected 和 user.account.report_suspicious_activity_by_enduser 事件,将其设置为 true。 |
不适用 | is_significant |
对于 security.threat.detected 和 user.account.report_suspicious_activity_by_enduser 事件,将其设置为 true。 |
变化
2024 年 5 月 16 日
- 如果
is_alert
和is_significant
均为 true,则将security_result.alert_state
设置为ALERTING
。
2024-03-05
- 更新了
security_result.action
字段,以反映流量是被允许还是被禁止。
2024-02-16
bug 修复:
- 当
target.0.type
为User
或AppUser
时,将target.0.alternateId
映射到target.user.userid
。 - 当
target.1.type
为User
或AppUser
时,将target.1.alternateId
映射到target.user.userid
。
2023-12-14
- 将
securityContext.asNumber
映射到security_result.detection_fields
。 - 将
legacyEventType
映射到security_result.detection_fields
。 - 在设置
metadata.event_type
之前添加了conditional_check
。
2023-06-28
- 将
debugContext.debugData.suspiciousActivityEventType
的完整值映射到security_result.detection_fields
。 - 将
debugContext.debugData.logOnlySecurityData.behaviors.New Device
的完整值映射到security_result.detection_fields
。
2023-06-09
debugContext.debugData.deviceFingerprint
字段映射到target.asset.asset_id
。- 将
debugContext.debugData.risk.reasons
的完整值映射到security_result.detection_fields
。
2023-05-17
- 字段“authenticationContext.externalSessionId”已映射到“network.parent_session_id”。
- 字段“debugContext.debugData.pushOnlyResponseType”会映射到“security_result.detection_fields.key/value”。
- 字段“debugContext.debugData.factor”已映射到“security_result.detection_fields.key/value”。
- 字段“debugContext.debugData.factorIntent”已映射到“security_result.detection_fields.key/value”。
- 字段“debugContext.debugData.pushWithNumberChallengeResponseType”已映射到“security_result.detection_fields.key/value”。
- 字段“debugContext.debugData.dtHash”已映射到“security_result.detection_fields.key/value”。
- 字段“client.userAgent.rawUserAgent”会映射到“network.http.user_agent”。
- 将“security_result.action”下的映射从“ALLOW_WITH_MODIFICATION”更改为枚举值“CHALLENGE”。
- 对于 eventType“system.api_token.create”,将 metadata.event_type 从“USER_UNCATEGORIZED”更改为“RESOURCE_CREATION”。
2023-04-28
bug 修复:
- 修改了
debugContext.debugData.threatSuspected
为true
时security_result.threat_status
到ACTIVE
的映射,否则映射到FALSE_POSITIVE
。
2023-03-24
- 将
logOnlySecurityData
字段映射到security_result.detection_fields
。 - 此外,通过将
DEFERRED
添加到操作列表来解决解析错误。
2023-04-11
- 将映射到
http.user_agent
的字段重新映射到http.parsed_user_agent
。 - 将
target.displayName
映射到target.resource_ancestors.name
。 - 将
targetfield.detailEntry.methodTypeUsed
映射到target.resource_ancestors.attribute.labels
。 - 将
targetfield.detailEntry.methodUsedVerifiedProperties
映射到target.resource_ancestors.attribute.labels
。
2023-02-20
- 将
metadata.event_type
从USER_LOGIN
更改为STATUS_UPDATE
,其中eventType
为user.authentication.auth_via_AD_agent
2022-12-14
- 将
debugContext.debugData.changedAttributes
映射到security_result.detection_fields
。 - 为
detail.actor.alternateId
添加了 null 检查。
2022-11-17
target[n].alternateId
字段映射到target.resource.attribute.labels
。detail.target.0.alternateId
字段映射到target.resource.attribute.labels
。
2022-11-08
bug 修复:
- 添加了针对字段
user_email
的正确电子邮件地址检查条件。 - 添加了检查
RATE_LIMIT
中是否不存在Action1
字段的功能。 - 为
actor.displayName
添加了 null、unknown 检查。
2022-11-04
- 添加了对包含多个事件的日志的支持。
2022-10-15
signOnModeType
已映射到security_result.detection_fields
。authenticationProvider
已映射到security_result.detection_fields
。credentialProvider
已映射到security_result.detection_fields
。device
已映射到additional.fields
。zone
已映射到additional.fields
。type
已映射到additional.fields
。
2022-10-14
bug 修复:
- 添加了对“principal.user.email_addresses”和“target.user.email_addresses”的条件检查。
- 添加了 Grok,用于检查映射到“principal.ip”的字段“request.ipChain.0.ip”是否包含有效的 ip_address。
- 为映射到“target.url”的字段“debugContext.debugData.url”添加了 on_error 条件。
2022-10-03
- 将
client.userAgent.os
映射到principal.platform
。 - 将
client.device
映射到principal.asset.type
。 - 将
anonymized IP
(硬编码字符串)映射到 security_result.detection_fields.key,其中“securityContext.isProxy”值对应于相应的 security_result.detection_fields.value。
2022-09-16
- 将“securityContext.asOrg”映射到“security_result.category_details”。
- 将“securityContext.isProxy”映射到“security_result.detection_fields”。
- 将“securityContext.domain”映射到“security_result.detection_fields”。
- “securityContext.isp”映射到“security_result.detection_fields”。
- 将“debugContext.debugData.risk.level”映射到“security_result.severity”。
- 将“debugContext.debugData.risk.reasons”映射到“security_result.detection_fields”。
2022-08-12
- 新提取的日志已解析并映射到以下字段:
- “detail.uuid”映射到“metadata.product_log_id”。
- 将“detail.eventType”映射到“metadata.product_event_type”
- 将“detail.actor.id”映射到“principal.user.product_object_id”。
- if 'detail.actor.alternateId' mapped to 'principal.user.userid' else
- “detail.actor.alternateId”已映射到“principal.user.email_addresses”。
- “detail.actor.displayName”已映射到“principal.user.user_display_name”。
- “detail.actor.type”映射到“.principal.user.attribute.roles”。
- “detail.client.ipChain.0.ip”已映射到“principal.ip”。
- 将“detail.client.ipChain.0.geographicalContext.state”映射到“principal.location.state”。
- 将“detail.client.ipChain.0.geographicalContext.city”映射到“principal.location.city”。
- 将“detail.client.ipChain.0.geographicalContext.country”映射到“principal.location.country_or_region”。
- “detail.debugContext.debugData.requestUri”映射到“target.url”。
- “detail.target.0.type”映射到“target.resource.resource_subtype”。
- “detail.target.0.id”映射到“target.resource.resource.product_object_id”。
- “detail.target.0.displayName”映射到“target.resource.resource_subtype”。
- “detail.target.0.detailEntry.policyType”映射到“target.resource_ancestors.attribute.labels”。
- 将“detail.outcome.reason”映射到“security_result.category_details”。
- 将“detail.debugContext.debugData.threatSuspected”映射到“security_result.detection_fields”。
- 将“detail.displayMessage”映射到“security_result.summary”。
- 将“detail.outcome.result”映射到“security_result.action”。
- 将“detail.severity”映射到“security_result.severity”。
- “detail.transaction.id”映射到“network.session_id”。
- 将“detail.debugContext.debugData.requestUri”映射到“extensions.auth.auth_details”。
2022-07-08
- 将
actor.type
的映射从principal.user.role_name
修改为了principal.user.attribute.roles
。 - 将
target.0.type
的映射从target.user.role_name
修改为了target.user.attribute.roles
。 - 将
target.1.type
的映射从target.user.role_name
修改为了target.user.attribute.roles
。
2022-06-15
增强功能:
target.0.type
==Token
。- 将
target.0.detailEntry.clientAppId
映射到target.asset_id
。 - 为映射到 UDM 字段“network.session_id”的字段“transaction.id”添加了条件检查。
2022-06-03
增强功能:
- 此外,还将 debugContext.debugData.privilegeGranted 映射到了 target.user.attribute.roles.name。
- 将 debugContext.debugData.requestUri 映射到 extensions.auth.auth_details。
- 将 debugContext.debugData.suspiciousActivityEventId、debugContext.debugData.threatDetections、debugContext.debugData.threatSuspected 映射到 security_result.detection_fields。
2022-03-22
增强功能:
- debugContext.debugData.behaviors 已映射到 security_result.description。
- debugContext.debugData.threatSuspected 已映射到 security_result.threat_status。
- debugContext.debugData.risk 已映射到 security_result.severity。
需要更多帮助?向社区成员和 Google SecOps 专业人士寻求解答。