SQL コマンドを使用したコネクタのインストールおよび構成

Snowflake Connector for ServiceNow® V2は、 Snowflakeコネクタ規約 に従うものとします。

このトピックでは、 SQL コマンドを使用してコネクタをインストールおよび構成する方法について説明します。 ServiceNow®インスタンスの準備 で説明されているプロシージャをすでに実行していることを前提としています。

このトピックの内容:

Snowflake Connector for ServiceNow®V2 のインストール

次の手順では、コネクタをインストールする方法について説明します。

  1. ACCOUNTADMIN ロールを持つユーザーとして Snowsight にサインインします。

  2. ナビゲーションメニューで Data Products » Marketplace を選択します。

  3. Snowflake Connector for ServiceNow®V2 を検索し、コネクタのタイルを選択します。

  4. Snowflake Connector for ServiceNow®V2 のページで、 Get を選択します。

    これにより、インストールプロセスの最初の部分を開始するために使用するダイアログが表示されます。

    ダイアログで、次のように構成します。

    1. Application name フィールドに、コネクタインスタンスのデータベースとして使用するデータベースの名前を入力します。このデータベースは自動的に作成されます。

    2. Warehouse used for installation フィールドで、コネクタのインストールに使用するウェアハウスを選択します。

      注釈

      これは、コネクタが ServiceNow®からのデータを同期するために使用するウェアハウスとは異なります。後のステップで、この目的のために別のウェアハウスを作成します。

    3. Get を選択します。

  5. ダイアログが通知とともに表示されます: Installing App After installation, an email will be sent to <user_email>。SQL を使って構成を続けるには、ダイアログを閉じて Worksheets に進みます。

OAuth の設定

注釈

OAuth の代わりに基本認証を使用する予定がある場合は、このセクションをスキップして シークレットオブジェクトの作成 に進みます。

ServiceNow®インスタンスへの認証に OAuth を使用するように、 Snowflake Connector for ServiceNow®V2 を構成できます。

  • ServiceNow では、 コード付与フロー で OAuth の使用をサポートするようにインスタンスを設定する必要があります。

  • Snowflake Connector for ServiceNow®V2 内:

    • コネクタは、 TYPE = API_AUTHENTICATION とのセキュリティ統合を使用して、Snowflakeを ServiceNow®インスタンスに接続します。

      セキュリティ統合は、ServiceNow®インスタンスを認証するための ServiceNow® OAuth クライアント ID、クライアントシークレット、およびエンドポイント URL を指定します。

    • コネクタは、Snowflakeシークレットオブジェクトを使用して、認証情報などの機密情報を管理します。

      認証に OAuth を使用する場合、コネクタは ServiceNow® OAuth リフレッシュトークン、リフレッシュトークンの有効期限、およびセキュリティ統合の名前をSnowflakeシークレットオブジェクトに格納します。

Snowflake Connector for ServiceNow®V2 が OAuth を使用するように設定するには、次のステップに従います。

  1. コード付与フローのある OAuth を使用するように ServiceNow®インスタンスを構成します。

    • ServiceNow®インスタンスが既に OAuth コード付与フローを使用していて、そのインスタンスを Snowflake Connector for ServiceNow®V2 で使用する場合は、クライアント ID、クライアントシークレット、OAuth トークンに対応するエンドポイント URL をメモします。

      詳細については、 OAuth トークンを管理する をご参照ください。この情報を書き留めたら、次のステップでセキュリティ統合を作成します。

    • 別の ServiceNow®インスタンスを使用する場合は、インスタンスにアクセスするか、インスタンスを作成し、 OAuth を設定するクライアントがインスタンスにアクセスできるようにエンドポイントを作成する で示したように、コード付与フローで OAuth を使用するようにインスタンスを構成します。

  2. ServiceNow®にアプリケーションレジストリを作成し、それを使用してコネクタを構成します。

    1. ServiceNow®インスタンスにログインし、 Homepage を選択します。

    2. OAuth を検索し、 Application Registry を選択します。

    3. New を選択してから、 Create an OAuth API endpoint for external clients を選択します。

      次の画像に示すように、アプリケーションレジストリの構成ページが表示されます。

      ServiceNow®でアプリケーションレジストリのページを表示します。
    4. ServiceNow で、 Name フィールドに OAuth アプリケーションレジストリの名前を入力します。

    5. 必要に応じて、 ServiceNow で、 Refresh Token Lifespan フィールドと Access Token Lifespan フィールドの値を更新します。

      • Snowflakeは、アクセストークンの有効期間を少なくとも600秒に設定することをお勧めします。

      • 更新トークンの有効期間には、7776000(90日)の値を指定します。

    6. ServiceNow で、 Submit を選択します。

      OAuth アプリケーションレジストリがアプリケーションレジストリのリストに表示されます。

    7. ServiceNow で、作成したばかりのアプリケーションレジストリを選択します。

      ServiceNow®が Client ID フィールドと Client Secret フィールドの値を生成したことに注意してください。これらの値は、次のセクションで セキュリティ統合を作成する ときに使用します。

