连接 ServiceNow

本页介绍了如何将 ServiceNow 关联到 Gemini Enterprise。

首次设置数据源并导入数据后,数据存储区会按照您在设置期间选择的频率同步来自该来源的数据。

准备工作

在设置关联之前,请确保您已准备好以下各项:

  1. ServiceNow 实例:按照 ServiceNow 开发者文档中的说明创建 ServiceNow 实例。
  2. Google Cloud 项目:设置一个 Google Cloud 项目,并使用能够管理组织级配置的管理员账号,确保组织可以设置员工池。

  3. 员工池:确保您的组织已设置为能够管理员工池。

设置 ServiceNow

ServiceNow 提供两个主要网站:

  1. 主 ServiceNow 网站:您的 ServiceNow 实例对应的网站。

    • 管理用户、群组和系统管理任务。
    • 网址:您的 ServiceNow 实例的网址。
    • 使用管理员凭证登录。
  2. 开发者网站

    • 配置知识库、设置工作流和开发自定义应用。
    • 网址:https://developer.service-now.com
    • 使用您的 ServiceNow ID 登录。

如需创建 OAuth 端点,请执行以下操作:

  1. 以管理员角色登录主 ServiceNow 实例。
  2. 依次前往全部 > 系统 OAuth > 应用注册

    select
    选择应用注册

  3. 点击 New(新建)。

    select
    点击“新建”按钮

  4. 点击为外部客户端创建 OAuth API 端点

    select
    选择为外部客户端创建 OAuth API 端点的选项

  5. 填写必填字段:

    1. 名称:输入一个唯一名称。
    2. 重定向网址:输入重定向网址: https://vertexaisearch.cloud.google.com/console/oauth/servicenow_oauth.html
  6. 点击提交以创建凭证。

    select
    输入重定向网址

  7. 提交后,点击名称以查看客户端 ID

    select
    查看客户端 ID

  8. 密钥已被遮盖。点击密钥旁边的锁形图标,即可取消遮盖并查看客户端密钥。

    select
    点击锁形图标

  9. 保存客户端 ID客户端密钥以供日后使用。

    select
    复制客户端 ID 和客户端密钥

如需检索 ServiceNow 实例凭证,请执行以下操作:

  1. 访问 developer.service-now.com,然后点击管理实例密码

    select
    点击“管理实例密码”按钮

  2. 保留实例网址、用户名和密码的副本,以便在需要时使用。

在此阶段,设置 ServiceNow 数据存储区所需的所有五项信息均已准备就绪。如果对使用管理员角色拉取数据不存在顾虑,请继续创建数据存储区。

设置管理员角色和权限

将管理员角色提升为 security_admin,以管理用户和角色。

  1. 点击您的个人资料图标,然后选择提升角色

    select
    点击“提升角色”按钮

  2. 选择 security_admin,然后点击更新security_admin 角色能够用于创建角色和管理用户。

    select
    选择 security_admin 角色,然后点击“更新”按钮

设置用户角色和权限

如需在 Gemini Enterprise 中创建 ServiceNow 数据存储区,您需要向用户授予适当的角色和权限。在开始之前,请务必了解连接器如何处理对突发事件实体的访问权限。请参阅突发事件可见性和访问权限控制

选择以下选项之一,向用户授予在 Google Cloud中设置数据存储区所需的角色和权限。每个选项都提供对实例的必需访问权限。

突发事件可见性和访问权限控制

为了增强安全性并防止意外的数据泄露,ServiceNow 连接器对突发事件实体使用限制性访问权限控制。这样可确保最终用户只能查看与自己直接关联的突发事件。

在这种限制性方法中,连接器不会遵循基于角色的广泛突发事件查看权限。标准 ServiceNow 角色(例如 itilsn_incident_read)可能会授予用户在 ServiceNow 界面中查看所有突发事件的权限,但在 Gemini Enterprise 中不会授予相同级别的访问权限。

拥有以下任一角色的用户具有全局突发事件查看权限,可以查看所有突发事件:

  • admin
  • incident_manager
  • change_manager

其他用户仅能查看自己打开、重新打开、解决或关闭过的突发事件。如果用户满足以下条件,也可以查看突发事件:

  • 在相应突发事件的分配组中。
  • 与突发事件关联的来电者。
  • 受让方。
  • 在关注列表中。
  • 在工作笔记列表中。
  • 在其他受让方列表中。

