ServiceNow SecOps 连接器和操作

编辑

ServiceNow SecOps 连接器和操作

编辑

ServiceNow SecOps 连接器使用 导入集 API 创建 ServiceNow 安全事件。你可以将该连接器用于规则操作和案例。

在 Kibana 中创建连接器

编辑

你可以在 堆栈管理 > 连接器 中创建连接器,或者在创建规则时根据需要创建。你必须选择是否使用 OAuth 进行身份验证。

ServiceNow SecOps connector using basic auth
ServiceNow SecOps connector using OAuth
连接器配置
编辑

ServiceNow SecOps 连接器具有以下配置属性

客户端 ID
分配给 OAuth 应用程序的客户端 ID。
客户端密钥
分配给 OAuth 应用程序的客户端密钥。
JWT 验证器密钥 ID
分配给 OAuth 应用程序的 JWT 验证器映射的密钥标识符。
密码
用于 HTTP 基本身份验证的密码。
私钥
你为在 ServiceNow 中使用而创建的 RSA 私钥。
私钥密码
RSA 私钥的密码。如果为私钥设置了密码,则此值是必需的。
ServiceNow 实例 URL
完整的 ServiceNow 实例 URL。
使用 OAuth 身份验证
默认情况下,使用基本身份验证而不是开放授权 (OAuth)。
用户标识符
用于 OAuth 类型身份验证的标识符。此标识符应是在设置期间选择的用户字段。例如,如果选择的用户字段为 电子邮件,则用户标识符应为用户的电子邮件地址。
用户名
用于 HTTP 基本身份验证的用户名。

测试连接器

编辑

你可以在 Kibana 中创建或编辑连接器时测试连接器。例如

ServiceNow SecOps params test

ServiceNow SecOps 操作具有以下配置属性。

其他评论
客户端的附加信息,例如如何排除问题。
其他字段

一个包含自定义字段标识符及其值的对象。这些字段必须存在于 Elastic ServiceNow 应用程序中,并且必须以 JSON 格式指定。

例如

{
    "u_cmdb_ci": "host-a",
    "u_company": "My company",
    "u_assignment_group": "Testing"
}

请注意,Elastic ServiceNow 应用程序中的默认源字段名称以“u_”为前缀。

类别
事件的类别。
关联显示
警报在 ServiceNow 中用于关联目的的描述性标签。
关联 ID

使用相同关联 ID 的连接器将与同一个 ServiceNow 事件关联。此值确定是创建新的 ServiceNow 事件还是更新现有事件。修改此值是可选的;如果未修改,则规则 ID 和警报 ID 将合并为 {{ruleID}}:{{alert ID}},以形成 ServiceNow 中的关联 ID 值。此值的最大字符长度为 100 个字符。

使用 {{ruleID}}:{{alert ID}} 的默认配置可确保 ServiceNow 为每个使用唯一警报 ID 生成的警报创建一个单独的事件记录。如果该规则生成多个使用相同警报 ID 的警报,则 ServiceNow 会为该警报创建并持续更新单个事件记录。

描述
有关事件的详细信息。
优先级
事件的优先级。
简短描述
事件的简短描述,用于搜索知识库的内容。
子类别
事件的子类别。

连接器网络配置

编辑

使用操作配置设置自定义连接器网络配置,例如代理、证书或 TLS 设置。你可以设置应用于所有连接器的配置,或使用 xpack.actions.customHostSettings 设置每个主机的配置。

配置 ServiceNow SecOps

编辑

ServiceNow 提供免费的个人开发者实例,你可以使用它们来测试事件。

先决条件
编辑

从 Elastic Stack 版本 7.15.0 或更早版本升级到 7.16.0 或更高版本后,你必须在 ServiceNow 实例中完成以下操作,然后才能创建新的 ServiceNow SecOps 连接器或更新现有连接器

分配跨范围权限
编辑

Elastic for Security Operations 应用程序需要特定的跨范围权限记录才能成功运行。特别是,你必须为 Elastic for Security Operations 应用程序设置一个权限记录,其中状态设置为 允许,用于以下每个目标

目标范围 名称 类型 操作

全局

Glide API: 字符串实用程序

可脚本化

执行 API

全局

GlideRecord.insert

可脚本化

执行 API

全局

GlideRecord.setValue

可脚本化

执行 API

全局

GlideRecordSecure.getValue

可脚本化

执行 API

全局

RESTAPIRequest

可脚本化

执行 API

全局

RESTAPIRequestBody

可脚本化

执行 API

全局

ScopedGlideElement

可脚本化

执行 API

全局

ScriptableServiceResultBuilder.setBody

可脚本化

执行 API

安全事件响应

sn_si_incident

读取

威胁情报支持通用

sn_ti_m2m_task_observable

创建

威胁情报支持通用

sn_ti_m2m_task_observable

读取

威胁情报支持通用

sn_ti_observable

创建

威胁情报支持通用

sn_ti_observable

读取

威胁情报支持通用

sn_ti_observable_type

读取

