連結 ServiceNow

本頁說明如何將 ServiceNow 連結至 Gemini Enterprise。

設定資料來源並首次匯入資料後,資料儲存庫會按照您在設定期間選取的頻率,從該來源同步資料。

事前準備

設定連結前,請確認已備妥下列項目:

  1. ServiceNow 執行個體:按照 ServiceNow Developer 文件中的操作說明,建立 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. 依序前往「All」(全部) >「System OAuth」(系統 OAuth) >「Application registry」(應用程式註冊資料庫)

    選取
    選取應用程式登錄

  3. 點選「New」(新增)

    選取
    按一下「新增」按鈕

  4. 按一下「Create an OAuth API endpoint for external clients」(為外部用戶端建立 OAuth API 端點)

    選取
    選取為外部用戶端建立 OAuth API 端點的選項

  5. 填寫必填欄位:

    1. 「Name」(名稱):輸入不重複的名稱。
    2. 「Redirect URL」(重新導向網址):輸入重新導向網址: https://vertexaisearch.cloud.google.com/console/oauth/servicenow_oauth.html
  6. 按一下「Submit」(提交) 即可建立憑證。

    選取
    輸入重新導向網址

  7. 提交後,按一下名稱即可查看「Client ID」(用戶端 ID)

    選取
    查看用戶端 ID

  8. 密鑰會經過遮蓋。按一下旁邊的鎖頭圖示,即可取消遮蓋並查看用戶端密鑰。

    選取
    按一下鎖頭圖示

  9. 儲存「Client ID」(用戶端 ID) 和「Client secret」(用戶端密鑰),稍後會用到。

    選取
    複製用戶端 ID 和用戶端密鑰

如要擷取 ServiceNow 執行個體憑證,請按照下列步驟操作:

  1. 前往 developer.service-now.com,然後點按「Manage instance password」(管理執行個體密碼)

    選取
    按一下「管理執行個體密碼」按鈕

  2. 請保留執行個體網址、使用者名稱和密碼的副本,在必要時使用。

在這個階段,設定 ServiceNow 資料儲存庫所需的所有五項資訊都已備妥。如果使用管理員角色擷取資料沒有問題,請繼續建立資料儲存庫。

設定管理員角色和權限

將管理員角色提升為 security_admin,即可管理使用者和角色。

  1. 按一下個人資料圖示,然後選取「Elevate role」(提升角色)

    選取
    按一下「提升角色」按鈕

  2. 選取「security_admin」,然後按一下「Update」(更新)security_admin 角色可協助建立角色及管理使用者。

    選取
    選取「security_admin」角色,然後按一下「更新」按鈕

設定使用者角色和權限

如要在 Gemini Enterprise 中建立 ServiceNow 資料儲存庫,您必須授予使用者適當的角色和權限。開始前,請務必瞭解連接器如何處理「事件」實體的存取權。請參閱事件瀏覽權限和存取控管

選擇下列其中一個選項,授予使用者在 Google Cloud中設定資料儲存庫所需的角色和權限。每個選項都會提供必要的執行個體存取權。

事件瀏覽權限和存取控管

為提升安全性及防止意外資料暴露,ServiceNow 連接器會對「事件」實體採用限制性存取控管措施。確保使用者只能查看與自己直接相關聯的事件。

由於採取這項限制性做法,針對事件瀏覽權限,連接器不會採用廣泛的角色式權限。標準 ServiceNow 角色 (例如 itilsn_incident_read) 可能會授予使用者在 ServiceNow UI 中查看所有事件的權限,但在 Gemini Enterprise 中,這類角色不會授予相同層級的存取權。

具備下列任一角色的使用者擁有全域事件瀏覽權限,且可查看所有事件:

  • admin
  • incident_manager
  • change_manager

其他使用者只能查看自己開啟、重新開啟、解決或結案的事件。如果使用者符合下列條件,也可以查看事件:

  • 在事件的指派群組中。
  • 與事件相關聯的呼叫者。
  • 指派對象。
  • 在觀察清單中。
  • 在工作附註清單中。
  • 在其他指派對象清單中。

這樣一來,Gemini Enterprise 使用者就無法找到自己無權存取的事件。相較於廣泛的 ServiceNow 權限,由於此行為受到額外限制,使用者有時可能無法在 Gemini Enterprise 中找到他們在 ServiceNow 中有權存取的事件。

建立含有 ACL 規則的自訂角色 (建議)

