CREATE EXTERNAL ACCESS INTEGRATION¶
外部アクセス統合 を作成し、 UDF またはプロシージャハンドラーから外部ネットワークロケーションにアクセスできるようにします。
- こちらもご参照ください。
ALTER EXTERNAL ACCESS INTEGRATION、 DROP INTEGRATION、 SHOW INTEGRATIONS、 DESCRIBE INTEGRATION
構文¶
CREATE [ OR REPLACE ] EXTERNAL ACCESS INTEGRATION <name>
ALLOWED_NETWORK_RULES = ( <rule_name_1> [, <rule_name_2>, ... ] )
[ ALLOWED_API_AUTHENTICATION_INTEGRATIONS = ( <integration_name_1> [, <integration_name_2>, ... ] ) ]
[ ALLOWED_AUTHENTICATION_SECRETS = ( <secret_name_1> [, <secret_name_2>, ... ] ) ]
ENABLED = { TRUE | FALSE }
[ COMMENT = '<string_literal>' ]
必須パラメーター¶
name
外部アクセス統合の識別子。
識別子の値はアルファベットで始まる必要があり、識別子文字列全体が二重引用符で囲まれていない限り、スペースや特殊文字を含めることはできません(例:
"My object"
)。二重引用符で囲まれた識別子は、大文字と小文字が区別されます。詳細については、 識別子の要件 をご参照ください。
ALLOWED_NETWORK_RULES = (rule_name [ , rule_name ... ])
許可されたネットワークルールを指定します。指定できるのはエグレスルールのみです。
ネットワークルールに関する参照情報については、 CREATE NETWORK RULE をご参照ください。
ENABLED = { TRUE | FALSE }
この統合を有効にするか無効にするかを指定します。統合が無効になっている場合、それに依存するハンドラーコードは外部ネットワークロケーションに到達できなくなります。
値では大文字と小文字が区別されません。
デフォルトは
TRUE
です。
オプションのパラメーター¶
ALLOWED_API_AUTHENTICATION_INTEGRATIONS = ( integration_name_1 [, integration_name_2, ... ] )
OAuth 認証サーバが UDF またはプロシージャで使用するシークレットを発行したセキュリティ統合を指定します。セキュリティ統合は、外部 API 統合に使用される型にする必要があります。
セキュリティ統合に関する参照情報については、 CREATE SECURITY INTEGRATION (外部 API 認証) をご参照ください。
ALLOWED_AUTHENTICATION_SECRETS = (secret_name [ , secret_name ... ])
この統合を参照する際に UDF またはプロシージャーが使用できるシークレットを指定します。
シークレットに関する参照情報については、 CREATE SECRET をご参照ください。
COMMENT = 'string_literal'
外部アクセス統合のコメントを指定します。
デフォルト: 値なし
アクセス制御の要件¶
この SQL コマンドの実行に使用される ロール には、少なくとも次の 権限 が必要です。
権限 |
オブジェクト |
メモ |
---|---|---|
CREATE INTEGRATION |
アカウント |
Only the ACCOUNTADMIN role has this privilege by default. The privilege can be granted to additional roles as needed. |
指定された権限のセットを使用してカスタムロールを作成する手順については、 カスタムロールの作成 をご参照ください。
セキュリティ保護可能なオブジェクト に対して SQL アクションを実行するためのロールと権限付与に関する一般的な情報については、 アクセス制御の概要 をご参照ください。
使用上の注意¶
メタデータについて:
注意
Snowflakeサービスを使用する場合、お客様は、個人データ(ユーザーオブジェクト向け以外)、機密データ、輸出管理データ、またはその他の規制されたデータがメタデータとして入力されていないことを確認する必要があります。詳細については、 Snowflakeのメタデータフィールド をご参照ください。
例¶
Google翻訳 API へのアクセスを提供する外部アクセス統合を作成します。
より包括的な例については、 外部アクセス統合の作成と使用 をご参照ください。
認証情報を表すシークレットを作成します。
シークレットを作成するには、現在のスキーマに対する CREATE SECRET 権限を持つロールが割り当てられている必要があります。このコマンドでサポートされている他の種類のシークレットについては、 CREATE SECRET をご参照ください。この例では、
google_translate_oauth
はセキュリティ統合を意味します。詳細については、 CREATE SECURITY INTEGRATION (外部 API 認証) をご参照ください。CREATE OR REPLACE SECRET oauth_token TYPE = OAUTH2 API_AUTHENTICATION = google_translate_oauth OAUTH_REFRESH_TOKEN = 'my-refresh-token';
UDF の開発者が使えるように、シークレットに対する READ 権限を
developer
ロールに付与します。開発者がシークレットを使用する際に必要となるロールを作成します。
USE ROLE USERADMIN; CREATE OR REPLACE ROLE developer;
developer
ロールに READ 権限を付与します。USE ROLE SECURITYADMIN; GRANT READ ON SECRET oauth_token TO ROLE developer;
外部ネットワークの場所を表すネットワークルールを作成します。 CREATE NETWORK RULE で説明されている権限を持つロールを使用します。
USE ROLE SYSADMIN; CREATE OR REPLACE NETWORK RULE google_apis_network_rule MODE = EGRESS TYPE = HOST_PORT VALUE_LIST = ('translation.googleapis.com');
シークレットとネットワークルールを使用して、外部アクセス統合を作成します。
USE ROLE ACCOUNTADMIN; CREATE OR REPLACE EXTERNAL ACCESS INTEGRATION google_apis_access_integration ALLOWED_NETWORK_RULES = (google_apis_network_rule) ALLOWED_AUTHENTICATION_SECRETS = (oauth_token) ENABLED = true;
UDF の開発者が使えるように、統合に対する USAGE 権限を
developer
ロールに付与します。GRANT USAGE ON INTEGRATION google_apis_access_integration TO ROLE developer;