ServiceNow インスタンスの準備

ServiceNow 用Snowflakeコネクタをインストールする前に、 ServiceNow インスタンスを設定する必要があります。

ServiceNow インスタンスを設定するには、次のステップを完了します。

  1. ServiceNow インスタンスが公開されていることを確認してください。コネクタは、 VPN の背後に隠されているインスタンスでは機能しません。

  2. Snowflakeにインジェストする予定のデータを含む ServiceNow テーブルを特定します。

  3. コネクタの ServiceNow ユーザーを特定または作成します。

    ServiceNow インスタンスに接続するには、コネクタは ServiceNow ユーザーとしてインスタンスを認証する必要があります。次の要件を満たす ServiceNow ユーザーを選択します。

    • ユーザー名にコロン(:)を含めることはできません。

    • ユーザーは、インジェストする予定の ServiceNow テーブル内にあるすべての記録への読み取りアクセス権を持っている必要があります。アクセス制御リスト(ACLs)が、これらのテーブルの記録をこのユーザーから隠さないようにする必要があります。

    • スキーマ検出を有効にするには、ユーザーに、 sys_db_object (フィールド namesuper_classsys_id)、 sys_glide_object (フィールド namescalar_typesys_id)、および sys_dictionary (フィールド elementinternal_typenamesys_id)テーブルにあるすべての行に対する読み取りアクセス権が必要です。

    • コネクタが適切なインジェスチョン戦略を使用するために、ユーザーには、 sys_table_rotation テーブル(name および sys_id フィールド)にあるすべての行に対する読み取りアクセス権が必要です。

    • sys_db_objectsys_glide_objectsys_dictionarysys_table_rotation、およびjournalのテーブルにある sys_updated_on フィールドへのアクセス権が必要です。そうでない場合は、費用対効果の低い切り捨てとロードのインジェスチョンモードを使用してテーブルがロードされます。

      注釈

      Snowsightで ServiceNow に対する OAuth 認証コードを使用して接続を設定できるのは、 インタラクティブユーザー のみです。 Web service access only の設定がユーザーに対して無効になっている場合、 ServiceNow ユーザーはインタラクティブです。

      SQL コマンドで接続を構成する場合にのみ、非インタラクティブユーザーは OAuth 認証を使用できます。この場合、Snowsightを使用して ServiceNow にログインしたり、 OAuth リフレッシュトークンを取得したりすることはできません。

  4. sys_updated_on 列を持つ ServiceNow テーブルをインジェストして同期する場合は、その列にインデックスを設定します。インデックスの設定については、 ServiceNow ドキュメントの テーブルインデックスを作成する をご参照ください。

    ユーザーインターフェイスを使用してインデックスを作成した後、インデックスが構築されるまでに時間がかかる場合があります。インデックス作成プロセスはバックグラウンドタスクとして実行されます。

    インスタンスに大型のテーブルがある場合は、 ServiceNow カスタマーサポートに連絡して、大型のテーブルをインデックス化するための最良の方法について質問することをSnowflakeはお勧めします。

  5. (オプション) OAuth 認証メソッドを使用する予定で、 読み取り専用ロール が ServiceNow ユーザーに割り当てられている場合は、 glide.security.snc_read_only_role.tables.exempt_create システムプロパティの値リストに oauth_credential テーブルがあることを確認してください。

    sys_properties テーブルの glide.security.snc_read_only_role.tables.exempt_create プロパティを作成または編集します。このプロパティの編集の詳細については、 ServiceNow ナレッジベース をご参照ください。

    新しいシステムプロパティを追加する方法については、 ServiceNow ドキュメントの システムプロパティを追加する をご参照ください。

  6. (オプション)コア機能に必須でない一部のコネクタプロシージャは、 ServiceNow エンドポイント <service_now_instance>/< table_name>.do?SCHEMA を使用してテーブルスキーマを取得します。このエンドポイントには admin ロールが必要です。このロールの詳細については、 ServiceNow ドキュメントの 基本システムのロール をご参照ください。このロールを持たないユーザーでコネクタを構成すると、このエンドポイントに基づくプロシージャの実行が妨げられます。影響されるプロシージャには、この要件に関する適切なメモがあります。

  7. (オプション)削除された記録の反映を有効にするには、削除された記録に関する情報のソースとして sys_audit_delete テーブルまたはカスタムジャーナルテーブルを使用します。

    注釈

    コネクタがすべての仕訳帳テーブル記録にアクセスできる必要があり、そうでない場合はインストールが失敗する可能性があることに注意してください。そうしないと、他のテーブルの記録削除が正しく行われない可能性があります。

    仕訳帳テーブルの行が ACLs で非表示になっている場合、コネクタの動作は予測できません。インストールに成功しても、後のプロセスで削除が正しく同期されない場合があります。

    • sys_audit_delete を使用するには、

      1. no_audit_delete 辞書属性false に設定します。

      2. コネクタの ServiceNow ユーザーが sys_audit_delete テーブルと、このテーブルの documentkeytablenamesys_id、および sys_created_on フィールドにアクセスできることを確認してください。

    • カスタムジャーナルテーブルを使用するには、

      1. documentkey および tablename という名前の文字列列を持つ snowflake_connector_journal という名前のジャーナルテーブルを作成します。

      2. コネクタの ServiceNow ユーザーが snowflake_connector_journal テーブルと、 u_documentkeyu_tablenamesys_idsys_created_on フィールドにアクセスできることを確認してください。

      3. 次のコードを使用して、 RecordChange という名前のスクリプトインクルードを作成します。

        var RecordChange = Class.create();
        
        RecordChange.prototype= {
          initialize :function() {},
          captureChange :function(tableName, docID) {
            var changeCapture = new GlideRecord('u_snowflake_connector_journal');
            changeCapture.initialize();
            changeCapture.setValue('u_documentkey', docID);
            changeCapture.setValue('u_tablename', tableName);
            changeCapture.insert();
          },
          type :'RecordChange'
        };
        
        Copy
      4. 記録の削除をキャプチャするビジネスルールを定義します。

        (function executeRule(current, previous /*null when async*/) {
            new RecordChange().captureChange(current.getTableName(), current.getUniqueValue());
        })(current, previous);
        
        Copy
      5. 削除された記録を反映するテーブルごとに、記録が削除された後にこのビジネスルールが実行されるように構成します。

注釈

コネクタは、監査されている場合にのみ、削除された記録を同期できます。 DBDelete.setWorkflow() を呼び出さない削除操作は、Snowflakeでインジェストされません。

DBDelete.setWorkflow() の使用方法の詳細については、 ServiceNow の製品ドキュメントを参照してください。

また、削除された記録については、次の点に注意してください。

  • no_audit_delete=true ディクショナリ属性を持つテーブルでは、記録の削除は追跡されません。

  • sys プレフィックスを持つテーブルからの記録の削除は、デフォルトでは追跡されません。

  • コネクタは、参照フィールドが監査対象のテーブルにある場合、記録のカスケード削除で削除された記録のみをインジェストすることができます。記録のカスケード削除の詳細については、 ServiceNow 製品ドキュメントをご参照ください。

これらの手順を完了したら、 Snowsightを使用したコネクタのインストールと構成 または SQL コマンドを使用したコネクタのインストールと構成 のステップに従います。