OAuth リフレッシュトークンの生成

OAuth 更新トークンを生成するには、

  1. Snowflake Connector for ServiceNow®V2 のインストール で説明されているタスクを実行したことを確認してください。

  2. ServiceNow®ドキュメントの REST OAuth 例 で説明されているように、ServiceNow®インスタンスの /oauth_token.do エンドポイントに HTTP リクエストを送信します。

    たとえば、curlを使用して HTTP リクエストを送信する場合は、

    curl -d "grant_type=password" --data-urlencode "client_id=<client_id>" --data-urlencode "client_secret=<client_secret>" --data-urlencode "username=<username>" --data-urlencode "password=<password>" -X POST https://<instance_name>.service-now.com/oauth_token.do
    
    Copy

    条件

    instance_name

    ServiceNow®インスタンスの名前を指定します。

    client_id および client_secret

    ServiceNow®エンドポイントの設定時に取得した値を指定します。

    username および password

    ServiceNow®インスタンスの認証情報を指定します。

    注釈

    上記の例では、curlで data-urlencode コマンドラインフラグを使用して、ServiceNow®に送信される HTTP リクエスト内のクライアントシークレット、ユーザー名、およびパスワードを URL エンコード します。

    別のツールを使用して HTTP リクエストを送信している場合は、これらの値をリクエストで URL エンコードしていることを確認してください。

    HTTP 応答の本文には、 JSON オブジェクトが含まれています。このオブジェクトの refresh_token フィールドから更新トークンを取得します。

    {"access_token":"abcd1234","refresh_token":"cdef567","scope":"useraccount","token_type":"Bearer","expires_in":1799}
    
    Copy

必須オブジェクトの作成

セキュリティ統合の作成(オプション)

セキュリティ統合は、Snowflakeとサードパーティ OAuth 2.0サービス間のインターフェイスを提供するSnowflakeオブジェクトです。

次の例に示すように、 CREATE SECURITY INTEGRATION コマンドを使用してセキュリティ統合を作成します。

CREATE SECURITY INTEGRATION <name>
 TYPE = API_AUTHENTICATION
 AUTH_TYPE = OAUTH2
 OAUTH_CLIENT_AUTH_METHOD = CLIENT_SECRET_POST
 OAUTH_CLIENT_ID = '<client_id>'
 OAUTH_CLIENT_SECRET = '<client_secret>'
 OAUTH_TOKEN_ENDPOINT = 'https://<my_instance>.service-now.com/oauth_token.do'
 ENABLED = TRUE;
Copy

条件:

name

セキュリティ統合の名前を指定します。

client_id

前のセクションで ServiceNow®から取得した Client ID フィールドの値を指定します。

client_secret

前のセクションで ServiceNow®から取得した Client Secret フィールドの値を指定します。

my_instance

ServiceNow®インスタンスの名前を指定します。これは ServiceNow®インスタンスのホスト名の最初の部分です。たとえば、 ServiceNow®インスタンスへの URL が次の場合です。

https://myinstance.service-now.com
Copy

インスタンスの名前は myinstance になります。

シークレットオブジェクトの作成

Snowflake Connector for ServiceNow®V2 が認証に使用するSnowflakeシークレットオブジェクトを作成します。

Snowflakeは、シークレットオブジェクトを専用のデータベースとスキーマに格納することをお勧めします。任意のロールを選択してシークレットを管理できること、また任意のデータベースとスキーマを選択してシークレットを格納できることに注意してください。

シークレットを管理するカスタムロールを作成するには、 CREATE ROLE コマンドを使用します。ロールに付与できる権限については、 アクセス制御権限 をご参照ください。