建立具有最低權限集的自訂角色。

  1. 依序前往「All」(全部) >「User administration」(使用者管理) >「Roles」(角色)。

    選取
    選取角色

  2. 點選「New」(新增)

    選取
    按一下「新增」按鈕

  3. 提供名稱並點按「Submit」(提交)

    選取
    選取名稱並提交

  4. 依序前往「System security」(系統安全性) >「Access control (ACL)」(存取控管 (ACL))

    選取
    選取存取控管 (ACL)

  5. 按一下「New」(新增),建立新的 ACL 規則。

    選取
    按一下「新增」按鈕

  6. 重複以下兩個步驟,直到授予所有必要資料表的存取權為止。

    1. sys_user_role 為例,說明如何授予資料表存取權。

      選取
      選取 sys_user_role

    2. 按一下「Submit」(提交),然後選取角色。

必要資料表

連接器需要存取每個實體的這些資料表,才能執行作業。

表格名稱 說明

事件

在搜尋結果中顯示事件。

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 規則,然後在表單的「Name」(名稱) 欄位手動輸入 sc_cat_item.*,即可授予明確存取權。

    選取
    輸入 sc_cat_item.*

  2. 確認 ACL 已更新。

  3. 透過搜尋列前往 sys_security_acl_role_list.do

    選取
    輸入 sys_security_acl_role_list.do

  4. 將「Role」(角色) 設為要驗證的角色。

    選取
    選取要驗證的角色

  5. 確認已將必要的 ACL 指派給角色。

使用含有實體管理員的自訂角色

如果團隊或組織不想指派過高的權限,可能不適合使用管理員角色。這個選項會提供具備三項特定權限的角色,來授予必要存取權。

  1. 依序前往「All」(全部) >「System security」(系統安全性) >「Users and groups」(使用者和群組) >「Roles」(角色)

    選取
    新增角色

  2. 選取「New」(新增),然後輸入名稱。

    選取
    按一下「新增」按鈕

  3. 按一下「提交」

    選取
    按一下「提交」按鈕

  4. 在清單中找出建立的角色。

    選取
    使用角色名稱搜尋,然後按一下角色

  5. 依序前往「Contains roles」(包含角色) >「Edit」(編輯)

    選取
    按一下「編輯」按鈕

  6. 將下列角色新增至新建立的角色,然後點按「Save」(儲存)

    • catalog_admin
    • knowledge_admin
    • incident_manager

    選取
    新增角色,然後按一下「儲存」按鈕

  7. 確認更新。

    選取
    確認角色

  8. 下圖顯示包含三種角色的自訂角色:

    選取
    自訂角色

使用管理員角色

管理員角色可用來提取資料。您可以使用為執行個體設定的預設管理員角色,也可以建立具有管理員角色的新使用者,方法如下:

  1. 依序前往「All」(全部) >「User administration」(使用者管理) >「Users」(使用者)。

    選取
    選取使用者

  2. 建立新使用者並命名。

    選取
    選取使用者名稱

  3. 啟用「Web service access only」(僅限存取 Web 服務)。選取「Web service access only」(僅限存取 Web 服務) 時,您會建立非互動式使用者。

    互動式使用者與非互動式使用者:互動式使用者可以透過其使用者名稱和密碼,登入 ServiceNow UI 或服務入口網站。他們可以透過指向 UI 頁面、表單或清單的網址,存取執行個體,也能使用單一登入方法連線,例如摘要驗證或安全宣告標記語言 (SAML)。此外,如果嚴格安全設定允許,他們可以使用憑證來授權 SOAP 連線,並無限制地存取其他 API 連線,例如 WSDL、JSON、XML 或 XSD。

    然而,非互動式使用者只能使用憑證來授權 API 連線,例如 JSON、SOAP 和 WSDL。他們無法登入 ServiceNow UI,只能透過 API 通訊協定存取執行個體。

  4. 建立完成後,即可從使用者清單中選取使用者。

    選取
    選擇使用者

  5. 依序點選「Roles」(角色) >「Edit」(編輯)

    選取
    編輯角色

  6. 新增「Admin」(管理員)

  7. 按一下「Save」(儲存),即可為使用者新增角色清單。

    選取
    為使用者新增角色清單

  8. 按一下「Set password」(設定密碼),系統會自動產生密碼,請儲存。

    選取
    設定密碼

