将 Okta 与 Google SecOps 集成

本文档提供了有关如何将 Okta 与 Google Security Operations 集成的指南。

使用场景

Okta 集成使用 Google SecOps 功能来支持以下使用场景:

  • 管理用户生命周期:根据安全提醒自动为用户启用、停用或重置密码,以降低风险。

  • 终止有效会话:立即清除遭入侵账号的所有有效 Okta 会话,以防止对集成应用进行未经授权的访问。

  • 自动执行角色分配:动态地为用户分配或取消分配管理角色,以便在调查期间遵循最小权限原则。

  • 同步威胁信号:将身份威胁防护 (ITP) 信号发送到 Okta,以共享风险情境并触发自动化安全响应。

  • 丰富身份背景信息:检索详细的用户个人资料和群组成员身份,以便分析师深入了解账号活动。

准备工作

在 Google SecOps 中配置集成之前,请验证您的 Okta 环境是否满足以下要求:

  • 身份验证方法:确定组织是使用 API 令牌 (SSWS) 还是 OAuth 2.0 进行身份验证。

    • API 令牌:生成 SSWS 令牌。如需了解详情,请参阅 Okta API 令牌文档
    • OAuth 2.0:注册服务应用以获取 Client IDKey IDPrivate Key。如需了解详情,请参阅 Okta OAuth 文档
  • 账号权限:验证账号是否拥有足够的权限来执行用户管理和会话终止操作。

集成参数

Okta 集成需要以下参数:

参数 说明
Api Root

必填。

用于访问 API 的 Okta 实例的基本网址。

默认值为 https://{okta_domain}.com/

Api Token

可选。

用于向 Okta 实例进行身份验证的 API 令牌 (SSWS)。

如果 Use Oauth Authentication 处于停用状态,则此参数是必需的。

Use Oauth Authentication

必填。

如果启用,集成将使用 OAuth 2.0 进行身份验证,而不是使用 API 令牌。

使用 OAuth 时,Client IDKey IDPrivate Key 是必需的,Api Token 应留空。

如果已停用,则 Api Token 为必需。

Client ID

可选。

Okta OAuth 应用的唯一标识符。

如果启用 Use Oauth Authentication,则此参数是必需的。

如果使用 API 令牌进行身份验证,请将此字段留空。

Key ID

可选。

与用于 OAuth 身份验证的私钥关联的公钥的 ID。

如果启用 Use Oauth Authentication,则此参数是必需的。

如果使用 API 令牌进行身份验证,请将此字段留空。

Private Key

可选。

用于 OAuth 身份验证的 PEM 格式的私钥。

如果启用 Use Oauth Authentication,则此参数是必需的。

如果使用 API 令牌进行身份验证,请将此字段留空。

Verify SSL

可选。

如果选择此项,集成会在连接到 Okta 服务器时验证 SSL 证书。

默认处于启用状态。

如需了解如何在 Google SecOps 中配置集成,请参阅配置集成

如有需要,您可以在稍后阶段进行更改。配置集成实例后,您可以在 playbook 中使用该实例。如需详细了解如何配置和支持多个实例,请参阅支持多个实例

操作

如需详细了解操作,请参阅 在工作台页面中处理待处理的操作执行人工处置措施

添加组

添加群组。

参数

使用场景

不适用

Run On

此操作会在所有实体上运行。

操作执行结果

脚本结果
脚本结果名称 值选项 示例
ScriptResult 不适用 不适用
JSON 结果
N/A
实体扩充

不适用

数据分析

不适用

分配角色

为用户分配角色。

参数

参数名称 类型 默认值 说明
用户 ID 字符串 不适用 Okta 中用户的 ID。
角色类型 字符串 不适用 要分配给用户的角色类型。
Also Run On Scope 复选框 勾选 是否对实体以及输入内容运行。

使用场景

不适用

Run On

此操作适用于以下实体:

  • 用户
  • 主机名

操作执行结果

脚本结果
脚本结果名称 值选项 示例
ScriptResult 不适用 不适用
JSON 结果
N/A
实体扩充
扩充项字段名称 逻辑 - 应用场景
角色 如果存在于 JSON 结果中,则返回
数据分析

不适用

清除 Okta 用户会话

使用 Clear Okta User Session 操作可终止特定用户在所有设备和集成应用中的所有有效 Okta 会话。

此操作在 Google SecOps Username 实体上运行。

操作输入

清除 Okta 用户会话操作需要以下参数:

参数 说明
User IDs Or Logins

可选。

以逗号分隔的 Okta 用户 ID 或登录标识符列表。

Also Run On Scope

可选。