次のセクションでは、別のデータベースとスキーマに格納され、カスタムロールによって管理されるシークレットオブジェクトを作成する方法について説明します。

シークレットオブジェクトのスキーマの作成

まず、 CREATE DATABASE コマンドと CREATE SCHEMA コマンドを実行して、シークレットオブジェクトを格納するデータベースとスキーマを作成します。スキーマとデータベースの名前は、有効な オブジェクト識別子 である必要があります。

たとえば、シークレットオブジェクトのデータベース secretsdb とスキーマ apiauth を作成するには、次のコマンドを実行します。

USE ROLE accountadmin;
CREATE DATABASE secretsdb;
CREATE SCHEMA apiauth;
Copy

シークレットを管理するカスタムロールの作成(オプション)

次に、シークレットを管理するためのカスタムロールを作成し(既存のロールを使用しない場合)、シークレットの作成に必要な権限をロールに付与します。

  1. USERADMIN システムロールを使用して CREATE ROLE コマンドを実行し、シークレットを管理するためのカスタムロールを作成します。たとえば、シークレットを管理するためのカスタムロール secretadmin を作成するには、次のコマンドを実行します。

    USE ROLE useradmin;
    CREATE ROLE secretadmin;
    
    Copy
  2. SECURITYADMIN システムロールを使用して GRANT <権限> TO ROLE コマンドを実行し、次の権限をカスタムロールに付与します。

    例:

    USE ROLE securityadmin;
    GRANT USAGE ON DATABASE secretsdb TO ROLE secretadmin;
    GRANT USAGE ON SCHEMA secretsdb.apiauth TO role secretadmin;
    GRANT CREATE SECRET ON SCHEMA secretsdb.apiauth TO role secretadmin;
    GRANT USAGE ON INTEGRATION servicenow_oauth TO role secretadmin;
    
    Copy
  3. USERADMIN システムロールを使用して GRANT <権限> TO ROLE コマンドを実行し、シークレットを作成するユーザーにカスタムロールを付与します。たとえば、ユーザー servicenow_secret_owner にロールを付与するには、次のコマンドを実行します。

    USE ROLE useradmin;
    GRANT ROLE secretadmin TO user servicenow_secret_owner;
    
    Copy

シークレットの作成

次に、コード付与フローで OAuth を使用して、Snowflakeが ServiceNow®インスタンスに対して認証できるようにするシークレットを作成します。

注釈

OAuth の代わりに基本認証を使用する場合は、 以下の注意 を代わりにご参照ください。

シークレットオブジェクトを作成するには、次のパラメーターで CREATE SECRET コマンドを実行して、

  • TYPEOAUTH2 に設定します。

  • OAUTH_REFRESH_TOKENOAuth リフレッシュトークンの生成 で取得した OAuth 更新トークンに設定します。

  • OAUTH_REFRESH_TOKEN_EXPIRY_TIME を更新トークンの有効期限のタイムスタンプ(UTC タイムゾーン)に設定します。これは、ServiceNow®からトークンが発行された日付までのトークンの有効期間を追加することで計算できます。デフォルトでは、トークンは100日で期限切れになります。

  • API_AUTHENTICATION必須オブジェクトの作成 で作成したセキュリティ統合の名前に設定します。

たとえば、 servicenow_oauth という名前のセキュリティ統合を使用する service_now_creds_oauth_code という名前のシークレットを作成するには、次のコマンドを実行します。

USE ROLE secretadmin;
USE SCHEMA secretsdb.apiauth;
CREATE SECRET servicenow_creds_oauth_code
  TYPE = OAUTH2
  OAUTH_REFRESH_TOKEN = '34n;vods4nQsdg09wee4qnfvadH'
  OAUTH_REFRESH_TOKEN_EXPIRY_TIME = '2022-01-06 20:00:00'
  API_AUTHENTICATION = servicenow_oauth;
Copy

既存のシークレットのプロパティを変更するには(例: OAuth リフレッシュトークンを更新する)、 ALTER SECRET コマンドを使用します。

注釈

基本認証(OAuth ではなく)を使用する場合は、 CREATE SECRET コマンドを実行して、 TYPEPASSWORD に設定し、シークレットを作成します。 USERNAMEPASSWORD を ServiceNow®インスタンスへの認証に使用する予定の ServiceNow®ユーザーのユーザー名とパスワードに設定します。例:

