このページでは、ServiceNow を Gemini Enterprise に接続する方法について説明します。
データソースを設定してデータを初めてインポートすると、データストアは設定時に選択した頻度でそのソースからデータを同期します。
始める前に
接続を設定する前に、次のものが揃っていることを確認してください。
- ServiceNow インスタンス: ServiceNow Developer ドキュメントの手順に沿って、ServiceNow インスタンスを作成します。
Google Cloud プロジェクト: 組織レベルの構成を管理できる管理者アカウントを使用して Google Cloud プロジェクトを設定し、組織が Workforce プールを設定できるようにします。
Workforce プール: 組織が Workforce プールを管理するように設定されていることを確認します。
ServiceNow を設定する
ServiceNow には、次の 2 つのプライマリ サイトがあります。
メインの ServiceNow サイト: ServiceNow インスタンスのサイト。
- ユーザー、グループ、システム管理タスクを管理します。
- URL: ServiceNow インスタンスの URL。
- 自分の管理者認証情報を使用してログインします。
-
- ナレッジベースを構成し、ワークフローを設定して、カスタム アプリケーションを開発します。
- URL:
https://developer.service-now.com
。 - ServiceNow ID を使用してログインします。
OAuth エンドポイントを作成するには:
- 管理者ロールを使用してメインの ServiceNow インスタンスにログインします。
[すべて] > [システム OAuth] > [アプリケーション レジストリ] に移動します。
アプリケーション レジストリを選択する [New] をクリックします。
[新規] ボタンをクリックします。 [外部クライアント用の OAuth API エンドポイントを作成する] をクリックします。
外部クライアント用の OAuth API エンドポイントを作成するオプションを選択します。 必須フィールドに入力します。
- [名前]: 一意の名前を入力します。
- [リダイレクト URL]: リダイレクト URL を入力します。
https://vertexaisearch.cloud.google.com/console/oauth/servicenow_oauth.html
[送信] をクリックして、認証情報を作成します。
リダイレクト URL を入力します 送信したら、名前をクリックしてクライアント ID を表示します。
クライアント ID を表示する シークレットはマスクされています。クライアント シークレットのマスクを解除して表示するには、横にある鍵アイコンをクリックします。
鍵アイコンをクリックします 後で使用するために、クライアント ID とクライアント シークレットを保存します。
クライアント ID とクライアント シークレットをコピーする
ServiceNow インスタンスの認証情報を取得するには:
developer.service-now.com にアクセスし、[インスタンスのパスワードを管理する] をクリックします。
[インスタンス パスワードの管理] ボタンをクリックします。 必要に応じて使用するインスタンスの URL、ユーザー名、パスワードのコピーを保管しておきます。
この段階で、ServiceNow データストアの設定に必要な 5 つの情報がすべて揃っています。管理者ロールを使用してデータを取得することに問題がない場合は、データストアの作成に進みます。
管理者ロールと権限を設定する
管理者ロールを security_admin
に昇格させて、ユーザーとロールを管理します。
プロフィール アイコンをクリックし、[ロールを昇格] を選択します。
[ロールを昇格] ボタンをクリックします。 [
security_admin
] を選択して、[更新] をクリックします。security_admin
ロールは、ロールの作成とユーザーの管理に役立ちます。security_admin
ロールを選択し、[更新] ボタンをクリックします。
ユーザーのロールと権限を設定する
Gemini Enterprise で ServiceNow データストアを作成するには、ユーザーに適切なロールと権限を付与する必要があります。開始する前に、コネクタがインシデント エンティティへのアクセスを処理する方法を理解しておくことが重要です。インシデントの可視性とアクセス制御をご覧ください。
次のいずれかのオプションを選択して、 Google Cloudでデータストアを設定するために必要なロールと権限をユーザーに付与します。各オプションは、インスタンスに対する必要なアクセス権を提供します。
インシデントの可視性とアクセス制御
セキュリティを強化し、意図しないデータ漏洩を防ぐために、ServiceNow コネクタはインシデント エンティティに制限付きのアクセス制御を使用します。これにより、エンドユーザーは直接関連付けられているインシデントのみを表示できます。
この制限的なアプローチの一環として、コネクタはインシデントの可視性に関する広範なロールベースの権限を考慮しません。itil
や sn_incident_read
などの標準の ServiceNow ロールは、ServiceNow UI でユーザーにすべてのインシデントの可視性を付与する可能性がありますが、Gemini Enterprise で同じレベルのアクセス権が付与されることはありません。
次のいずれかのロールを持つユーザーは、インシデントをグローバルに確認でき、すべてのインシデントを表示できます。
admin
incident_manager
change_manager
それ以外のユーザーは、インシデントを開いた、再開した、解決した、クローズした場合にのみ、インシデントを表示できます。また、次のユーザーもインシデントを表示できます。
- インシデントの割り当てグループのユーザー。
- インシデントに関連付けられている発信者。
- 割り当てた相手。
- ウォッチリストに登録されているユーザー。
- 作業メモにリストされているユーザー。
- 追加の割り当て先にリストされているユーザー。
この動作により、Gemini Enterprise のユーザーが、アクセス権限のないインシデントを検索することを防ぎます。ServiceNow の広範な権限よりも制限が追加されているため、この動作により、ServiceNow でアクセス権があるインシデントでも Gemini Enterprise では見つけられないことがあります。
ACL ルールを含むカスタムロールを作成する(推奨)
最小限の権限セットを持つカスタムロールを作成します。
[すべて] > [ユーザー管理] > [ロール] に移動します。
ロールを選択 [New] をクリックします。
[新規] ボタンをクリックします。 名前を入力して [送信] をクリックします。
名前を選択して送信 [システム セキュリティ] > [アクセス制御(ACL)] に移動します。
アクセス制御(ACL)を選択 [New] をクリックして、新しい ACL ルールを作成します。
[新規] ボタンをクリックします。 必要なすべてのテーブルに対するアクセス権が付与されるまで、次の 2 つの手順を繰り返します。
sys_user_role
を例として使用して、テーブルへのアクセス権が付与される仕組みを確認します。sys_user_role
を選択します。[送信] をクリックして、ロールを選択します。
必須のテーブル
コネクタは、各エンティティを実行するためにこれらのテーブルに対するアクセス権が必要です。
表の名前 | 説明 |
---|---|
インシデント |
検索結果にインシデントを表示します。 |
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 アクセス権が必要です。
アクセス権を付与して確認する手順は次のとおりです。
新しい ACL ルールを作成し、フォームの [名前] フィールドに「
sc_cat_item.*
」と手動で入力して、明示的なアクセス権を付与します。sc_cat_item.*
を入力します。ACL が更新されていることを確認します。
検索バーで
sys_security_acl_role_list.do
に移動します。sys_security_acl_role_list.do
を入力します。[ロール] を検証するロールに設定します。
検証するロールを選択 必要な ACL がロールに割り当てられていることを確認します。
エンティティ管理者を含むカスタムロールを使用する
管理者ロールの使用は、過度に強力な権限の割り当てを避けたいチームや組織には適していない場合があります。このオプションでは、必要なアクセス権を付与する 3 つの特定の権限を持つロールが提供されます。
[すべて] > [システム セキュリティ] > [ユーザーとグループ] > [ロール] に移動します。
ロールを追加する [New] を選択し、名前を入力します。
[新規] ボタンをクリックします。 [送信] をクリックします。
[送信] ボタンをクリックします。 作成したロールをリスト内で探します。
ロール名を使用して検索し、ロールをクリックします。 [ロールを含む] > [編集] に移動します。
[編集] ボタンをクリックします。 新しく作成したロールに次のロールを追加し、[保存] をクリックします。
catalog_admin
knowledge_admin
incident_manager
ロールを追加して [保存] ボタンをクリックします 更新を確認します。
ロールを確認する 次の図は、3 つのロールを含むカスタムロールを示しています。
カスタムロール
管理者ロールを使用する
管理者ロールを使用してデータを取得できます。インスタンスで構成されたデフォルトの管理者ロールを使用するか、次の手順で管理者ロールを持つ新しいユーザーを作成します。
[すべて] > [ユーザー管理] > [ユーザー] に移動します。
ユーザーを選択 名前を指定して新しいユーザーを作成します。
ユーザー名を選択 [Web サービスへのアクセスのみ] を有効にします。[Web service access only] を選択すると、非インタラクティブ ユーザーが作成されます。
インタラクティブ ユーザーと非インタラクティブ ユーザー: インタラクティブ ユーザーは、ユーザー名とパスワードを使用して ServiceNow UI またはサービスポータルにログインできます。また、UI ページ、フォーム、リストを指す URL を使用してインスタンスにアクセスできます。ダイジェスト認証や Security Assertion Markup Language(SAML)などのシングル サインオン方式を使用して接続することもできます。さらに、厳格なセキュリティ設定で許可されている場合は、認証情報を使用して SOAP 接続を承認できます。WSDL、JSON、XML、XSD などの他の API 接続には無制限にアクセスできます。
一方、非インタラクティブ ユーザーが実行できるのは、認証情報を使用して JSON、SOAP、WSDL などの API 接続を承認することのみです。ServiceNow UI にログインすることはできず、API プロトコルを介してインスタンスにアクセスすることのみが可能です。
ユーザーを作成したら、ユーザーリストからユーザーを選択します。
ユーザーを選択 [ロール] > [編集] をクリックします。
ロールを編集する [管理者] を追加します。
[保存] をクリックして、ロールのリストをユーザーに追加します。
ユーザーにロールのリストを追加する [パスワードを設定] をクリックしてパスワードを自動生成し、保存します。
パスワードを設定
ユーザーにロールを付与する
[すべて] > [ユーザー管理] > [ユーザー] に移動します。
ユーザーを選択 新しいユーザーを検索または作成します。
新しいユーザーを検索または作成する ユーザーがいない場合は、[システム セキュリティ] > [ユーザーとグループ] > [ユーザー] に移動します。
ユーザーを選択 [New] をクリックします。
[新規] ボタンをクリックします。 ユーザー テーブルに新しいサービス アカウントを作成します。[Web サービスへのアクセスのみ] をクリックしてください。
[Web サービスへのアクセスのみ] オプションをクリックします。 [ロール] までスクロールします。
[ロール] に移動します。 [編集] をクリックします。
ロールを編集 作成したロールを付与して、ユーザーに割り当てます。前のステップで作成したロールのタイプに基づいて適切なロールを選択し、ユーザーに割り当てます。[保存] をクリックします。
ロールを選択して割り当てる または
ロールを割り当てて保存する ACL を含むカスタムロールを表示します。
ACL を含むカスタムロール ユーザーのユーザー名とパスワードを取得し、[パスワードを設定] をクリックします。
パスワードを設定 パスワードを自動生成して、後で使用できるように保存します。
パスワードを自動生成する
ServiceNow コネクタを作成する
Console
Google Cloud コンソールを使用して ServiceNow から Gemini Enterprise にデータを同期する手順は次のとおりです。
Google Cloud コンソールで、[Gemini Enterprise] ページに移動します。
ナビゲーション メニューで [データストア] をクリックします。
[データストアを作成] をクリックします。
[データソースを選択] ページで、[ServiceNow] までスクロールするか検索して、サードパーティ ソースを接続します。
ServiceNow の認証情報を入力します。
- インスタンス URI
- クライアント ID
- クライアント シークレット
- ユーザー アカウント
- パスワード
ServiceNow の認証情報 データストアの一意の名前を入力し、[作成] をクリックします。
同期するエンティティを選択します。
ナレッジ記事
サービス カタログ
インシデント
添付ファイル
インデックスからエンティティをフィルタで除外したり、インデックスにエンティティが含まれるようにするには、[フィルタ] をクリックします。
エンティティを含めるか除外するフィルタを指定する [保存] をクリックします。
[続行] をクリックします。
[完全同期] の [同期頻度] と、[増分データ同期] の [増分同期頻度] を選択します。詳細については、同期スケジュールをご覧ください。
エンティティ データと ID データの完全同期を個別にスケジュール設定する場合は、[完全同期] のメニューを開き、[カスタム オプション] を選択します。
エンティティの完全同期と ID の完全同期に個別のスケジュールを設定します。 データコネクタのリージョンを選択します。
[作成] をクリックします。Gemini Enterprise によってデータストアが作成され、[データストア] ページにデータストアが表示されます。
取り込みのステータスを確認するには、[データストア] ページに移動し、データストア名をクリックして、[データ] ページで詳細を表示します。 データの同期が開始されると、[コネクタの状態] が [作成中] から [実行中] に変わります。取り込みが完了すると、ステータスが [アクティブ] に変わり、データソースへの接続がセットアップされ、次回のスケジュール設定された同期を待機していることを示します。
取り込みには、データのサイズに応じて、数分から数時間かかることがあります。
リアルタイム同期を有効にする
リアルタイム同期では、ドキュメント エンティティのみが同期され、ID エンティティに関連するデータは同期されません。次の表に、リアルタイム同期でサポートされているドキュメント イベントを示します。
ServiceNow エンティティ | 作成 | 更新 | 削除 | 権限の変更 |
---|---|---|---|---|
添付ファイル | ||||
カタログ | ||||
インシデント | ||||
知識 |
コネクタのリアルタイム同期を有効にする手順は次のとおりです。
Google Cloud コンソールで、[Gemini Enterprise] ページに移動します。
ナビゲーション メニューで [データストア] をクリックします。
リアルタイム同期を有効にする ServiceNow コネクタの名前をクリックします。
コネクタの [データ] ページで、[コネクタの状態] が [アクティブ] に変わるまで待ちます。
[リアルタイム同期] フィールドで、[表示 / 編集] をクリックします。
リアルタイム同期の設定を表示、編集します。 [リアルタイム同期を有効にする] 切り替えボタンをクリックしてオンにします。
[クライアント シークレット] で値を指定します。この値は、ServiceNow Webhook イベントの検証に使用されます。20 文字の文字列を使用することをおすすめします。
リアルタイム同期を有効にして、クライアント シークレットを指定します。 [保存] をクリックします。
[リアルタイム同期] フィールドが [実行中] に変わるまで待ちます。
管理者ロールを持つアカウントを使用して ServiceNow インスタンスに移動します。
[すべて] をクリックします。
[フィルタ] フィールドに「
sys_properties.list
」と入力して送信します。ServiceNow でシステム プロパティを見つけます。 [New] をクリックして、システム プロパティを作成します。
ServiceNow で新しいシステム プロパティを作成します。 新しいシステム プロパティのフィールドに入力します。
[名前] に、わかりやすい名前(例:
webhook_secret
)を入力します。[値] に、Gemini Enterprise コネクタのリアルタイム同期設定の [クライアント シークレット] フィールドで使用した値を入力します。
[送信] をクリックします。
新しい ServiceNow システム プロパティのフィールドに入力します。
ナレッジ エンティティの Webhook を作成する
ServiceNow のナレッジ エンティティの Webhook を作成する手順は次のとおりです。
管理者ロールを持つアカウントを使用して ServiceNow インスタンスに移動し、[すべて] > [システム定義] > [ビジネスルール] をクリックします。
ServiceNow ビジネスルールを表示します。 [New] をクリックして、新しいビジネスルールを作成します。
新しい ServiceNow ビジネスルールを作成します。 Webhook のフィールドに入力します。
[名前] に、わかりやすい名前(例:
Knowledge webhook
)を入力します。[Advanced] を選択します。
[テーブル] で、[Knowledge [kb_knowledge]] を選択します。
ナレッジ エンティティの Webhook のフィールドに入力します。 [実行するタイミング] をクリックします。
[タイミング] で [前] を選択します。
[挿入]、[更新]、[削除] を選択します。
ナレッジ エンティティの Webhook を実行するタイミングを指定します。 [詳細設定] をクリックします。
[スクリプト] フィールドに次のコードを貼り付けます。エンドポイントの値を、Gemini Enterprise コネクタのリアルタイム同期を有効にしたときに提供された Webhook 通知 URL に置き換えます。
(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);
提供されたスクリプトを入力します。 [送信] をクリックします。
新しいビジネスルールを送信します。
カタログ エンティティの Webhook を作成する
ServiceNow のカタログ エンティティの Webhook を作成するには、ナレッジ エンティティの Webhook を作成するの手順に沿って操作します。ただし、次の点が異なります。
新しいビジネスルールを作成するときに、[テーブル] で [Catalog Item [sc_cat_item]] を選択します。
[詳細設定] タブの [スクリプト] に次のコードを貼り付けます。エンドポイントの値を、Gemini Enterprise コネクタのリアルタイム同期を有効にしたときに提供された Webhook 通知 URL に置き換えます。
(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 を作成するの手順に沿って操作します。ただし、次の点が異なります。
新しいビジネスルールを作成するときに、[テーブル] で [Incident [incident]] を選択します。
[詳細設定] タブの [スクリプト] に次のコードを貼り付けます。エンドポイントの値を、Gemini Enterprise コネクタのリアルタイム同期を有効にしたときに提供された Webhook 通知 URL に置き換えます。
(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 を作成するの手順に沿って操作します。ただし、次の点が異なります。
新しいビジネスルールを作成するときに、[テーブル] で [Attachment [sys_attachment]] を選択します。
[詳細設定] タブの [スクリプト] に次のコードを貼り付けます。エンドポイントの値を、Gemini Enterprise コネクタのリアルタイム同期を有効にしたときに提供された Webhook 通知 URL に置き換えます。
(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);
Workforce プールを構成する
Workforce プールを使用すると、 Google Cloud コンソール内で Azure や Okta などの外部 ID プロバイダのユーザーを管理および認証できます。Workforce プールを構成し、ユーザーがシームレスにアクセスできるようにウェブアプリを有効にするには、次の操作を行います。
適切な設定マニュアルに沿って、 Google Cloud で組織レベルの Workforce プールを作成します。
アプリを作成するリージョンの [Gemini Enterprise] > [設定] で、Workforce プールを構成します。
次のステップ
データストアをアプリに接続するには、アプリを作成するの手順に沿ってアプリを作成し、データストアを選択します。
アプリとデータストアが設定された後に検索結果がどのように表示されるかをプレビューするには、検索結果をプレビューするをご覧ください。
データストアのアラートを有効にするには、サードパーティのデータストアのアラートを構成するをご覧ください。