如果选择此操作,系统会撤消实体范围内所有已标识用户的有效身份提供商 (IdP) 会话,以及 User IDs Or Logins 中明确列出的用户的有效 IdP 会话。

操作输出

清除 Okta 用户会话 操作提供以下输出:

操作输出类型 可用性
案例墙附件 不可用
案例墙链接 不可用
“支持请求墙”表格 不可用
丰富化表 不可用
JSON 结果 不可用
输出消息 可用
脚本结果 可用
输出消息

清除 Okta 用户会话操作可以返回以下输出消息:

输出消息 消息说明

Successfully cleared sessions for the following users: ENTITY_IDS.

The sessions failed to clear for the following user in Okta: ENTITY_ID.

No users were found to clear sessions.

操作成功。
Error executing action "Clear Okta User Session". Reason: ERROR_REASON

操作失败。

检查与服务器的连接、输入参数或凭据。

脚本结果

下表列出了使用 Clear Okta User Session 操作时脚本结果输出的值:

脚本结果名称
is_success truefalse

停用用户

停用指定用户。

参数

参数名称 类型 默认值 说明
用户 ID 或登录信息 字符串 不适用 Okta 中用户的 ID。
是否停用 复选框 勾选 是停用还是仅暂停用户。
停用时发送电子邮件 复选框 勾选 是否在停用后发送电子邮件。
Also Run On Scope 复选框 勾选 是否对实体以及输入内容运行。

使用场景

不适用

Run On

此操作适用于以下实体:

  • 用户
  • 主机名

操作执行结果

脚本结果
脚本结果名称 值选项 示例
ScriptResult 不适用 不适用
JSON 结果
N/A
实体扩充
扩充项字段名称 逻辑 - 应用场景
is_deactivate 如果为 True,则表示用户已被停用。否则:False
is_send_email_deactivate 如果为 True,则表示用户已被停用。否则:False
数据分析

不适用

启用用户

启用指定用户。

参数

参数名称 类型 默认值 说明
用户 ID 或登录信息 字符串 不适用 Okta 中用户的 ID 或登录信息。
是否已激活 复选框 勾选 是激活用户还是仅取消暂停。
如果激活,则发送电子邮件 复选框 勾选 是否在激活后发送电子邮件。
Also Run On Scope 复选框 勾选 是否对实体以及输入内容运行。

使用场景

不适用

Run On

此操作适用于以下实体:

  • 用户
  • 主机名

操作执行结果

脚本结果
脚本结果名称 值选项 示例
ScriptResult 不适用 不适用
JSON 结果
N/A
实体扩充
扩充项字段名称 逻辑 - 应用场景
is_reactivate 如果为 True,则表示用户已启用。否则:False
is_send_email_reactivate 如果为 True,则表示用户已被停用。否则:False
数据分析

不适用

获取群组

获取有关群组的信息。

参数

参数名称 类型 默认值 说明
群组 ID 或名称 字符串 不适用 Okta 中群组的 ID 或名称。
Is Id 复选框 勾选 相应值是 ID 还是名称。

使用场景

不适用

Run On

此操作会在所有实体上运行。

操作执行结果

脚本结果
脚本结果名称 值选项 示例
ScriptResult 不适用 不适用
JSON 结果
N/A
实体扩充

不适用

数据分析

不适用

获取用户

获取用户相关信息

参数

参数名称 类型 默认值 说明
用户 ID 或登录信息 字符串 不适用 Okta 中用户的 ID 或登录信息(电子邮件地址或简短的电子邮件名称),例如:test@gmail.com 或仅为“test”。
Also Run On Scope 复选框 勾选 是否对实体以及输入内容运行。

使用场景

不适用

Run On

此操作适用于以下实体:

  • 用户
  • 主机名

操作结果