此行为可防止 Gemini Enterprise 用户找到他们无权访问的突发事件。与更广泛的 ServiceNow 权限相比,由于存在额外的限制,此行为有时可能会阻止用户在 Gemini Enterprise 中找到他们在 ServiceNow 中有权访问的突发事件。

创建实施 ACL 规则的自定义角色(推荐)

创建具有一组所需最低权限的自定义角色。

  1. 依次前往全部 > 用户管理 > 角色

    select
    选择角色

  2. 点击 New(新建)。

    select
    点击“新建”按钮

  3. 提供一个名称,然后点击提交

    select
    选择名称并提交

  4. 依次前往系统安全性 > 访问权限控制 (ACL)

    select
    选择访问权限控制 (ACL)

  5. 点击新建以创建新的 ACL 规则。

    select
    点击“新建”按钮

  6. 重复以下两个步骤,直到您授予对所有必需表的访问权限。

    1. sys_user_role 为例,了解如何授予表访问权限。

      select
      选择 sys_user_role

    2. 点击提交,然后选择相应角色。

必需的表

连接器需要访问每个实体的以下表才能运行。

表格名称 说明

突发事件

在搜索结果中显示突发事件。

sc_cat_item

在搜索结果中显示目录项。

sc_cat_item_user_criteria_mtom

根据用户条件显示可以访问目录项的用户。

sc_cat_item_user_criteria_no_mtom

根据用户条件显示无法访问目录项的用户。

sc_cat_item_user_mtom

显示可以访问目录项的用户。

sc_cat_item_user_no_mtom

显示无法访问目录项的用户。

kb_knowledge

可在搜索结果中显示的知识文章列表。

kb_knowledge_base

可在搜索结果中显示的知识库列表。

kb_uc_can_contribute_mtom

根据用户条件显示可以为知识库贡献内容的用户。

kb_uc_can_read_mtom

根据用户条件显示可以阅读知识库内容的用户。

kb_uc_cannot_read_mtom

根据用户条件显示无法阅读知识库内容的用户。

sys_user_role

可分配给用户的角色列表。

sys_user_has_role

映射到用户的角色列表。

sys_user_group

用户群组细分列表。

sys_user_grmember

群组的群组成员列表。

sys_user

所有用户的列表。

core_company

所有公司属性的列表。

cmn_location

所有位置属性的列表。

cmn_department

所有部门属性的列表。

user_criteria

用户条件记录列表。

sp_portal

搜索结果中的链接门户 URI。

m2m_sp_portal_knowledge_base

搜索结果中知识文章的链接门户 URI。

m2m_sp_portal_catalog

搜索结果中目录项的链接门户 URI。

授予和验证 ACL 访问权限

连接器需要对 sc_cat_item 表的目录项字段具有 ACL 访问权限。

如需授予和验证访问权限,请执行以下操作:

  1. 通过创建新的 ACL 规则并在表单的名称字段中手动输入 sc_cat_item.* 来授予明确的访问权限。

    select
    输入 sc_cat_item.*

  2. 验证 ACL 是否已更新。

  3. 在搜索栏中输入 sys_security_acl_role_list.do

    select
    输入 sys_security_acl_role_list.do

  4. 角色设置为您要验证的角色。

    select
    选择要验证的角色

  5. 验证是否已向相应角色分配所需的 ACL。

使用具有实体管理员权限的自定义角色

对于希望避免分配过于强大权限的团队或组织,使用管理员角色可能并不合适。此方法提供了一个具有三项特定权限的角色,可授予所需的访问权限。

  1. 依次前往全部 > 系统安全性 > 用户和群组 > 角色

    select
    添加角色

  2. 选择新建,然后输入一个名称。

    select
    点击“新建”按钮

  3. 点击提交

    select
    点击“提交”按钮

  4. 在列表中找到创建的角色。

    select
    使用角色名称进行搜索,然后点击相应角色

  5. 依次前往包含的角色 > 修改

    select
    点击“修改”按钮

  6. 向新创建的角色添加以下角色,然后点击保存

    • catalog_admin
    • knowledge_admin
    • incident_manager

    select
    添加角色,然后点击“保存”按钮

  7. 确认更新。

    select
    确认角色

  8. 下图显示了包含三个角色的自定义角色:

    select
    自定义角色

使用管理员角色