將角色授予使用者

  1. 依序前往「All」(全部) >「User administration」(使用者管理) >「Users」(使用者)。

    選取
    選取使用者

  2. 找出或建立新使用者。

    選取
    找出或建立新使用者

  3. 如果沒有可用的使用者,請依序前往「System security」(系統安全性) >「Users and groups」(使用者和群組) >「Users」(使用者)

    選取
    選取使用者

  4. 點選「New」(新增)

    選取
    按一下「新增」按鈕

  5. 在使用者表格中建立新的服務帳戶。請務必點選「Web service access only」(僅限存取 Web 服務)

    選取
    點選「僅限存取 Web 服務」選項

  6. 捲動至「Roles」(角色)

    選取
    前往「角色」

  7. 按一下 [編輯]

    選取
    編輯角色

  8. 授予您建立的角色,並指派給使用者。根據您在上一個步驟中建立的角色類型,選取適當的角色並指派給使用者。按一下 [儲存]

    選取
    選取並指派角色

    選取
    指派角色並儲存

  9. 查看含有 ACL 的自訂角色。

    選取
    含有 ACL 的自訂角色

  10. 取得使用者的使用者名稱和密碼,然後按一下「Set password」(設定密碼)

    選取
    設定密碼

  11. 自動產生密碼並儲存,供日後使用。

    選取
    自動產生密碼

建立 ServiceNow 連接器

主控台

按照下列步驟操作,透過 Google Cloud 控制台將 ServiceNow 的資料同步至 Gemini Enterprise:

  1. 前往 Google Cloud 控制台的「Gemini Enterprise」頁面。

    Gemini Enterprise

  2. 點按導覽選單中的「Data Stores」(資料儲存庫)

  3. 點按「 Create Data Store」(建立資料儲存庫)

  4. 在「Select a data source」(選取資料來源) 頁面中,捲動或搜尋「ServiceNow」以連線至第三方來源。

  5. 輸入 ServiceNow 驗證資訊。

    • 執行個體 URI
    • 用戶端 ID
    • 用戶端密鑰
    • 使用者帳戶
    • 密碼

    選取
    ServiceNow 驗證資訊

  6. 填入資料儲存庫的不重複名稱,然後點按「Create」(建立)

  7. 選取要同步處理的實體:

    • 說明文章

    • Service Catalog

    • 事件

    • 附件

  8. 如要從索引中篩除實體,或確保實體已納入索引,請按一下「Filter」(篩選)

    指定要納入或排除實體的篩選器
    指定篩選器來納入或排除實體

  9. 點選「Save」(儲存)

  10. 點選「Continue」(繼續)

  11. 選取「Full sync」(完整同步) 的「Sync frequency」(同步頻率),以及「Incremental data sync」(增量資料同步) 的「Incremental sync frequency」(增量同步頻率)。詳情請參閱同步時間表的相關說明。

    如要分別排定實體和身分資料的完整同步作業,請展開「Full sync」(完整同步) 下方的選單,然後選取「Custom options」(自訂選項)

    完整資料同步的自訂選項。
    為完整實體同步和完整身分同步,設定個別排程。
  12. 選取資料連接器的區域。

  13. 點按「Create」(建立)。Gemini Enterprise 會隨即建立資料儲存庫,並在「Data stores」(資料儲存庫) 頁面上顯示。

  14. 接著需要檢查擷取狀態,請前往「Data Stores」(資料儲存庫) 頁面,點按資料連接器名稱,即可在相應的「Data」(資料) 頁面查看該資料連接器的詳細資料。開始同步處理資料時,「Connector state」(連接器狀態) 會從「Creating」(建立中) 轉為「Running」(執行中)。擷取完成後,狀態會變更為「Active」(運作中),表示資料來源連線設定完成,正在等待執行下個排定的同步作業。

    視資料大小而定,擷取作業可能需要數分鐘至數小時才能完成。

啟用即時同步處理

即時同步功能只會同步處理文件實體,不會同步處理與身分實體相關的資料。下表列出即時同步處理功能支援的文件事件。

ServiceNow 實體 建立 更新 刪除 權限變更
附件
目錄
事件
資訊