要访问跨范围权限表

  1. 登录 ServiceNow 并将你的应用程序范围设置为 Elastic for Security Operations。
  2. 单击 全部 并搜索 sys_scope_privilege

有关更多详细信息,请参阅ServiceNow 产品文档

创建 ServiceNow 集成用户
编辑

为确保 Elastic 和 ServiceNow 之间的身份验证通信,请创建一个 ServiceNow 集成用户并为其分配适当的角色。 

  1. 在你的 ServiceNow 实例中,转到 系统安全 → 用户和组 → 用户
  2. 单击 新建
  3. 填写表单,然后右键单击菜单栏并单击 保存
  4. 转到 角色 选项卡,然后单击 编辑
  5. 为集成用户分配以下角色: 

    • import_set_loader
    • import_transformer
    • personalize_choices
    • sn_si.basic
    • x_elas2_sir_int.integration_user
  6. 单击 保存
创建 CORS 规则
编辑

Elastic 和 ServiceNow 之间的通信需要 CORS 规则。要创建 CORS 规则

  1. 在你的 ServiceNow 实例中,转到 系统 Web 服务 → REST → CORS 规则
  2. 单击 新建
  3. 按如下方式配置规则

    • 名称:命名规则。
    • REST API:通过选择 Elastic SIR API [x_elas2_sir_int/elastic_api] 将规则设置为使用 Elastic SecOps API。
    • :输入 Kibana URL,包括端口号。
  4. 转到 HTTP 方法 选项卡,然后选择 GET
  5. 单击 提交 以创建规则。
创建 RSA 密钥对并添加 X.509 证书
编辑

此步骤是使用 OAuth 在 Elastic 和 ServiceNow 之间进行身份验证所必需的。

创建 RSA 密钥对

  1. 使用 OpenSSL 生成 RSA 私钥

    openssl genrsa -out example-private-key.pem 3072
    openssl genrsa -passout pass:foobar -out example-private-key-with-password.pem 3072 

    使用 passout 选项为你的私钥设置密码。这是可选的,但如果你设置了密码,请记住你的密码。

  2. 使用 OpenSSL 生成匹配的公钥

    openssl req -new -x509 -key example-private-key.pem -out example-sn-cert.pem -days 360

将 X.509 证书添加到 ServiceNow

  1. 在你的 ServiceNow 实例中,转到 证书,然后选择 新建
  2. 按如下方式配置证书

    • 名称:命名证书。
    • PEM 证书:将生成的公钥复制到此文本字段中。
    Shows new certificate form in ServiceNow
  3. 单击 提交 以创建证书。
为外部客户端创建带有 JWT 验证器映射的 OAuth JWT API 端点
编辑

此步骤是使用 OAuth 在 Elastic 和 ServiceNow 之间进行身份验证所必需的。

  1. 在你的 ServiceNow 实例中,转到 应用程序注册表,然后选择 新建
  2. 从选项列表中选择 为外部客户端创建 OAuth JWT API 端点

    Shows application type selection
  3. 按如下方式配置应用程序

    • 名称:命名应用程序。
    • 用户字段:选择用作用户标识符的字段。
    Shows new application form in ServiceNow

    请记住选择的用户字段。创建连接器时,您将使用此字段作为用户标识符值。例如,如果您为用户字段选择了电子邮件,您将使用用户的电子邮件作为用户标识符值

  4. 单击提交以创建应用程序。您将被重定向到应用程序列表。
  5. 选择您刚刚创建的应用程序。
  6. 找到JWT 验证器映射选项卡,然后单击新建
  7. 按如下方式配置新记录

    • 名称:为 JWT 验证器映射命名。
    • 系统证书:单击搜索图标并选择上一步中创建的证书名称。
    Shows new JWT Verifier Map form in ServiceNow
  8. 单击提交以创建验证器映射。
  9. 请注意客户端 ID客户端密钥JWT 密钥 ID。您将需要这些值来创建 ServiceNow 连接器。

    Shows where to find OAuth values in ServiceNow

更新已弃用的 ServiceNow SecOps 连接器

编辑

在您升级到 7.16.0 或更高版本后,在 Elastic Stack 7.15.0 或更早版本中创建的 ServiceNow SecOps 连接器将被标记为已弃用。已弃用的连接器在其名称后有一个黄色图标,并在被选中时显示警告消息。

Shows deprecated ServiceNow connectors

已弃用的连接器将继续与其添加到的规则一起运行,并且可以分配给新规则。但是,强烈建议更新已弃用的连接器或创建新的连接器,以确保您可以访问连接器增强功能,例如更新事件。

要更新已弃用的连接器

  1. 使用导航菜单或全局搜索字段转到连接器页面。
  2. 选择已弃用的连接器以打开编辑连接器弹出窗口。
  3. 在警告消息中,单击更新此连接器
  4. 完成编辑连接器弹出窗口中的引导步骤。

    1. 从 ServiceNow 商店安装Elastic for Security Operations (SecOps) 并完成所需的先决条件
    2. 输入您的 ServiceNow 实例的 URL。
    3. 输入您的 ServiceNow 实例的用户名和密码。
  5. 单击更新