收集 ServiceNow CMDB 数据
支持的平台:
Google SecOps
SIEM
本文档介绍了如何使用第三方 API 设置 Google Security Operations Feed 来收集 ServiceNow CMDB 数据。
准备工作
确保您满足以下前提条件:
- Google SecOps 实例
- 通过管理控制台访问权限对 ServiceNow 实例进行特权访问
- 具有
cmdb_read角色的 ServiceNow 用户账号(读取权限的最低要求) - 在 ServiceNow 实例中启用 REST API(默认已启用)
配置 IP 许可名单
在创建 Feed 之前,您必须在 ServiceNow 防火墙或网络设置中将 Google SecOps IP 范围列入许可名单。
获取 Google SecOps IP 范围
- 从 Google IP 地址范围 JSON 文件中提取 IP 范围。
向 ServiceNow 添加 IP 范围
- 以管理员身份登录 ServiceNow 实例。
- 依次前往全部 > 系统安全性 > IP 地址访问权限控制。
- 点击 New(新建)。
- 提供以下配置详细信息:
- 类型:选择允许。
- IP 地址:以 CIDR 表示法输入一个 Google SecOps IP 范围(例如
192.0.2.0/24)。 - 名称:输入一个描述性名称(例如
GGoogle SecOps IP Range 1)。 - 有效:选中此复选框即可启用相应规则。
- 点击提交。
- 针对每个额外的 Google SecOps IP 范围重复执行第 3-5 步。
配置 ServiceNow API 访问权限
如需让 Google SecOps 拉取 CMDB 数据,您需要创建具有相应权限的 ServiceNow 用户。
创建专用集成用户(推荐)
- 登录 ServiceNow 管理控制台。
- 依次前往全部 > 用户管理 > 用户。
- 点击 New(新建)。
- 提供以下配置详细信息:
- 用户 ID:输入一个描述性用户名(例如
google_secops_integration)。 - 名字:输入
Google。 - 姓氏:输入
SecOps Integration。 - 电子邮件地址:请输入有效的电子邮件地址以接收通知。
- 密码:点击设置密码,然后创建安全系数高的密码。
- 有效:选中相应复选框。
- 仅限 Web 服务访问:选中相应复选框(建议仅在需要 API 访问权限时选中)。
- 用户 ID:输入一个描述性用户名(例如
- 点击提交。
分配所需权限
- 创建用户后,打开用户记录。
- 前往角色部分。
- 点击修改。
- 在集合列表中,搜索并添加以下角色:
- cmdb_read:提供对 CMDB 表的读取访问权限。
- 点击保存。
记录 API 凭据
创建用户后,请记录以下凭据:
- 用户名:您创建的用户 ID(例如
google_secops_integration) - 密码:您为用户设置的密码
- API 主机名:您的 ServiceNow 实例 FQDN(例如
myinstance.servicenow.com)- 请勿包含
https://或任何路径。 - 请勿添加结尾斜杠。
- 请勿包含
- 表名称:要查询的 CMDB 表(例如
cmdb_ci、cmdb_ci_server、cmdb_ci_computer)
了解 ServiceNow CMDB 表
ServiceNow CMDB 以表格的层次结构形式组织。用于资产数据注入的最常见表格包括:
| 表名称 | 说明 | 使用场景 |
|---|---|---|
cmdb_ci |
基本配置项表(所有 CI 表的父表) | 所有配置项 |
cmdb_ci_server |
服务器配置项 | 物理服务器和虚拟服务器 |
cmdb_ci_computer |
计算机配置项 | 工作站、笔记本电脑、台式机 |
cmdb_ci_linux_server |
Linux 服务器配置项 | 特别是 Linux 服务器 |
cmdb_ci_win_server |
Windows 服务器配置项 | Windows 服务器 |
cmdb_ci_vm_instance |
虚拟机实例 | 虚拟机 |
cmdb_ci_network_adapter |
网络适配器 | 网络接口卡 |
cmdb_ci_ip_address |
IP 地址 | IP 地址记录 |
cmdb_ci_service |
商务服务 | 服务目录项 |
cmdb_ci_appl |
应用 | 应用配置项 |
验证 REST API 访问权限
在创建 Feed 之前,请验证您的 ServiceNow API 凭据是否正常运行。
使用 REST API Explorer 进行测试(可选)
- 以集成用户的身份登录到 ServiceNow 实例。
- 依次前往所有> 系统 Web 服务 > REST > REST API 探索器。
- 从命名空间下拉菜单中选择 Table API。
- 选择从表格中检索记录 (GET)。
- 在路径参数中,输入表名称(例如
cmdb_ci)。 - 点击发送。
- 验证响应状态是否为 200 OK,以及是否返回了记录。
使用 curl 进行测试(可选)
或者,使用 curl 测试 API:
curl "https://your-instance.service-now.com/api/now/table/cmdb_ci?sysparm_limit=10" \ --request GET \ --header "Accept: application/json" \ --user 'your-username':'your-password'- 替换:
your-instance.service-now.com:您的 ServiceNow 实例主机名your-username:集成用户的用户名your-password:集成用户的密码
- 替换:
成功的响应将返回包含配置项的 JSON 数据。
设置 Feed
如需配置 Feed,请按以下步骤操作:
- 依次前往 SIEM 设置> Feed。
- 点击添加新 Feed。
- 在下一页上,点击配置单个 Feed。
- 在 Feed 名称字段中,输入 Feed 的名称(例如
ServiceNow CMDB - All CIs或ServiceNow CMDB - Servers)。 - 选择第三方 API 作为来源类型。
- 选择 ServiceNow CMDB 作为日志类型。
- 点击下一步。
为以下输入参数指定值:
- 用户名:输入 ServiceNow 用户 ID(例如
google_secops_integration)。 - 密钥:输入 ServiceNow 用户密码。 重要提示:这是一个敏感字段。密码会经过加密处理,保存后无法查看。
- API 主机名:输入 ServiceNow 实例的完全限定域名。
- 示例:
myinstance.servicenow.com - 请勿添加:
- 协议 (
https://) - 路径 (
/api/now/table/) - 尾随斜杠
- 协议 (
- 示例:
- 区域实例:如果您的 ServiceNow 实例位于特定区域,请使用正确的主机名格式:
- 标准:
instance.service-now.com - 欧盟:
instance.service-now.eu - 其他区域:请咨询您的 ServiceNow 管理员
- 标准:
- 表名称:输入要查询的 ServiceNow CMDB 表。
- 示例:
cmdb_ci(所有配置项)cmdb_ci_server(所有服务器)cmdb_ci_computer(工作站和计算机)cmdb_ci_linux_server(仅限 Linux 服务器)cmdb_ci_win_server(仅限 Windows 服务器) 注意:表名称区分大小写,必须完全一致。每个 Feed 只能查询一个表。如需注入多个表,请为每个表创建单独的 Feed。
- 示例:
- 资产命名空间:资产命名空间。
- 注入标签:要应用于此 Feed 中事件的标签。
- 用户名:输入 ServiceNow 用户 ID(例如
点击下一步。
在最终确定界面中查看新的 Feed 配置,然后点击提交。
设置完成后,Feed 开始从 ServiceNow 实例检索 CMDB 记录。初始同步可能需要几分钟时间,具体取决于表中的记录数。
提取多个 CMDB 表
如需从多个 CMDB 表中注入数据,请为每个表创建单独的 Feed:
- 按照上述步骤创建第一个 Feed(例如,针对
cmdb_ci_server)。 - 点击添加新 Feed 以创建其他 Feed。
- 使用相同的 ServiceNow 凭据,但指定不同的表名称。
配置示例:
| Feed 名称 | 表名称 | 用途 |
|---|---|---|
| ServiceNow CMDB - 服务器 | cmdb_ci_server |
所有服务器 CI |
| ServiceNow CMDB - 计算机 | cmdb_ci_computer |
工作站 CI |
| ServiceNow CMDB - 网络适配器 | cmdb_ci_network_adapter |
网络接口 CI |
| ServiceNow CMDB - 应用 | cmdb_ci_appl |
应用 CI |
所需 API 权限
集成用户需要具备以下 ServiceNow 权限:
| 权限/角色 | 访问权限级别 | 用途 |
|---|---|---|
| cmdb_read | 读取 | 检索 CMDB 配置项数据 |
其他角色(可选):
- itil:如果您需要写入权限来创建或更新 CI,则必须提供此角色(Google SecOps 提取不需要此角色)
- rest_api_explorer:有助于在设置期间测试 API 访问权限
UDM 映射表
| ServiceNow 字段 | UDM 映射 | 逻辑 |
|---|---|---|
name |
entity.asset.hostname |
资产的主主机名 |
ip_address |
entity.asset.ip |
资产的主要 IP 地址 |
mac_address |
entity.asset.mac |
资产的 MAC 地址 |
serial_number |
entity.asset.hardware.serial_number |
硬件序列号 |
asset_tag |
entity.asset.asset_id |
资产标签或标识符 |
sys_class_name |
entity.asset.asset_type |
CI 类(服务器、计算机等) |
os |
entity.asset.platform_software.platform |
操作系统 |
sys_created_on |
entity.asset.first_seen_time |
素材资源创建时间戳 |
sys_updated_on |
entity.asset.last_seen_time |
上次更新时间戳 |
location |
entity.asset.location.name |
实际位置 |
company |
entity.asset.attribute.labels.value |
所有公司/组织 |
需要更多帮助?获得社区成员和 Google SecOps 专业人士的解答。