您可以使用管理员角色拉取数据。使用实例配置的默认管理员角色,或通过执行以下操作创建具有管理员角色的新用户:

  1. 依次前往全部 > 用户管理 > 用户

    select
    选择用户

  2. 创建新用户并为其输入一个名称。

    select
    选择用户名

  3. 启用仅限 Web 服务访问。如果您选择仅限 Web 服务访问,则会创建非交互式用户。

    交互式用户与非交互式用户:交互式用户可以使用其用户名和密码登录 ServiceNow 界面或服务门户。他们可以通过指向界面页面、表单或列表的网址访问实例。他们还可以使用摘要式身份验证或安全断言标记语言 (SAML) 等单点登录方法进行连接。此外,如果严格的安全设置允许,他们还可以使用自己的凭证来授权 SOAP 连接,并且可以不受限制地访问其他 API 连接,例如 WSDL、JSON、XML 或 XSD。

    而非交互式用户只能使用其凭证来授权 JSON、SOAP 和 WSDL 等 API 连接。他们无法登录 ServiceNow 界面,只能通过 API 协议访问实例。

  4. 创建用户后,从用户列表中选择该用户。

    select
    选择用户

  5. 依次点击角色 > 修改

    select
    修改角色

  6. 添加管理员

  7. 点击保存,向该用户添加一系列角色。

    select
    向用户添加角色列表

  8. 点击设置密码,以自动生成密码并将其保存。

    select
    设置密码

向用户授予角色

  1. 依次前往全部 > 用户管理 > 用户

    select
    选择用户

  2. 查找用户或创建新用户。

    select
    查找用户或创建新用户

  3. 如果没有可用用户,请依次前往系统安全性 > 用户和群组 > 用户

    select
    选择用户

  4. 点击 New(新建)。

    select
    点击“新建”按钮

  5. 在用户表中创建新的服务账号。请务必点击仅限 Web 服务访问

    select
    点击“仅限 Web 服务访问”选项

  6. 滚动到角色

    select
    前往“角色”

  7. 点击修改

    select
    修改角色

  8. 向其授予您创建的角色,并将其分配给用户。根据您在上一步中创建的角色类型,选择相应的角色并将其分配给用户。点击保存

    select
    选择并分配角色

    select
    分配角色并保存

  9. 查看实施 ACL 的自定义角色。

    select
    实施 ACL 的自定义角色

  10. 获取用户的用户名和密码,然后点击设置密码

    select
    设置密码

  11. 自动生成密码并将其保存以备后用。

    select
    自动生成密码

创建 ServiceNow 连接器

控制台

如需使用 Google Cloud 控制台将 ServiceNow 中的数据同步到 Gemini Enterprise,请按照以下步骤操作:

  1. 在 Google Cloud 控制台中,前往 Gemini Enterprise 页面。

    Gemini Enterprise

  2. 在导航菜单中,点击数据存储区

  3. 点击 创建数据存储区

  4. 选择数据源页面上,滚动或搜索 ServiceNow 以连接第三方来源。

  5. 输入您的 ServiceNow 身份验证信息。

    • 实例 URI
    • 客户端 ID (Client ID)
    • 客户端密钥
    • 用户账号
    • 密码

    select
    ServiceNow 身份验证信息

  6. 为数据存储区填写一个唯一的名称,然后点击创建

  7. 选择要同步的实体:

    • 知识库文章

    • Service Catalog

    • 突发事件

    • 附件

  8. 如需将实体从索引中排除,或确保其被纳入索引中,请点击过滤

    指定用于包含或排除实体的过滤条件
    指定用于包含或排除实体的过滤条件

  9. 点击保存

  10. 点击继续

  11. 完全同步选择同步频率,为增量数据同步选择增量同步频率。如需了解详情,请参阅同步时间表

    如果您想分开安排实体数据和身份数据的完全同步,请展开完全同步下的菜单,然后选择自定义选项

    用于设置数据的完全同步的自定义选项。
    为完全实体同步和完全身份同步单独设置时间表。
  12. 为您的数据连接器选择一个区域。

  13. 点击创建。Gemini Enterprise 会创建数据存储区,并在数据存储区页面上显示这些数据存储区。

  14. 如需查看数据注入状态,请前往数据存储区页面,然后点击数据连接器名称,在其数据页面查看相关详情。当连接器开始同步数据时,连接器状态会从正在创建变为正在运行。注入完成后,状态会变为活跃,表明已设置与数据源的连接,并且正在等待下一次预定同步。

    注入过程可能需要几分钟或几小时才能完成,具体取决于数据的大小。