脚本结果
脚本结果名称 值选项 示例
ScriptResult 不适用 不适用
JSON 结果
[
  {
    "status": "ACTIVE",
    "profile": {
      "mobilePhone": null,
      "firstName": "Test",
      "lastName": "User",
      "secondEmail": null,
      "login": "test.user@asd.com",
      "email": "test.user@asd.com"
    },
    "passwordChanged": "2022-07-11T06:11:25.000Z",
    "created": "2022-07-11T06:07:55.000Z",
    "activated": null,
    "lastUpdated": "2022-07-11T06:11:25.000Z",
    "_links": {
      "schema": {
        "href": "https://trial-0000.okta.com/api/v1/meta/schemas/user/osc1xxxxxxxx"
      },
      "suspend": {
        "href": "https://trial-0000.okta.com/api/v1/users/00u1xxxxxxxx/lifecycle/suspend",
        "method": "POST"
      },
      "forgotPassword": {
        "href": "https://trial-0000.okta.com/api/v1/users/00u1xxxxxxxx/credentials/forgot_password",
        "method": "POST"
      },
      "self": {
        "href": "https://trial-0000.okta.com/api/v1/users/00u1xxxxxxxx"
      },
      "expirePassword": {
        "href": "https://trial-0000.okta.com/api/v1/users/00u1xxxxxxxx/lifecycle/expire_password",
        "method": "POST"
      },
      "resetFactors": {
        "href": "https://trial-0000.okta.com/api/v1/users/00u1xxxxxxxx/lifecycle/reset_factors",
        "method": "POST"
      },
      "deactivate": {
        "href": "https://trial-0000.okta.com/api/v1/users/00u1xxxxxxxx/lifecycle/deactivate",
        "method": "POST"
      },
      "changePassword": {
        "href": "https://trial-0000.okta.com/api/v1/users/00u1xxxxxxxx/credentials/change_password",
        "method": "POST"
      },
      "changeRecoveryQuestion": {
        "href": "https://trial-0000.okta.com/api/v1/users/00u1xxxxxxxx/credentials/change_recovery_question",
        "method": "POST"
      },
      "type": {
        "href": "https://trial-0000.okta.com/api/v1/users/00u1xxxxxxxx"
      },
      "resetPassword": {
        "href": "https://trial-0000.okta.com/api/v1/users/00u1xxxxxxxx/lifecycle/reset_password",
        "method": "POST"
      }
    },
    "lastLogin": "2022-07-11T06:15:14.000Z",
    "credentials": {
      "password": {},
      "provider": {
        "type": "OKTA",
        "name": "OKTA"
      }
    },
    "type": {
      "id": "oty1xxxxxxxxxxxxx"
    },
    "id": "oty1xxxxxxxxxxxxx",
    "statusChanged": "2022-07-11T06:11:25.000Z"
  }
]
实体扩充

不适用

数据分析

不适用

列出提供商

列出组织中的身份提供方 (IdP)。

参数

参数名称 类型 默认值 说明
查询 字符串 不适用 搜索名称属性以查找匹配项。
类型 复选框 勾选 按类型过滤。
限制 字符串 20 要返回的结果数量上限。

使用场景

不适用

Run On

此操作会在所有实体上运行。

操作执行结果

脚本结果
脚本结果名称 值选项 示例
ScriptResult 不适用 不适用
JSON 结果
N/A
实体扩充

不适用

数据分析

不适用

列出角色

列出分配给用户的所有角色。

参数

用户 ID 字符串 不适用 Okta 中用户的 ID。
Also Run On Scope 复选框 勾选 是否对实体以及输入内容运行。

使用场景

不适用

Run On

此操作适用于以下实体:

  • 用户
  • 主机名

操作执行结果

脚本结果
脚本结果名称 值选项 示例
ScriptResult 不适用 不适用
JSON 结果
N/A
实体扩充

不适用

数据分析

不适用

列出用户群组

获取用户所属的群组。

参数

参数名称 类型 默认值 说明
用户 ID 或登录信息 字符串 不适用 Okta 中用户的 ID 或登录信息。
Also Run On Scope 复选框 勾选 是否对实体以及输入内容运行。

使用场景

不适用

Run On

此操作适用于以下实体:

  • 用户
  • 主机名

操作执行结果

脚本结果
脚本结果名称 值选项 示例
ScriptResult 不适用 不适用
JSON 结果
N/A
实体扩充
扩充项字段名称 逻辑 - 应用场景
个人资料 如果存在于 JSON 结果中,则返回
name 如果存在于 JSON 结果中,则返回
数据分析

不适用

列出用户

获取用户列表。

参数

参数名称 类型 默认值 说明
查询 字符串 不适用 在名字、姓氏或电子邮件地址中搜索匹配项。
过滤 字符串 不适用 针对部分房源的自定义搜索查询。
搜索 字符串 不适用 大多数媒体资源的自定义搜索查询。
限制 字符串 200 要返回的结果数量上限。

使用场景

不适用

Run On

此操作会在所有实体上运行。

操作执行结果

脚本结果
脚本结果名称 值选项 示例
ScriptResult 不适用 不适用
JSON 结果
N/A
实体扩充
扩充项字段名称 逻辑 - 应用场景
个人资料 如果存在于 JSON 结果中,则返回
name 如果存在于 JSON 结果中,则返回
数据分析

不适用

Ping

测试与 Okta 的连接。

参数

不适用

使用场景