USE ROLE secretadmin;
USE SCHEMA secretsdb.apiauth;
CREATE SECRET servicenow_creds_pw
  TYPE = PASSWORD
  USERNAME = 'jsmith1'
  PASSWORD = 'W3dr@fg*7B1c4j';
Copy

このユーザーに対して多要素認証が有効になっている場合は、 ServiceNow®ドキュメントの REST API で説明されているように、パスワードとともに MFA トークンを提供する必要があります。

ウェアハウスの作成

Snowflakeは、コネクタ専用の ウェアハウスを作成する ことをお勧めします。専用のウェアハウスにより、コスト管理とリソースの追跡が改善されます。リソースの追跡を容易にするために、必要に応じて専用ウェアハウスに 1 つまたは複数のタグを追加 できます。

コネクタウェアハウスの場合、SnowflakeはLサイズのウェアハウスを使用することをお勧めします。

servicenow_conn_warehouse という名前のLサイズのウェアハウスを作成するには、次のコマンドを実行します。

USE ROLE accountadmin;
CREATE WAREHOUSE servicenow_conn_warehouse WAREHOUSE_SIZE = LARGE;
Copy

注意

ウェアハウスが少なくとも3時間クエリを実行できることを確認してください。コネクタが使用するウェアハウスとアカウントの両方で設定できるパラメーター値に影響されます(アカウントの値が優先されます)。現在の値を確認するには、次を実行します。

SHOW PARAMETERS LIKE 'STATEMENT_TIMEOUT_IN_SECONDS' FOR ACCOUNT;
SHOW PARAMETERS LIKE 'STATEMENT_TIMEOUT_IN_SECONDS' FOR WAREHOUSE <connector_warehouse>;
Copy

両方の値が少なくとも 10800 (つまり3時間)であれば、変更は必要ありません。それ以外の場合は、必要に応じて次を実行します。

ALTER ACCOUNT SET STATEMENT_TIMEOUT_IN_SECONDS = 10800;
ALTER WAREHOUSE <connector_warehouse> SET STATEMENT_TIMEOUT_IN_SECONDS = 10800;
Copy

適切なタイムアウトが提供されない場合、データインジェスチョンは失敗します。

ServiceNow®データのデータベースおよびスキーマの作成

次に、ServiceNow®データのデータベースとスキーマを作成します。 Snowflake Connector for ServiceNow®V2 は、ServiceNow®データをこのデータベースとスキーマにインジェストします。

データベースとスキーマを作成するときは、次の点に注意してください。

データベースとスキーマを作成するには、 CREATE DATABASECREATE SCHEMA コマンドを実行します。

たとえば、データベース dest_db と ServiceNow®データのスキーマ dest_schema を作成するには、次のコマンドを実行します。

USE ROLE accountadmin;
CREATE DATABASE dest_db;
CREATE SCHEMA dest_schema;
Copy

注釈

コネクタを再インストールする場合は、コネクタの以前のインストール用に作成したスキーマを再利用できます。再利用できるのは、コネクタの以前のインストールですでにデータがロードされており、引き続き同じテーブルにデータをロードする場合です。

データのロードを続行するため、 コネクタを再インストール する前にスキーマを変更しないでください。コネクタの以前のインストールによって作成されたテーブルの定義を変更しないでください。

コネクタは、定期的にコネクタの構成と状態をスキーマの __CONNECTOR_STATE_EXPORT テーブルにエクスポートし、後で再インストール時にコネクタの構成を回復するために使用できます。あるいは、エクスポートテーブルが存在しないか、手動で削除された場合でも、 ENABLE_TABLES ストアドプロシージャ を後で呼び出して、以前にインジェストされたテーブルを再度有効にすることができます。ストアドプロシージャは、必要なオブジェクトが既に存在することを確認し、再作成を試みません。そのため、既にインジェストされたデータを失うリスクはありません。

ServiceNow®インスタンスと通信するためのネットワークルールの作成

次に、アカウントから ServiceNow®インスタンスへのアウトバウンドトラフィックを許可するには、ネットワークルールを作成してください。次の構文で CREATE NETWORK RULE コマンドを実行します。

CREATE NETWORK RULE <name>
  MODE = 'EGRESS'
  TYPE = 'HOST_PORT'
  VALUE_LIST = ('<servicenow_instance_name>.service-now.com');
