SQL コマンドを使用したコネクタのインストールおよび構成¶
Snowflake Connector for ServiceNow® V2は、 Snowflakeコネクタ規約 に従うものとします。
このトピックでは、 SQL コマンドを使用してコネクタをインストールおよび構成する方法について説明します。 ServiceNow®インスタンスの準備 で説明されているプロシージャをすでに実行していることを前提としています。
このトピックの内容:
Snowflake Connector for ServiceNow®V2 のインストール¶
次の手順では、コネクタをインストールする方法について説明します。
ACCOUNTADMIN ロールを持つユーザーとして Snowsight にサインインします。
ナビゲーションメニューで Data Products » Marketplace を選択します。
Snowflake Connector for ServiceNow®V2 を検索し、コネクタのタイルを選択します。
Snowflake Connector for ServiceNow®V2 のページで、 Get を選択します。
これにより、インストールプロセスの最初の部分を開始するために使用するダイアログが表示されます。
ダイアログで、次のように構成します。
Application name フィールドに、コネクタインスタンスのデータベースとして使用するデータベースの名前を入力します。このデータベースは自動的に作成されます。
Warehouse used for installation フィールドで、コネクタのインストールに使用するウェアハウスを選択します。
注釈
これは、コネクタが ServiceNow®からのデータを同期するために使用するウェアハウスとは異なります。後のステップで、この目的のために別のウェアハウスを作成します。
Get を選択します。
ダイアログが通知とともに表示されます:
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 を使用するように設定するには、次のステップに従います。
コード付与フローのある OAuth を使用するように ServiceNow®インスタンスを構成します。
ServiceNow®インスタンスが既に OAuth コード付与フローを使用していて、そのインスタンスを Snowflake Connector for ServiceNow®V2 で使用する場合は、クライアント ID、クライアントシークレット、OAuth トークンに対応するエンドポイント URL をメモします。
詳細については、 OAuth トークンを管理する をご参照ください。この情報を書き留めたら、次のステップでセキュリティ統合を作成します。
別の ServiceNow®インスタンスを使用する場合は、インスタンスにアクセスするか、インスタンスを作成し、 OAuth を設定する と クライアントがインスタンスにアクセスできるようにエンドポイントを作成する で示したように、コード付与フローで OAuth を使用するようにインスタンスを構成します。
ServiceNow®にアプリケーションレジストリを作成し、それを使用してコネクタを構成します。
ServiceNow®インスタンスにログインし、 Homepage を選択します。
OAuth を検索し、 Application Registry を選択します。
New を選択してから、 Create an OAuth API endpoint for external clients を選択します。
次の画像に示すように、アプリケーションレジストリの構成ページが表示されます。
ServiceNow で、 Name フィールドに OAuth アプリケーションレジストリの名前を入力します。
必要に応じて、 ServiceNow で、 Refresh Token Lifespan フィールドと Access Token Lifespan フィールドの値を更新します。
Snowflakeは、アクセストークンの有効期間を少なくとも600秒に設定することをお勧めします。
更新トークンの有効期間には、7776000(90日)の値を指定します。
ServiceNow で、 Submit を選択します。
OAuth アプリケーションレジストリがアプリケーションレジストリのリストに表示されます。
ServiceNow で、作成したばかりのアプリケーションレジストリを選択します。
ServiceNow®が Client ID フィールドと Client Secret フィールドの値を生成したことに注意してください。これらの値は、次のセクションで セキュリティ統合を作成する ときに使用します。
OAuth リフレッシュトークンの生成¶
OAuth 更新トークンを生成するには、
Snowflake Connector for ServiceNow®V2 のインストール で説明されているタスクを実行したことを確認してください。
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
条件
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}
必須オブジェクトの作成¶
セキュリティ統合の作成(オプション)¶
セキュリティ統合は、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;
条件:
name
セキュリティ統合の名前を指定します。
client_id
前のセクションで ServiceNow®から取得した Client ID フィールドの値を指定します。
client_secret
前のセクションで ServiceNow®から取得した Client Secret フィールドの値を指定します。
my_instance
ServiceNow®インスタンスの名前を指定します。これは ServiceNow®インスタンスのホスト名の最初の部分です。たとえば、 ServiceNow®インスタンスへの URL が次の場合です。
https://myinstance.service-now.comインスタンスの名前は
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;
シークレットを管理するカスタムロールの作成(オプション)¶
次に、シークレットを管理するためのカスタムロールを作成し(既存のロールを使用しない場合)、シークレットの作成に必要な権限をロールに付与します。
USERADMIN システムロールを使用して CREATE ROLE コマンドを実行し、シークレットを管理するためのカスタムロールを作成します。たとえば、シークレットを管理するためのカスタムロール
secretadmin
を作成するには、次のコマンドを実行します。USE ROLE useradmin; CREATE ROLE secretadmin;
SECURITYADMIN システムロールを使用して GRANT <権限> TO ROLE コマンドを実行し、次の権限をカスタムロールに付与します。
シークレット用に作成したデータベース に対する USAGE
シークレット用に作成したスキーマ に対する USAGE および CREATE SECRET
以前に作成したセキュリティ統合 に対する USAGE
例:
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;
USERADMIN システムロールを使用して GRANT <権限> TO ROLE コマンドを実行し、シークレットを作成するユーザーにカスタムロールを付与します。たとえば、ユーザー
servicenow_secret_owner
にロールを付与するには、次のコマンドを実行します。USE ROLE useradmin; GRANT ROLE secretadmin TO user servicenow_secret_owner;
シークレットの作成¶
次に、コード付与フローで OAuth を使用して、Snowflakeが ServiceNow®インスタンスに対して認証できるようにするシークレットを作成します。
注釈
OAuth の代わりに基本認証を使用する場合は、 以下の注意 を代わりにご参照ください。
シークレットオブジェクトを作成するには、次のパラメーターで CREATE SECRET コマンドを実行して、
TYPE
をOAUTH2
に設定します。
OAUTH_REFRESH_TOKEN
を OAuth リフレッシュトークンの生成 で取得した 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;
既存のシークレットのプロパティを変更するには(例: OAuth リフレッシュトークンを更新する)、 ALTER SECRET コマンドを使用します。
注釈
基本認証(OAuth ではなく)を使用する場合は、 CREATE SECRET コマンドを実行して、
TYPE
をPASSWORD
に設定し、シークレットを作成します。USERNAME
とPASSWORD
を ServiceNow®インスタンスへの認証に使用する予定の ServiceNow®ユーザーのユーザー名とパスワードに設定します。例:USE ROLE secretadmin; USE SCHEMA secretsdb.apiauth; CREATE SECRET servicenow_creds_pw TYPE = PASSWORD USERNAME = 'jsmith1' PASSWORD = 'W3dr@fg*7B1c4j';
このユーザーに対して多要素認証が有効になっている場合は、 ServiceNow®ドキュメントの REST API で説明されているように、パスワードとともに MFA トークンを提供する必要があります。
ウェアハウスの作成¶
Snowflakeは、コネクタ専用の ウェアハウスを作成する ことをお勧めします。専用のウェアハウスにより、コスト管理とリソースの追跡が改善されます。リソースの追跡を容易にするために、必要に応じて専用ウェアハウスに 1 つまたは複数のタグを追加 できます。
コネクタウェアハウスの場合、SnowflakeはLサイズのウェアハウスを使用することをお勧めします。
servicenow_conn_warehouse
という名前のLサイズのウェアハウスを作成するには、次のコマンドを実行します。
USE ROLE accountadmin;
CREATE WAREHOUSE servicenow_conn_warehouse WAREHOUSE_SIZE = LARGE;
注意
ウェアハウスが少なくとも3時間クエリを実行できることを確認してください。コネクタが使用するウェアハウスとアカウントの両方で設定できるパラメーター値に影響されます(アカウントの値が優先されます)。現在の値を確認するには、次を実行します。
SHOW PARAMETERS LIKE 'STATEMENT_TIMEOUT_IN_SECONDS' FOR ACCOUNT;
SHOW PARAMETERS LIKE 'STATEMENT_TIMEOUT_IN_SECONDS' FOR WAREHOUSE <connector_warehouse>;
両方の値が少なくとも 10800
(つまり3時間)であれば、変更は必要ありません。それ以外の場合は、必要に応じて次を実行します。
ALTER ACCOUNT SET STATEMENT_TIMEOUT_IN_SECONDS = 10800;
ALTER WAREHOUSE <connector_warehouse> SET STATEMENT_TIMEOUT_IN_SECONDS = 10800;
適切なタイムアウトが提供されない場合、データインジェスチョンは失敗します。
ServiceNow®データのデータベースおよびスキーマの作成¶
次に、ServiceNow®データのデータベースとスキーマを作成します。 Snowflake Connector for ServiceNow®V2 は、ServiceNow®データをこのデータベースとスキーマにインジェストします。
データベースとスキーマを作成するときは、次の点に注意してください。
スキーマとデータベースの名前は、有効な オブジェクト識別子 である必要があります。
Snowflakeでインジェストされた ServiceNow®データへのアクセスを制御するには、 データへのアクセスを許可するロールにスキーマに対する権限を付与 します。
データベースとスキーマを作成するには、 CREATE DATABASE と CREATE SCHEMA コマンドを実行します。
たとえば、データベース dest_db
と ServiceNow®データのスキーマ dest_schema
を作成するには、次のコマンドを実行します。
USE ROLE accountadmin;
CREATE DATABASE dest_db;
CREATE SCHEMA dest_schema;
注釈
コネクタを再インストールする場合は、コネクタの以前のインストール用に作成したスキーマを再利用できます。再利用できるのは、コネクタの以前のインストールですでにデータがロードされており、引き続き同じテーブルにデータをロードする場合です。
データのロードを続行するため、 コネクタを再インストール する前にスキーマを変更しないでください。コネクタの以前のインストールによって作成されたテーブルの定義を変更しないでください。
コネクタは、定期的にコネクタの構成と状態をスキーマの __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');
条件:
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;
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;
条件:
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
コネクタのログの構成¶
Snowflake Connector for ServiceNow®V2 は、イベントテーブルを使用してコネクタのエラーログを保存します。イベントテーブルを設定するには、 イベントテーブルの設定 ガイドに従います。
重要
ログの共有を有効にすることを強くお勧めします。明らかでないケースのトラブルシューティングの際には、非常に役立ちます。
インストールされたコネクタの設定¶
コネクタを設定するには、次を行います。
Snowsightを使用してコネクタインスタンスのデータベースを作成します。データベースの作成方法の詳細については、 Snowsightによるコネクタのインストールと構成 をご参照ください。
SQL ワークシートに移動します。
ACCOUNTADMIN ロールを持つユーザーとしてログインします。例:
USE ROLE ACCOUNTADMIN;
コネクタに必要なすべての権限を コネクタのインスタンスとして機能するデータベース に付与します。
アカウントに対する EXECUTE TASK
アカウントに対する EXECUTE MANAGED TASK
コネクタ用に作成したウェアハウス に対する USAGE。
ServiceNow®データ用に作成したデータベース に対する USAGE
ServiceNow®データ用に作成したスキーマ に対する USAGE、CREATE TABLE、および CREATE VIEW。
ServiceNow®用に作成した外部アクセス統合 に対する USAGE
シークレット用に作成したデータベース に対する USAGE
シークレット用に作成したスキーマ に対する USAGE
作成したシークレット に対する READ
たとえば、
my_connector_servicenow
という名前のコネクタに次の権限を付与するには、次を行います。アカウントに対する EXECUTE TASK
アカウントに対する EXECUTE MANAGED TASK
ウェアハウス
servicenow_conn_warehouse
に対する USAGEdest_db
データベースに対する USAGEdest_db.dest_schema
スキーマに対する USAGE、 CREATE TABLE、 および CREATE VIEWservicenow_external_access_integration
統合に対する USAGEsecretsdb
データベースに対する USAGEsecretsdb.apiauth
スキーマに対する USAGEsecretsdb.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;
宛先スキーマのテーブルとビューの所有権の譲渡(オプション)
コネクタが再インストールされ、以前の宛先スキーマが再利用される場合、宛先スキーマのすべてのテーブルとビューの所有権をコネクタに譲渡する必要があります。スキーマ内のオブジェクトに対する許可の付与を管理し、インジェストされたテーブルのスキーマが変更されたときにフラット化されたビューを再作成するためには、コネクタに所有者権限が必要です。
所有権を譲渡するには、
SYSTEM$GRANT_OWNERSHIP_TO_APPLICATION
関数を呼び出します。USE ROLE accountadmin; CALL SYSTEM$GRANT_OWNERSHIP_TO_APPLICATION(<connector_app>, true, <destination_database>, <destination_schema>);
SYSTEM$GRANT_OWNERSHIP_TO_APPLICATION
は、Snowflakeが提供するシステム関数で、指定したデータベースやスキーマのテーブルやビューの所有権をアプリケーションに譲渡することができます。譲渡されるのは、通常のテーブルと通常のビューの所有権のみです。たとえば、動的テーブル、外部テーブル、マテリアライズドビューなどの所有権は譲渡されません。この関数の署名は以下のとおりです。
SYSTEM$GRANT_OWNERSHIP_TO_APPLICATION(<to_app>, <should_copy_grants>, <from_database>, <from_schema>)
条件:
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');
必要であれば、
DATA_READER
アプリケーションロールを以前データを所有していたロールに付与し、データを使用する既存のパイプラインの中断を防ぎます。GRANT APPLICATION ROLE <connector_app>.DATA_READER TO ROLE <previous_data_owner_role>;
CONFIGURE_CONNECTOR
プロシージャが実行されるまでは、DATA_READER
アプリケーションロールには宛先スキーマのテーブルとビューに対して権限の付与がないことに注意してください。USE DATABASE コマンドを実行して、コネクタにデータベースを使用します。例:
USE DATABASE my_connector_servicenow;
CALL コマンドを使用して
CONFIGURE_CONNECTOR
という名前のストアドプロシージャを呼び出し、コネクタを構成します。CALL CONFIGURE_CONNECTOR({ 'warehouse': '<warehouse_name>', 'destination_database': '<dest_db>', 'destination_schema': '<dest_schema>' })
条件:
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' });
コネクタが正常に開始された場合、このストアドプロシージャは次のレスポンスを返します。
{ "responseCode": "OK", "message": "Connector successfully configured.", }
注釈
コネクタが開始されると、コネクタに渡されたウェアハウス、宛先データベース、および宛先スキーマの名前を変更することはできません。コネクタはオブジェクトを名前で参照します。そのため、オブジェクトの名前をドロップまたは変更すると、コネクタは破損し動作しなくなります。
ウェアハウスの名前を変更する代わりに、 UPDATE_WAREHOUSE ストアドプロシージャを使用して、コネクタが使用するウェアハウスを変更します。
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>' })
条件:
servicenow_base_url
コネクタが使用する ServiceNow®インスタンスの URL を指定します。URL は次の形式にする必要があります。
https://<servicenow_instance_name>.service-now.com
secret_name
ServiceNow®への認証用の認証情報を含むシークレットオブジェクト(以前に作成したシークレット) の完全修飾名を指定します。
シークレットオブジェクトの完全修飾名を次の形式で指定する必要があります。
<database_name>.<schema_name>.<secret_name>
データベース、スキーマ、シークレットの名前は、有効な オブジェクト識別子 である必要があります。
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' });
コネクタが正常に構成された場合、このストアドプロシージャは次のレスポンスを返します。
{ "responseCode": "OK", "message": "Test request to ServiceNow® succeeded.", }
注釈
一度コネクタを構成すると、渡されたシークレットと外部アクセス統合の名前を変更することはできません。コネクタはオブジェクトを名前で参照します。そのため、オブジェクトの名前をドロップまたは変更すると、コネクタは破損し動作しなくなります。
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>' })
条件:
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", }
コネクタ構成の確定中に、コネクタは以前にエクスポートされたコネクタの状態が宛先スキーマに存在するかどうかを確認しようとします。
__CONNECTOR_STATE_EXPORT
テーブルが存在し、コネクタにアクセス可能な場合、コネクタは状態のインポートを試みます。インポートが正常に終了すると、エクスポートテーブルは削除されます。インポート中にエラーが発生した場合、エラーを修正した後にFINALIZE_CONNECTOR_CONFIGURATION
プロシージャを再度実行できます。状態をインポートしたくない場合、またはインポートエラーを修正したくない場合は、コネクタからテーブルの所有権を譲渡し、テーブルを削除します。
新しく作成されたデータベースはコネクタのインスタンスであり、次が含まれています。
コネクタの構成に使用するストアドプロシージャ。詳細については、 SQL ステートメントを使用したデータインジェスチョンの設定 をご参照ください。
コネクタのログに記録されたメッセージと統計を含むビュー。詳細については、 コネクタのモニターについて をご参照ください。
コネクタアプリケーションの役割¶
ネイティブアプリケーションとして、 Snowflake Connector for ServiceNow®V2 は アプリケーションの役割 を定義します。 コネクタのロールベースアクセス制御 でご確認いただけます。
次のステップ¶
コネクタをインストールして構成したら、 ServiceNow®データのデータインジェスチョンの設定 で説明されているステップを実行します。