启用实时同步

实时同步只会同步文档实体,不会同步与身份实体相关的数据。下表显示了哪些文档事件支持实时同步。

ServiceNow 实体 创建 更新 删除 权限更改
附件
目录
突发事件
知识

如需为连接器启用实时同步,请按以下步骤操作。

  1. 在 Google Cloud 控制台中,前往 Gemini Enterprise 页面。

    Gemini Enterprise

  2. 在导航菜单中,点击数据存储区

  3. 点击要启用实时同步的 ServiceNow 连接器的名称。

  4. 在连接器的数据页面上,等待连接器状态变为活跃

  5. 实时同步字段中,点击查看/修改

    查看和修改实时同步设置
    查看和修改实时同步设置。

  6. 点击启用实时同步切换开关,将其切换到开启位置。

  7. 客户端密钥字段提供一个值。该值用于验证 ServiceNow 网络钩子事件。我们建议使用 20 个字符的字符串。

    启用实时同步并提供客户端密钥
    启用实时同步并提供客户端密钥。

  8. 点击保存

    等待实时同步字段变为正在运行

  9. 使用拥有管理员角色的账号前往您的 ServiceNow 实例。

  10. 点击全部

  11. 过滤条件字段中,输入 sys_properties.list 并提交。

    在 ServiceNow 中查找系统属性
    在 ServiceNow 中查找系统属性。

  12. 点击新建以创建系统属性。

    在 ServiceNow 中创建新的系统属性
    在 ServiceNow 中创建新的系统属性。

  13. 填写该新系统属性的字段。

    • 名称部分,输入一个描述性名称,例如 webhook_secret

    • 部分,输入您在 Gemini Enterprise 连接器实时同步设置的客户端密钥字段中使用的值。

  14. 点击提交

    填写新系统属性的字段
    填写新 ServiceNow 系统属性的字段。

为知识实体创建网络钩子

如需为 ServiceNow 知识实体创建网络钩子,请按照以下步骤操作。

  1. 使用拥有管理员角色的账号前往您的 ServiceNow 实例,然后依次点击全部 > 系统定义 > 业务规则

    查看 ServiceNow 业务规则
    查看 ServiceNow 业务规则。

  2. 点击新建以创建新的业务规则。

    创建新的 ServiceNow 业务规则
    创建新的 ServiceNow 业务规则。

  3. 填写网络钩子的字段。

    • 名称部分,输入一个描述性名称,例如 Knowledge webhook

    • 选择高级

    • 部分,选择知识 [kb_knowledge]

    填写知识实体网络钩子的字段
    填写知识实体网络钩子的字段。

  4. 点击运行时间

    • 时间部分,选择之前

    • 选择插入更新删除

    指定知识实体 webhook 应何时运行
    指定知识实体 webhook 应何时运行。

  5. 点击高级

  6. 将以下代码粘贴到脚本字段中,并将端点值替换为您为 Gemini Enterprise 连接器启用实时同步时提供的 webhook 通知网址:

    (function executeRule(current, previous /*null when async*/) {
      var request = new sn_ws.RESTMessageV2();
      request.setEndpoint('WEBHOOK_NOTIFICATION_URL');
      request.setHttpMethod('POST');
    
      var token = gs.getProperty('webhook_secret');
      var requestBody = "{\"sys_id\":\"" + current.sys_id + "\",\"entity\":\"" + "knowledge" + "\",\"operation\":\"" + current.operation() + "\"}"; 
      request.setRequestHeader("Accept","application/json");
      request.setRequestHeader('Content-Type','application/json');
      request.setRequestBody(requestBody);
      var signature = SncAuthentication.encode(requestBody, token, "HmacSHA256");
      request.setRequestHeader("X-Hub-Signature", 'sha256=' + signature);
    
      var response = request.execute();
      gs.log(response.getBody());
    })(current, previous);
    

    输入提供的脚本
    输入提供的脚本。

  7. 点击提交

    提交新的业务规则
    提交新的业务规则。

为目录实体创建网络钩子