Copy

条件:

name

ネットワークルールの名前を指定します。名前は、有効な オブジェクト識別子 である必要があります。

VALUE_LIST = ('servicenow_instance_name.service-now.com')

リクエストの送信先として許可される ServiceNow®インスタンスのリストを指定します。

注釈

カスタムロールでシークレットを作成した場合は、ネットワークルールを作成する前に、そのシークレットへの USAGE 権限を ACCOUNTADMIN に付与する必要があります。

USE ROLE secretadmin;
GRANT USAGE ON SECRET secretsdb.apiauth.<secret_name> TO ROLE ACCOUNTADMIN;
Copy

ServiceNow®インスタンスと通信するための外部アクセス統合の作成

次に、ServiceNow®インスタンスと通信するための外部アクセス統合を作成します。次の構文で CREATE EXTERNAL ACCESS INTEGRATION コマンドを実行します。

CREATE EXTERNAL ACCESS INTEGRATION <integration_name>
  ALLOWED_NETWORK_RULES = (<network_rule_name>)
  ALLOWED_AUTHENTICATION_SECRETS = (<secret_name>)
  ENABLED = TRUE;
Copy

条件:

integration_name

外部アクセス統合の名前を指定します。名前は、有効な オブジェクト識別子 である必要があります。名前は、使用するアカウントの API 統合間において一意である必要があります。

ALLOWED_NETWORK_RULES = (network_rule_name)

ServiceNow®インスタンスへのアクセスを許可するネットワーク規則を指定します。これにより、この統合の使用は、ネットワークルールで指定された URLs を持つインスタンスに制限されます。

これを ServiceNow®インスタンスと通信するためのネットワークルールの作成 で作成したネットワークルールの名前に設定します。

ALLOWED_AUTHENTICATION_SECRETS = (secret_name)

API 統合のスコープで使用できるシークレットの名前のリストを指定します。

これを シークレットオブジェクトの作成 で作成したシークレットオブジェクトの名前に設定します。

ENABLED = TRUE

この API 統合を有効にするか無効にするかを指定します。API 統合が無効になっている場合、その統合に依存する外部関数はすべて機能しません。

TRUE

統合の定義で指定されたパラメーターに基づいて統合の実行を許可します。

FALSE

メンテナンスのために統合を中断します。Snowflakeとサードパーティサービス間の統合はいずれも機能しません。

たとえば、 servicenow_external_access_integration という外部アクセス統合を作成するには、以下のコマンドを実行します。

USE ROLE accountadmin;
CREATE EXTERNAL ACCESS INTEGRATION servicenow_external_access_integration
  ALLOWED_NETWORK_RULES = (secretsdb.apiauth.servicenow_network_rule)
  ALLOWED_AUTHENTICATION_SECRETS = (secretsdb.apiauth.servicenow_creds_pw)
  ENABLED = TRUE
Copy

コネクタのログの構成

Snowflake Connector for ServiceNow®V2 は、イベントテーブルを使用してコネクタのエラーログを保存します。イベントテーブルを設定するには、 イベントテーブルの設定 ガイドに従います。

重要

ログの共有を有効にすることを強くお勧めします。明らかでないケースのトラブルシューティングの際には、非常に役立ちます。

インストールされたコネクタの設定

