若要设置 ServiceNow CMDB 集成,需要提供 ServiceNow 实例的主机名和有效凭据。 连接器支持基本身份验证和 OAuth 2.0 作为只读访问的身份验证选项。 基本身份验证需要用户名和密码才能进行连接,OAuth 2.0 基于授予客户端凭据。
注意
ServiceNow 连接器支持基本身份验证和 OAuth 2.0 (客户端凭据授予) 。 我们建议创建一个专用用户,以便在具有最低特权 (cmdb_read) 角色分配的公开管理中的数据连接器中使用。
使用基本身份验证配置 ServiceNow
- 查找 ServiceNow 实例的主机名。 例如,“contoso.service-now.com”。
- 创建新的 ServiceNow 用户:
- 按照 此处 的步骤创建新用户。
- 请将 用户名 (用户 ID) 和密码 保留,以供将来使用。
- 如果没有密码字段,请提交表单以创建用户。 之后,选择新用户时,将收到 “设置密码” 选项。
- 创建用户时,检查“仅访问 Web 服务”框,以便用户将专用于此集成。
- 将 cmdb_read 角色分配给已创建的用户。 可 在此处找到详细说明。
配置 OAuth 2.0 身份验证 (客户端凭据流)
使用 OAuth 2.0 客户端凭据可避免存储长期密码,并符合新式身份验证标准。
先决条件
- 创建 (或标识至少具有cmdb_read角色的 ServiceNow 用户) 。 有关创建 ServiceNow 用户和分配角色的详细说明,请参阅 使用基本身份验证配置 ServiceNow 部分。 建议使用专用集成用户;仅当需要安装插件时,才暂时需要管理员。
- 请验证是否已安装这些插件, (导航到
sys_plugins.list) :- OAuth 2.0 (
com.snc.platform.security.oauth) - REST API 提供程序 (
com.glide.rest) - 身份验证范围 (
com.glide.auth.scope) - REST API 身份验证范围插件 (
com.glide.rest.auth.scope)
- OAuth 2.0 (
- 启用客户端凭据授予:
- 导航至
sys_properties.list - 属性名称:
glide.oauth.inbound.client.credential.grant_type.enabled - 值:
true - 此属性切换对客户端凭据流的支持。
- 导航至
创建 OAuth 客户端 (应用程序注册表)
- 转到:系统 OAuth -> 应用程序注册表。
- 选择:为外部客户端创建 OAuth API 终结点。
- 填写必填字段 (名称等 ) 。 将重定向 URL 和登录 URL 留空 (不用于客户端凭据) 。
- 确保公共客户端保持未选中状态, (必须是机密客户端) 。
- 保存记录。
- 在“应用程序注册表”列表视图中,自定义视图 (齿轮图标) 添加“OAuth 应用程序用户”列。
- 将 OAuth 应用程序用户设置为专用集成用户, (令牌将假定此用户的角色) 。
- 打开记录以复制客户端 ID 并生成/查看客户端密码。
令牌终结点和授予详细信息
- 令牌 URL 格式:
https://<your-instance>.service-now.com/oauth_token.do - 授予类型:
client_credentials - 不涉及重定向或授权代码。
- 范围:通常不需要;访问权限由 OAuth 应用程序用户的角色确定。
- 集成用户所需的角色:
cmdb_read(以及特定 CI 访问所需的任何其他角色(如果适用) )。
差异与基本身份验证
- 凭据可以轻松轮换 (重新生成客户端密码,而无需更改集成用户密码) 。
- 身份验证的范围限定为 OAuth 应用程序用户的角色。
- 速率限制和数据范围保持不变;确保专用用户以避免 API 争用。
- 不需要交互式登录或重定向 URL。
OAuth 疑难解答
| 问题 | 操作 |
|---|---|
| 401 未授权 | 确认客户端 ID/机密正确;验证是否设置了 OAuth 应用程序用户;确保 cmdb_read 已分配角色;确认属性 glide.oauth.inbound.client.credential.grant_type.enabled = true。 |
| 403 已禁止 | 用户缺少所需的 CMDB 读取角色;添加 cmdb_read。 |
| 无效的客户端 | 重新生成客户端密码;验证是否使用了“外部客户端的 OAuth API 终结点”。 |
| 令牌终结点失败 | 验证已安装的插件;确认实例主机名正确性。 |
| 空或缺少 CMDB 数据 | 验证集成用户是否可以直接在 CMDB 中查看 CIS;检查角色。 |
有关 ServiceNow OAuth 的更多背景信息,请参阅 ServiceNow 文档。
在公开管理中建立 ServiceNow 连接
若要在公开管理中与 ServiceNow 建立连接,请执行以下步骤:
- 从“公开管理”导航中打开 “数据连接器 ”,然后在“ServiceNow CMDB”磁贴中选择“ 连接 ”。
- 选择身份验证方法并输入所需信息:
- 对于“基本身份验证”:输入 ServiceNow 实例主机名,以及基本身份验证配置中创建的用户名和密码。
- 对于 OAuth 2.0:选择 OAuth 2.0 身份验证选项,并输入在 OAuth 配置中创建的实例主机名、客户端 ID 和客户端密码。
- 选择“连接”。 系统将使用所选方法进行身份验证并检索 CMDB 数据。
检索到的数据
公开管理当前检索设备上的数据、其业务应用程序关联和业务关键性。 还会检索有助于识别设备的其他数据,例如网络适配器信息和 OS 数据。
以下字段通过连接器引入:
| 类别 | Properties |
|---|---|
| Devices | -操作系统 - osVersion - osServicePack - cpuType -类别 - assetTag -虚拟 - serviceNowCriticality - usedFor - networkAdapters (在下面查看详细信息) - lastLoggedOnUser - mostFrequentUser - sysClassName - uPrimaryBusinessApplication (在下面查看详细信息) |
| 网络适配器 | -名字 - sysId - macAddress - ipAddress - ipDefaultGateway |
| 业务应用程序 | - sysId -数 - uCriticality - businessCriticality |
连接器疑难解答
下面是配置 ServiceNow 连接器时可能出现的一些常见问题,以及如何解决这些问题的建议。
| 错误类型 | 故障排除作 |
|---|---|
| “无法解析远程服务器名称”错误消息 | 验证 ServiceNow 实例主机名。 在此处详细了解对 ServiceNow 的 身份验证:身份验证 (servicenow.com) |
| 错误代码 401:授权失败 | 授权失败表示凭据可能不正确,或者没有足够的权限来访问 ServiceNow 数据。 检查凭据,确保凭据正确且有效。 此外,检查凭据具有所需的权限。 有关如何确保分配cmdb_read角色的详细信息,请参阅 使用基本身份验证配置 ServiceNow 部分。 此失败的另一个可能原因是 ServiceNow 实例配置为仅接受来自有限 IP 地址范围的连接。 在这种情况下,请参阅此处将正确的 IP 集添加到允许列表的指南: 允许列表 IP 地址 |
| 错误代码 403: 访问禁止错误 | 此错误表示提供的凭据缺少运行请求的 API 所需的权限。 按照 配置 ServiceNow 的基本身份验证 部分中所述,使用适当的权限更新凭据,并确保它们至少分配了cmdb_read角色。 |
| 错误代码 404: 找不到错误 | 此错误指示找不到可访问请求的终结点。 验证 ServiceNow 实例主机名是否正确。 |
| 错误代码 429 “请求过多” | 系统定期从配置的外部提供程序拉取数据,这些提供程序对并发请求数可能有限制。 建议为连接器创建专用用户或帐户,以避免达到此限制。 |
| 错误 URL 错误消息 | 此错误指示找不到可访问请求的终结点。 验证 ServiceNow 实例主机名是否正确。 |
| “临时断开连接”或“临时失败”错误 | 如果出现此错误消息时没有其他任何信息,请验证连接器配置 (主机名和凭据) 。 如果这些问题有效,并且问题无法自行解决,请联系支持人员。 |
| 在引入的数据中看不到某些 ServiceNow CMDB API 或资产 | 有关 ServiceNow CMDB 连接器预期检索的数据的说明,请参阅 检索 的数据。 如果仍然缺少数据,请联系支持人员。 |
| 看不到从 ServiceNow CMDB 引入的任何数据 | 查看连接状态,确保没有错误。 验证 ServiceNow CMDB 中是否存在与我们正在检索的数据对应的有效条目。 运行示例高级搜寻查询,以检查是否可以在公开关系图表中找到任何 ServiceNow 资产。如果仍找不到 ServiceNow CMDB 数据,请联系支持人员。 |
| 需要将 ServiceNow 允许的 IP 配置为启用公开管理连接器才能访问 ServiceNow | 在此处阅读如何将要添加到允许列表的 IP 集: 允许列表 IP 地址 |
后续步骤
配置 ServiceNow 数据连接器后: