ServiceNow 集成
ServiceNow 集成(管理 > 设置 > ServiceNow)实现 Canopy 与 ServiceNow CMDB 之间的双向同步。本指南涵盖从初始设置到高级方案和运维最佳实践的所有内容。

为什么要将 ServiceNow 与 Canopy 集成?
ServiceNow CMDB 和企业架构工具服务于不同但互补的目的:
| ServiceNow CMDB | Canopy | |
|---|---|---|
| 关注点 | IT 运维 —— 正在运行什么、谁负责、发生了什么事件 | 战略规划 —— 未来 3 年的架构应该是什么样子? |
| 维护者 | IT 运维、资产管理 | EA 团队、业务架构师 |
| 优势 | 自动发现、ITSM 工作流、运维准确性 | 业务上下文、能力映射、生命周期规划、评估 |
| 典型数据 | 主机名、IP、安装状态、分配组、合同 | 业务关键性、功能适用性、技术债务、战略路线图 |
Canopy 是架构的权威记录系统 —— 名称、描述、生命周期计划、评估和业务上下文都在这里管理。ServiceNow 用运维和技术元数据(主机名、IP、SLA 数据、安装状态)补充 Canopy,这些数据来自自动发现和 ITSM 工作流。集成保持两个系统的连接,同时尊重 Canopy 的主导地位。
您可以做什么
- 拉取同步 —— 从 ServiceNow 向 Canopy 导入 CI,然后接管所有权。后续拉取仅更新 SNOW 自动发现的运维字段(IP、状态、SLA)
- 推送同步 —— 将 EA 维护的数据推回 ServiceNow(名称、描述、评估、生命周期计划),以便 ITSM 团队看到 EA 上下文
- 双向同步 —— Canopy 主导大多数字段;SNOW 主导一小部分运维/技术字 段。两个系统保持同步
- 身份映射 —— 持久的交叉引用跟踪(sys_id <-> card UUID)确保记录在同步之间保持链接
集成架构
+------------------+ HTTPS / Table API +------------------+
| Canopy | <--------------------------------> | ServiceNow |
| | | |
| Cards | Pull: SNOW CIs -> Turbo Cards | CMDB CIs |
| (Application, | Push: Turbo Cards -> SNOW CIs | (cmdb_ci_appl, |
| ITComponent, | | cmdb_ci_server, |
| Provider, ...) | Identity Map tracks sys_id <-> UUID | core_company) |
+------------------+ +------------------+
集成使用 ServiceNow 的 Table API 通过 HTTPS 通信。凭据使用从 SECRET_KEY 派生的 Fernet(AES-128-CBC)加密存储。所有同步操作作为带有 source: "servicenow_sync" 的事件记录,提供完整的审计轨迹。
规划您的集成
在配置任何内容之前,回答以下问题:
1. 哪些卡片类型需要 ServiceNow 的数据?
从小规模开始。最常见的集成点是:
| 优先级 | Canopy 类型 | ServiceNow 来源 | 原因 |
|---|---|---|---|
| 高 | 应用程序 | cmdb_ci_business_app | 应用程序是 EA 的核心 —— CMDB 有权威的名称、所有者和状态 |
| 高 | IT 组件(软件) | cmdb_ci_spkg | 软件产品馈入 EOL 跟踪和技术雷达 |
| 中 | IT 组件(硬件) | cmdb_ci_server | 基础设施映射的服务器架构 |
| 中 | 供应商 | core_company | 成本和关系管理的供应商注册表 |
| 低 | 接口 | cmdb_ci_endpoint | 集成端点(通常在 EA 中手动维护) |
| 低 | 数据对象 | cmdb_ci_database | 数据库实例 |
2. 每个字段的权威来源是哪个系统?
这是最重要的决策。默认应该是 Canopy 主导 —— EA 工具是架构的权威记录系统。ServiceNow 应该仅对来自自动发现或 ITSM 工作流的少量运维和技术字段拥有主导权。其他所有内容 —— 名称、描述、评估、生命周期规划、成本 —— 由 EA 团队在 Canopy 中拥有和维护。
推荐模型 —— 「Canopy 主导,SNOW 补充」:
| 字段类型 | 权威来源 | 原因 |
|---|---|---|
| 名称和描述 | Turbo 主导 | EA 团队维护权威名称并编写战略描述;CMDB 名称可能混乱或自动生成 |
| 业务关键性 | Turbo 主导 | EA 团队的战略评估 —— 不是运维数据 |
| 功能/技术适用性 | Turbo 主导 | TIME 模型评分是 EA 关注的事项 |
| 生命周期(所有阶段) | Turbo 主导 | 规划、引入、活跃、淘汰、生命周期结束 —— 都是 EA 规划数据 |
| 成本数据 | Turbo 主导 | EA 跟踪总拥有成本;CMDB 可能有合同行项目,但 EA 拥有整合视图 |
| 托管类型、分类 | Turbo 主导 | EA 按托管模型分类应用程序用于战略分析 |
| 技术元数据 | SNOW 主导 | IP、操作系统版本、主机名、序列号 —— EA 不维护的自动发现数据 |
| SLA/运维状态 | SNOW 主导 | 安装状态、SLA 目标、可用性指标 —— ITSM 运维数据 |
| 分配组/支持 | SNOW 主导 | ServiceNow 工作流中跟踪的运维所有权 |
| 发现日期 | SNOW 主导 | 首次/最后发现、最后扫描 —— CMDB 自动化元数据 |
3. 应该多久同步一次?
| 场景 | 频率 | 说明 |
|---|---|---|
| 初始导入 | 一次 | 追加模式,仔细审查 |
| 活跃架构管理 | 每天 | 非工作时间通过 cron 自动化 |
| 合规报告 | 每周 | 生成报告前 |
| 临时 | 按需 | 重大 EA 评审或演示前 |
步骤 1:ServiceNow 先决条件
创建服务账户
在 ServiceNow 中,创建专用的服务账户(不要使用 个人账户):
| 角色 | 目的 | 是否必需? |
|---|---|---|
itil | CMDB 表的读取权限 | 是 |
cmdb_read | 读取配置项 | 是 |
rest_api_explorer | 有助于测试查询 | 推荐 |
import_admin | 目标表的写入权限 | 仅推送同步需要 |
最佳实践:创建自定义角色,仅对您计划同步的特定表具有只读访问权限。itil 角色范围较广 —— 自定义范围角色限制影响范围。
网络要求
- Canopy 后端必须能通过 HTTPS(端口 443)访问您的 SNOW 实例
- 配置防火墙规则和 IP 白名单
- 实例 URL 格式:
https://company.service-now.com或https://company.servicenowservices.com
选择认证方式
| 方式 | 优点 | 缺点 | 推荐 |
|---|---|---|---|
| Basic Auth | 设置简单 | 每次请求发送凭据 | 仅用于开发/测试 |
| OAuth 2.0 | 基于令牌、有范围限制、审计友好 | 设置步骤更多 | 推荐用于生产环境 |
对于 OAuth 2.0:
- 在 ServiceNow 中:System OAuth > Application Registry
- 为外部 客户端创建新的 OAuth API 端点
- 记下客户端 ID 和客户端密钥
- 每 90 天轮换密钥
步骤 2:创建连接
导航到管理 > ServiceNow > 连接标签页。
创建和测试
- 点击添加连接
- 填写:
| 字段 | 示例值 | 说明 |
|---|---|---|
| 名称 | 生产 CMDB | 团队的描述性标签 |
| 实例 URL | https://company.service-now.com | 必须使用 HTTPS |
| 认证类型 | Basic Auth 或 OAuth 2.0 | 生产推荐 OAuth |
| 凭据 | (按认证类型) | 通过 Fernet 加密存储 |
- 点击创建,然后点击测试图标(wifi 符号)验证连接
- 绿色「已连接」芯片 —— 准备就绪
- 红色「失败」芯片 —— 检查凭据、网络和 URL
多个连接
您可以为以下情况创建多个连接:
- 生产与开发实例
- 区域 SNOW 实例(例如 EMEA、APAC)
- 具有独立服务账户的不同团队
每个映射引用一个特定的连接。
步骤 3:设计映射
切换到映射标签页。映射将一个 Canopy 卡片类型连接到一个 ServiceNow 表。
创建映射
点击添加映射并配置:
| 字段 | 描述 | 示例 |
|---|---|---|
| 连接 | 使用哪个 ServiceNow 实例 | 生产 CMDB |
| 卡片类型 | 要同步的 Canopy 卡片类型 | 应用程序 |
| SNOW 表 | ServiceNow 表 API 名称 | cmdb_ci_business_app |
| 同步方向 | 可用的同步操作(见下方) | ServiceNow -> Canopy |
| 同步模式 | 如何处理删除 | 保守 |
| 最大删除比率 | 批量删除的安全阈值 | 50% |
| 筛选查询 | ServiceNow 编码查询以限制范围 | active=true^install_status=1 |
| 跳过暂存 | 不经审查直接应用更改 | 关闭(推荐用于初始同步) |