不适用

Run On

此操作会在所有实体上运行。

操作执行结果

脚本结果
脚本结果名称 值选项 示例
ScriptResult 不适用 不适用
JSON 结果
N/A
实体扩充

不适用

数据分析

不适用

重置密码

生成可用于重置用户密码的一次性令牌。

参数

参数名称 类型 默认值 说明
用户 ID 或登录信息 字符串 不适用 Okta 中用户的 ID 或登录信息。
发送电子邮件 复选框 尚未核查 是否为每位用户发送重设密码电子邮件或返回令牌。
Also Run On Scope 复选框 尚未核查 是否对实体以及输入内容运行。

使用场景

不适用

Run On

此操作适用于以下实体:

  • 用户
  • 主机名

操作执行结果

脚本结果
脚本结果名称 值选项 示例
ScriptResult 不适用 不适用
JSON 结果
N/A
实体扩充
扩充项字段名称 逻辑 - 应用场景
send_email 如果存在于 JSON 结果中,则返回
数据分析

不适用

设置密码

设置用户的密码,而不验证现有凭据。

参数

参数名称 类型 默认值 说明
用户 ID 或登录信息 字符串 不适用 Okta 中用户的 ID 或登录信息。
新密码 字符串 不适用 新密码。
添加 10 个随机字符 复选框 尚未核查 是否为每个用户密码添加额外字符。
Also Run On Scope 复选框 尚未核查 是否对实体以及输入内容运行。

使用场景

不适用

Run On

此操作适用于以下实体:

  • 用户
  • 主机名

操作执行结果

脚本结果
脚本结果名称 值选项 示例
ScriptResult 不适用 不适用
JSON 结果
N/A
实体扩充
扩充项字段名称 逻辑 - 应用场景
set_password 如果存在于 JSON 结果中,则返回
数据分析

不适用

发送 ITP 信号

使用共享信号框架 (SSF) 将身份威胁防护 (ITP) 信号分发给相关消费者。

参数

参数名称 类型 默认值 说明
密钥 ID 字符串 不适用 用于验证私钥签名的公钥的 ID。
私钥字符串 密码 不适用 用于对信号进行签名的私钥。

密钥以字符串格式提供,并包含“BEGIN”和“END”语句。

用户电子邮件 邮寄地址 不适用 受影响用户的电子邮件地址。
时间戳 时间戳 不适用 信号出现的时间戳。

时间戳格式为 ISO 8601。

原因 字符串 不适用 简要说明生成信号的原因。
严重程度 字符串或 DDL 不适用 信号的严重程度。
颁发者网址 网址 不适用 创建信号的源系统。

操作执行结果

JSON 结果
{
   "status":200,
   "payload":{
      "iss":"https://www.google.com/",
      "jti":"3c5fbf0c-3977-11f0-a195-7e498c84a3dd",
      "iat":1748184472,
      "aud":"https://<your-okta-domain>.oktapreview.com",
      "events":{
         "https://schemas.okta.com/secevent/okta/event-type/user-risk-change":{
            "subject":{
               "user":{
                  "format":"email",
                  "email":"user@domain.net"
               }
            },
            "current_level":"medium",
            "previous_level":"low",
            "reason_admin":{
               "en":"BadNavigationEvent"
            },
            "event_timestamp":1742199770057
         }
      }
   }
}
输出消息
输出消息 消息说明

Successfully sent the ITP signal to Okta.

Context value was not found for the provided context key CONTEXT_KEY and connector identifier CONNECTOR_IDENTIFIER.

Action can't return the Case Wall table as the context values are too big.

操作成功。
Failed to send the ITP signal to Okta. Error is {0}".format(exception.stacktrace)

操作失败。

检查与服务器的连接、输入参数或凭据。

脚本结果
脚本结果名称 值选项
is_success TrueFalse

取消分配角色

取消向用户分配的角色。

参数

参数名称 类型 默认值 说明
用户 ID 字符串 不适用 Okta 中用户的 ID。
角色 ID 或名称 字符串 不适用 Okta 中角色的 ID 或名称。
Also Run On Scope 复选框 尚未核查 是否对实体以及输入内容运行。

使用场景

不适用

Run On

此操作适用于以下实体:

  • 用户
  • 主机名

操作执行结果

脚本结果
脚本结果名称 值选项 示例
ScriptResult 不适用 不适用
JSON 结果
N/A
实体扩充
扩充项字段名称 逻辑 - 应用场景
unassign_role 如果存在于 JSON 结果中,则返回
数据分析

不适用

需要更多帮助?获得社区成员和 Google SecOps 专业人士的解答。