コネクタを設定するには、次を行います。

  1. Snowsightを使用してコネクタインスタンスのデータベースを作成します。データベースの作成方法の詳細については、 Snowsightによるコネクタのインストールと構成 をご参照ください。

  2. SQL ワークシートに移動します。

  3. ACCOUNTADMIN ロールを持つユーザーとしてログインします。例:

    USE ROLE ACCOUNTADMIN;
    
    Copy
  4. コネクタに必要なすべての権限を コネクタのインスタンスとして機能するデータベース に付与します。

    たとえば、 my_connector_servicenow という名前のコネクタに次の権限を付与するには、次を行います。

    • アカウントに対する EXECUTE TASK

    • アカウントに対する EXECUTE MANAGED TASK

    • ウェアハウス servicenow_conn_warehouse に対する USAGE

    • dest_db データベースに対する USAGE

    • dest_db.dest_schema スキーマに対する USAGE、 CREATE TABLE、 および CREATE VIEW

    • servicenow_external_access_integration 統合に対する USAGE

    • secretsdb データベースに対する USAGE

    • secretsdb.apiauth スキーマに対する USAGE

    • secretsdb.apiauth.servicenow_creds_oauth_code secret シークレットに対する READ

    次のコマンドを実行します。

    USE ROLE accountadmin;
    
    GRANT EXECUTE TASK ON ACCOUNT TO APPLICATION my_connector_servicenow;
    GRANT EXECUTE MANAGED TASK ON ACCOUNT TO APPLICATION my_connector_servicenow;
    
    GRANT USAGE ON WAREHOUSE servicenow_conn_warehouse TO APPLICATION my_connector_servicenow;
    
    GRANT USAGE ON DATABASE dest_db TO APPLICATION my_connector_servicenow;
    GRANT USAGE ON SCHEMA dest_db.dest_schema TO APPLICATION my_connector_servicenow;
    GRANT CREATE TABLE ON SCHEMA dest_db.dest_schema TO APPLICATION my_connector_servicenow;
    GRANT CREATE VIEW ON SCHEMA dest_db.dest_schema TO APPLICATION my_connector_servicenow;
    
    GRANT USAGE ON INTEGRATION servicenow_external_access_integration TO APPLICATION my_connector_servicenow;
    
    GRANT USAGE ON DATABASE secretsdb TO APPLICATION my_connector_servicenow;
    GRANT USAGE ON SCHEMA secretsdb.apiauth TO APPLICATION my_connector_servicenow;
    GRANT READ ON SECRET secretsdb.apiauth.servicenow_creds_oauth_code TO APPLICATION my_connector_servicenow;
    
    Copy
  5. 宛先スキーマのテーブルとビューの所有権の譲渡(オプション)

    コネクタが再インストールされ、以前の宛先スキーマが再利用される場合、宛先スキーマのすべてのテーブルとビューの所有権をコネクタに譲渡する必要があります。スキーマ内のオブジェクトに対する許可の付与を管理し、インジェストされたテーブルのスキーマが変更されたときにフラット化されたビューを再作成するためには、コネクタに所有者権限が必要です。

    所有権を譲渡するには、 SYSTEM$GRANT_OWNERSHIP_TO_APPLICATION 関数を呼び出します。

    USE ROLE accountadmin;
    CALL SYSTEM$GRANT_OWNERSHIP_TO_APPLICATION(<connector_app>, true, <destination_database>, <destination_schema>);
    
    Copy

    SYSTEM$GRANT_OWNERSHIP_TO_APPLICATION は、Snowflakeが提供するシステム関数で、指定したデータベースやスキーマのテーブルやビューの所有権をアプリケーションに譲渡することができます。譲渡されるのは、通常のテーブルと通常のビューの所有権のみです。たとえば、動的テーブル、外部テーブル、マテリアライズドビューなどの所有権は譲渡されません。

    この関数の署名は以下のとおりです。

    SYSTEM$GRANT_OWNERSHIP_TO_APPLICATION(<to_app>, <should_copy_grants>, <from_database>, <from_schema>)
    
    Copy

    条件:

    to_app

    オブジェクトの所有権を譲渡するアプリケーションの名前を指定します。

    should_copy_grants

    TRUE の場合は既存の権限許可をコピーし、そうでない場合は取り消します。権限許可のコピーには、呼び出し側に MANAGE GRANTS の権限が必要です。

    from_database

    所有者が変更されるべきオブジェクトを含むデータベースの名前。

    from_schema

    (オプション)所有者を変更すべきオブジェクトを含むスキーマの名前。スキーマが指定されていない場合、提供されたデータベース内のすべてのスキーマのテーブルとビューの所有権が譲渡されます。管理されたスキーマのオブジェクトは、所有権の譲渡時に省かれます。

    この関数を実行するには、呼び出し元が以下のいずれかの条件を満たしている必要があります。

    • MANAGE GRANTS (例: ACCOUNTADMIN または SECURITYADMIN ロール)の権限がある、または

    • アプリケーションインスタンスを所有するロールと、所有権を譲渡するすべてのオブジェクトを所有するロールが含まれている。所有権がないオブジェクトは、関数によって省かれます。

    たとえば、所有権を譲渡するコネクタは次を満たしている必要があります:

    • my_connector_servicenow という名前のアプリケーションとしてインストールされた

    • Snowflake内にある ServiceNow®データの dest_db.dest_schema という名前のスキーマを使用している

    次のコマンドを実行します。

    USE ROLE accountadmin;
    CALL SYSTEM$GRANT_OWNERSHIP_TO_APPLICATION('my_connector_servicenow', true, 'dest_db', 'dest_schema');
    
    Copy

    必要であれば、 DATA_READER アプリケーションロールを以前データを所有していたロールに付与し、データを使用する既存のパイプラインの中断を防ぎます。

    GRANT APPLICATION ROLE <connector_app>.DATA_READER TO ROLE <previous_data_owner_role>;
    
    Copy

    CONFIGURE_CONNECTOR プロシージャが実行されるまでは、 DATA_READER アプリケーションロールには宛先スキーマのテーブルとビューに対して権限の付与がないことに注意してください。

  6. USE DATABASE コマンドを実行して、コネクタにデータベースを使用します。例:

    USE DATABASE my_connector_servicenow;
    
    Copy
  7. CALL コマンドを使用して CONFIGURE_CONNECTOR という名前のストアドプロシージャを呼び出し、コネクタを構成します。

    CALL CONFIGURE_CONNECTOR({
      'warehouse': '<warehouse_name>',
      'destination_database': '<dest_db>',
      'destination_schema': '<dest_schema>'
    })
    
    Copy

    条件:

    warehouse_name

    コネクタのウェアハウスの名前を指定します。

    ウェアハウスの名前は、有効な オブジェクト識別子 である必要があります。

    dest_db

    Snowflake の ServiceNow®データ用のデータベース(先に作成したデータベース) の名前を指定します。

    データベースの名前は、有効な オブジェクト識別子 である必要があります。

    dest_schema

    Snowflake内にある ServiceNow®データのスキーマ(以前に作成したスキーマ) の完全修飾名を指定します。

    スキーマの名前は、有効な オブジェクト識別子 である必要があります。

    たとえば、構成するコネクタは次を満たしている必要があります。

    • ウェアハウス servicenow_conn_warehouse を使用している。

    • Snowflake内にある ServiceNow®データの dest_db.dest_schema という名前のスキーマを使用している

    次のコマンドを実行します。

    CALL CONFIGURE_CONNECTOR({
      'warehouse': 'servicenow_conn_warehouse',
      'destination_database': 'dest_db',
      'destination_schema': 'dest_schema'
    });
    
    Copy

    コネクタが正常に開始された場合、このストアドプロシージャは次のレスポンスを返します。

    {
      "responseCode": "OK",
      "message": "Connector successfully configured.",
    }
    
    Copy

    注釈

    コネクタが開始されると、コネクタに渡されたウェアハウス、宛先データベース、および宛先スキーマの名前を変更することはできません。コネクタはオブジェクトを名前で参照します。そのため、オブジェクトの名前をドロップまたは変更すると、コネクタは破損し動作しなくなります。

    ウェアハウスの名前を変更する代わりに、 UPDATE_WAREHOUSE ストアドプロシージャを使用して、コネクタが使用するウェアハウスを変更します。

  8. CALL コマンドを使用して SET_CONNECTION_CONFIGURATION という名前のストアドプロシージャを呼び出し、ServiceNow®インスタンスへの接続を構成します。

    CALL SET_CONNECTION_CONFIGURATION({
      'service_now_url': '<servicenow_base_url>',
      'secret': '<secret_name>',
      'external_access_integration': '<external_access_integration_name>'
    })
    
    Copy

    条件:

    servicenow_base_url

    コネクタが使用する ServiceNow®インスタンスの URL を指定します。URL は次の形式にする必要があります。

    https://<servicenow_instance_name>.service-now.com
    
    Copy
    secret_name

    ServiceNow®への認証用の認証情報を含むシークレットオブジェクト(以前に作成したシークレット) の完全修飾名を指定します。

    シークレットオブジェクトの完全修飾名を次の形式で指定する必要があります。

    <database_name>.<schema_name>.<secret_name>
    
    Copy

    データベース、スキーマ、シークレットの名前は、有効な オブジェクト識別子 である必要があります。

    external_access_integration_name

    ServiceNow®の外部アクセス統合(先に作成した外部アクセス統合) の名前を指定します。

    統合の名前は、有効な オブジェクト識別子 である必要があります。

    たとえば、次の ServiceNow®インスタンスへの接続を構成するには、次を満たしている必要があります。

    • URL https://myinstance.service-now.com がある。

    • secretsdb.apiauth.servicenow_creds_oauth_code に格納されているシークレットを使用する。

    • servicenow_external_access_integration という外部アクセス統合を使用している。

    次のコマンドを実行します。

    CALL SET_CONNECTION_CONFIGURATION({
      'service_now_url': 'https://myinstance.service-now.com',
      'secret': 'SECRETSDB.APIAUTH.SERVICENOW_CREDS_OAUTH_CODE',
      'external_access_integration': 'SERVICENOW_API_INTEGRATION'
    });
    
    Copy

    コネクタが正常に構成された場合、このストアドプロシージャは次のレスポンスを返します。

    {
      "responseCode": "OK",
      "message": "Test request to ServiceNow® succeeded.",
    }
    
    Copy

    注釈

    一度コネクタを構成すると、渡されたシークレットと外部アクセス統合の名前を変更することはできません。コネクタはオブジェクトを名前で参照します。そのため、オブジェクトの名前をドロップまたは変更すると、コネクタは破損し動作しなくなります。

  9. FINALIZE_CONNECTOR_CONFIGURATION というストアドプロシージャを呼び出す CALL コマンドを使用して、コネクタの構成を確定します。

    CALL FINALIZE_CONNECTOR_CONFIGURATION({
      'journal_table': '<name_of_journal_table>',
      'table_name': '<name_of_audited_table>',
      'sys_id': '<sys_id_of_audited_entry>'
    })
    
    Copy

    条件:

    name_of_journal_table

    削除された記録に関する情報を含むテーブルの名前を指定します。詳細については、 ServiceNow®インスタンスの準備 をご参照ください

    削除された記録に関する情報は、削除された記録を反映するように設定したテーブルでのみ利用できることに注意してください。

    削除された記録が反映されないようにするには、この引数に null を指定します。

    name_of_audited_table

    (オプション)ジャーナルテーブルに存在し、コネクタがアクセスできる必要がある監査済みテーブル名を指定します。ジャーナルテーブルへのアクセスの検証中に、コネクタはこのテーブルに関連する監査エントリを検索します。ServiceNow®へのクエリは成功したけれども、結果が得られず、プロシージャが失敗する場合にこのオプションを提供します。コネクタの ServiceNow®ユーザーが、指定されたテーブルのすべてのエントリにアクセスできることを確認します。

    このオプションは sys_id パラメーターとは併用できません。

    sys_id_of_audited_entry

    (オプション)ジャーナルテーブルに存在し、コネクタがアクセスできる必要がある一部の監査済みテーブルのエントリの sys_id を指定します。ジャーナルテーブルへのアクセスの検証中に、コネクタはこの sys_id に関連する監査エントリを検索します。ServiceNow®へのクエリは成功したけれども、結果が得られず、プロシージャが失敗する場合にこのオプションを提供します。コネクタの ServiceNow®ユーザーが指定されたエントリにアクセスできることを確認します。

    このオプションは table_name パラメーターとは併用できません。

    コネクタが正常に開始された場合、このストアドプロシージャは次のレスポンスを返します。

    {
        "responseCode": "OK",
    }
    
    Copy

    コネクタ構成の確定中に、コネクタは以前にエクスポートされたコネクタの状態が宛先スキーマに存在するかどうかを確認しようとします。 __CONNECTOR_STATE_EXPORT テーブルが存在し、コネクタにアクセス可能な場合、コネクタは状態のインポートを試みます。インポートが正常に終了すると、エクスポートテーブルは削除されます。インポート中にエラーが発生した場合、エラーを修正した後に FINALIZE_CONNECTOR_CONFIGURATION プロシージャを再度実行できます。状態をインポートしたくない場合、またはインポートエラーを修正したくない場合は、コネクタからテーブルの所有権を譲渡し、テーブルを削除します。

新しく作成されたデータベースはコネクタのインスタンスであり、次が含まれています。

コネクタアプリケーションの役割

ネイティブアプリケーションとして、 Snowflake Connector for ServiceNow®V2 は アプリケーションの役割 を定義します。 コネクタのロールベースアクセス制御 でご確認いただけます。

次のステップ

コネクタをインストールして構成したら、 ServiceNow®データのデータインジェスチョンの設定 で説明されているステップを実行します。