如要為連結器啟用即時同步處理功能,請按照下列步驟操作。

  1. 前往 Google Cloud 控制台的「Gemini Enterprise」頁面。

    Gemini Enterprise

  2. 點按導覽選單中的「Data Stores」(資料儲存庫)

  3. 點按要啟用即時同步處理功能的 ServiceNow 連接器名稱。

  4. 在連接器的「Data」(資料) 頁面上,等待「Connector state」(連接器狀態) 變更為「Active」(運作中)

  5. 在「Real-time sync」(即時同步處理) 欄位中,點按「View/edit」(查看/編輯)

    查看及編輯即時同步處理設定
    查看及編輯即時同步處理設定。

  6. 將「Enable real-time sync」(啟用即時同步處理) 切換鈕設為開啟。

  7. 在「Client secret」(用戶端密鑰) 提供值。這個值將用來驗證 ServiceNow Webhook 事件。建議使用長度為 20 個字元的字串。

    啟用即時同步處理並提供用戶端密鑰
    啟用即時同步處理功能並提供用戶端密鑰。

  8. 按一下 [儲存]

    等待「Real-time sync」(即時同步處理) 欄位變更為「Running」(執行中)

  9. 使用具備管理員角色的帳戶,前往 ServiceNow 執行個體。

  10. 點按「All」(全部)

  11. 在「Filter」欄位中輸入 sys_properties.list,然後提交。

    在 ServiceNow 中找出系統屬性
    在 ServiceNow 中找出系統屬性。

  12. 點按「New」即可建立系統屬性。

    在 ServiceNow 中建立新的系統屬性
    在 ServiceNow 中建立新的系統屬性。

  13. 填寫新系統屬性的欄位。

    • 在「Name」部分輸入描述性名稱,例如 webhook_secret

    • 在「Value」(值) 部分,輸入您在 Gemini Enterprise 連接器即時同步處理設定的「Client secret」(用戶端密鑰) 欄位中使用的值。

  14. 按一下「提交」

    填寫新系統屬性的欄位
    填寫新 ServiceNow 系統屬性的欄位。

為知識實體建立 Webhook

如要為 ServiceNow 知識實體建立 Webhook,請按照下列步驟操作。

  1. 使用具備管理員角色的帳戶前往 ServiceNow 執行個體,然後依序點按「All」(全部) >「System Definition」(系統定義) >「Business Rules」(業務規則)

    查看 ServiceNow 業務規則
    查看 ServiceNow 業務規則。

  2. 點按「New」(新增),建立新的業務規則。

    建立新的 ServiceNow 業務規則
    建立新的 ServiceNow 業務規則。

  3. 填寫 Webhook 的欄位。

    • 在「Name」部分輸入描述性名稱,例如 Knowledge webhook

    • 選取「Advanced」(進階)。

    • 在「Table」中,選取「Knowledge [kb_knowledge]」

    填寫知識實體 Webhook 的欄位
    填寫知識實體 Webhook 的欄位。

  4. 點按「When to run」

    • 在「When」部分,選取「before」

    • 選取「Insert」、「Update」和「Delete」

    指定知識實體 Webhook 的執行時間
    指定知識實體 Webhook 的執行時間。

  5. 按一下 [進階]。

  6. 將下列程式碼貼到「Script」(指令碼) 欄位,並將端點值替換為啟用 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. 按一下「提交」

    提交新的業務規則
    提交新的業務規則。

為目錄實體建立 Webhook

如要為 ServiceNow 目錄實體建立 Webhook,請按照「為知識實體建立 Webhook」一文中的步驟操作,但請注意以下不同之處:

  • 建立新業務規則時,請在「Table」部分選取「Catalog Item [sc_cat_item]」

  • 在「Advanced」(進階) 分頁的「Script」(指令碼) 中,貼上下列程式碼,並將端點值替換為啟用 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);
    

為事件實體建立 Webhook

如要為 ServiceNow 事件實體建立 Webhook,請按照「為知識實體建立 Webhook」一文中的步驟操作,但請注意以下不同之處:

  • 建立新業務規則時,請在「Table」部分選取「Incident [incident]」

  • 在「Advanced」(進階) 分頁的「Script」(指令碼) 中,貼上下列程式碼,並將端點值替換為啟用 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);
    

為連結實體建立 Webhook

如要為 ServiceNow 連結實體建立 Webhook,請按照「為知識實體建立 Webhook」一文中的步驟操作,但請注意以下不同之處:

  • 建立新的業務規則時,請在「Table」部分選取「Attachment [sys_attachment]」

  • 在「Advanced」(進階) 分頁的「Script」(指令碼) 中,貼上下列程式碼,並將端點值替換為啟用 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) 的使用者。如要設定工作團隊集區並啟用網頁應用程式,提供流暢的使用者存取體驗,請按照下列步驟操作:

  1. 按照適當的設定手冊,在 Google Cloud 以組織層級建立工作團隊集區:

    1. Azure OIDC 設定
    2. Azure SAML 設定
    3. Okta 和 OIDC 設定
    4. Okta 和 SAML 設定
  2. 依序前往「Gemini Enterprise」>「Settings」(設定),為建立應用程式的區域設定工作團隊集區。

後續步驟