如需为 ServiceNow 目录实体创建网络钩子,按照为知识实体创建网络钩子部分的步骤操作即可,但需注意以下区别:

  • 创建新的业务规则时,在部分,需选择目录项 [sc_cat_item]

  • 高级标签页中,将以下代码粘贴到脚本中,并将端点值替换为您为 Gemini Enterprise 连接器启用实时同步时提供的 webhook 通知网址:

    (function executeRule(current, previous /*null when async*/) {
      var request = new sn_ws.RESTMessageV2();
      request.setEndpoint('WEBHOOK_NOTIFICATION_URL');
      request.setHttpMethod('POST');
    
      var token = gs.getProperty('webhook_secret');
      var requestBody = "{\"sys_id\":\"" + current.sys_id + "\",\"entity\":\"" + "catalog" + "\",\"operation\":\"" + current.operation() + "\"}"; 
      request.setRequestHeader("Accept","application/json");
      request.setRequestHeader('Content-Type','application/json');
      request.setRequestBody(requestBody);
      var signature = SncAuthentication.encode(requestBody, token, "HmacSHA256");
      request.setRequestHeader("X-Hub-Signature", 'sha256=' + signature);
    
      var response = request.execute();
      gs.log(response.getBody());
    })(current, previous);
    

为突发事件实体创建网络钩子

如需为 ServiceNow 突发事件实体创建网络钩子,按照为知识实体创建网络钩子部分的步骤操作即可,但需注意以下区别:

  • 创建新的业务规则时,在部分,需选择突发事件 [incident]

  • 高级标签页中,将以下代码粘贴到脚本中,并将端点值替换为您为 Gemini Enterprise 连接器启用实时同步时提供的 webhook 通知网址:

    (function executeRule(current, previous /*null when async*/) {
      var request = new sn_ws.RESTMessageV2();
      request.setEndpoint('WEBHOOK_NOTIFICATION_URL');
      request.setHttpMethod('POST');
    
      var token = gs.getProperty('webhook_secret');
      var requestBody = "{\"sys_id\":\"" + current.sys_id + "\",\"entity\":\"" + "incident" + "\",\"operation\":\"" + current.operation() + "\"}"; 
      request.setRequestHeader("Accept","application/json");
      request.setRequestHeader('Content-Type','application/json');
      request.setRequestBody(requestBody);
      var signature = SncAuthentication.encode(requestBody, token, "HmacSHA256");
      request.setRequestHeader("X-Hub-Signature", 'sha256=' + signature);
    
      var response = request.execute();
      gs.log(response.getBody());
    })(current, previous);
    

为附件实体创建网络钩子

如需为 ServiceNow 附件实体创建网络钩子,按照为知识实体创建网络钩子部分的步骤操作即可,但需注意以下区别:

  • 创建新的业务规则时,在部分,需选择附件 [sys_attachment]

  • 高级标签页中,将以下代码粘贴到脚本中,并将端点值替换为您为 Gemini Enterprise 连接器启用实时同步时提供的 webhook 通知网址:

    (function executeRule(current, previous /*null when async*/) {
      var request = new sn_ws.RESTMessageV2();
      request.setEndpoint('WEBHOOK_NOTIFICATION_URL');
      request.setHttpMethod('POST');
    
      var token = gs.getProperty('webhook_secret');
      var requestBody = "{\"sys_id\":\"" + current.sys_id + "\",\"entity\":\"" + "attachment" + "\",\"operation\":\"" + current.operation() + "\"}"; 
        request.setRequestHeader("Accept","application/json");
        request.setRequestHeader('Content-Type','application/json');
        request.setRequestBody(requestBody);
        var signature = SncAuthentication.encode(requestBody, token, "HmacSHA256");
        request.setRequestHeader("X-Hub-Signature", 'sha256=' + signature);
    
        var response = request.execute();
        gs.log(response.getBody());
    })(current, previous);
    

配置员工池

借助员工池,您可以在 Google Cloud 控制台中管理并对来自外部身份提供方(如 Azure 或 Okta)的用户进行身份验证。如需配置员工池并启用 Web 应用,以实现无缝的用户访问,请执行以下操作:

  1. 按照相应的设置手册在 Google Cloud 中创建组织级员工池:

    1. Azure OIDC 设置
    2. Azure SAML 设置
    3. Okta 和 OIDC 设置
    4. Okta 和 SAML 设置
  2. Gemini Enterprise > 设置部分,为您在其中创建应用的区域配置员工池。

后续步骤