CREATE SECURITY INTEGRATION (外部 API 認証)¶
アカウントで外部 API 認証に新しいセキュリティ統合を作成するか、既存の統合を置き換えます。
他の型のセキュリティ統合(例: 外部 OAuth)の作成については、 CREATE SECURITY INTEGRATION をご参照ください。
- こちらもご参照ください。
ALTER SECURITY INTEGRATION (外部 API 認証)、 DESCRIBE INTEGRATION、 DROP INTEGRATION、 SHOW INTEGRATIONS
構文¶
OAuth: クライアント認証情報¶
CREATE SECURITY INTEGRATION <name>
TYPE = API_AUTHENTICATION
AUTH_TYPE = OAUTH2
ENABLED = { TRUE | FALSE }
[ OAUTH_TOKEN_ENDPOINT = '<string_literal>' ]
[ OAUTH_CLIENT_AUTH_METHOD = CLIENT_SECRET_POST ]
[ OAUTH_CLIENT_ID = '<string_literal>' ]
[ OAUTH_CLIENT_SECRET = '<string_literal>' ]
[ OAUTH_GRANT = 'CLIENT_CREDENTIALS']
[ OAUTH_ACCESS_TOKEN_VALIDITY = <integer> ]
[ OAUTH_ALLOWED_SCOPES = ( '<scope_1>' [ , '<scope_2>' ... ] ) ]
[ COMMENT = '<string_literal>' ]
OAuth: JWT ベアラーフロー¶
CREATE SECURITY INTEGRATION <name>
TYPE = API_AUTHENTICATION
AUTH_TYPE = OAUTH2
ENABLED = { TRUE | FALSE }
[ OAUTH_AUTHORIZATION_ENDPOINT = '<string_literal>' ]
[ OAUTH_TOKEN_ENDPOINT = '<string_literal>' ]
[ OAUTH_CLIENT_AUTH_METHOD = CLIENT_SECRET_POST ]
[ OAUTH_CLIENT_ID = '<string_literal>' ]
[ OAUTH_CLIENT_SECRET = '<string_literal>' ]
[ OAUTH_GRANT = 'JWT_BEARER']
[ OAUTH_ACCESS_TOKEN_VALIDITY = <integer> ]
[ OAUTH_REFRESH_TOKEN_VALIDITY = <integer> ]
[ COMMENT = '<string_literal>' ]
必須パラメーター¶
name
統合の識別子(つまり、名前)を指定します。この値は、アカウント内で一意である必要があります。
また、識別子はアルファベット文字で始まる必要があり、識別子文字列全体が二重引用符で囲まれていない限り、スペースや特殊文字を含めることはできません(例:"私のオブジェクト")。二重引用符で囲まれた識別子も大文字と小文字が区別されます。
詳細については、 識別子の要件 をご参照ください。
TYPE = API_AUTHENTICATION
Snowflake と外部 API 認証で OAuth 2.0を使用する外部サービスとの間でセキュリティインターフェイスを作成していることを指定します。
AUTH_TYPE = OAUTH2
統合が OAuth 2.0を使用して外部サービスを認証することを指定します。
ENABLED = { TRUE | FALSE }
このセキュリティ統合を有効にするか無効にするかを指定します。
TRUE
統合の定義で指定されたパラメーターに基づいて統合の実行を許可します。
FALSE
メンテナンスのために統合を中断します。Snowflakeとサードパーティサービス間の統合はいずれも機能しません。
オプションのパラメーター¶
これは、構成可能なパラメーターの完全なリストであることに注意してください。選択した OAuth フローに基づいて シークレットを作成する ときに構成するパラメーターと一致するように、統合のパラメーターを構成します。
OAUTH_AUTHORIZATION_ENDPOINT = 'string_literal'
外部サービスへの認証のための URL を指定します。たとえば、ServiceNow インスタンスに接続するには、URL を次の形式にする必要があります。
https://<instance_name>.service-now.com/oauth_token
instance_name
は ServiceNow インスタンスの名前です。OAUTH_TOKEN_ENDPOINT = 'string_literal'
クライアントが認証付与トークンまたは更新トークンを提示してアクセストークンを取得する際に使用するトークンエンドポイントを指定します。トークンエンドポイントは、暗黙的な付与タイプを除くすべての認証付与で使用されます(アクセストークンが直接発行されるためです)。
OAUTH_CLIENT_AUTH_METHOD = CLIENT_SECRET_POST
外部サービスへの認証方式として POST を使用することを指定します。
OAUTH_CLIENT_ID = 'string_literal'
外部サービスの OAuth アプリケーションのクライアント ID を指定します。
OAUTH_CLIENT_SECRET = 'string_literal'
前のステップの ServiceNow インスタンスでの OAuth アプリケーションのクライアントシークレットを指定します。コネクタはこれを使用して、ServiceNow インスタンスにアクセストークンをリクエストします。
OAUTH_GRANT = 'string_literal'
OAuth フローのタイプを指定します。次のいずれかを使用します。
'CLIENT_CREDENTIALS'
: 統合がクライアントの認証情報を使用する場合。'AUTHORIZATION_CODE'
: 統合が認証コードを使用する場合。'JWT_BEARER'
: 統合がJWT型ベアラートークン(JSONウェブトークン)を使用する場合。
OAUTH_ACCESS_TOKEN_VALIDITY = integer
OAuth サーバーによって発行された OAuth アクセストークンのデフォルトの有効期間(秒単位)を指定します。
このプロパティに設定された値は、アクセストークンの有効期間が OAuth トークンレスポンスの一部として返されない場合に使用されます。両方の値が使用可能な場合、2つの値のうち小さい方がアクセストークンの更新に使用されます。
OAUTH_REFRESH_TOKEN_VALIDITY = integer
OAuth サーバーから取得した更新トークンの有効性を判断する値を指定します。
OAUTH_ALLOWED_SCOPES = ( 'scope_1' [ , 'scope_2' ... ] )
OAuth クライアント認証情報フロー中に統合に対して USAGE を持つロールによって OAuth からリクエストする際に使用する、各スコープを一重引用符で囲んだスコープのコンマ区切りリストを指定します。
このリストは、セキュリティ統合の
OAUTH_ALLOWED_SCOPES
プロパティで定義されたスコープのサブセットである必要があります。OAUTH_SCOPES
プロパティ値が指定されていない場合、シークレットはセキュリティ統合で指定されているすべてのスコープを継承します。ServiceNow コネクタの場合、有効なスコープ値は
'useraccount'
のみです。デフォルト: 空のリスト(つまり
[]
)。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のメタデータフィールド をご参照ください。
CREATE OR REPLACE <オブジェクト> ステートメントはアトミックです。つまり、オブジェクトが置き換えられると、単一のトランザクションで、古いオブジェクトが削除されて新しいオブジェクトが作成されます。
例¶
servicenow_oauth
という名前のセキュリティ統合を作成して、コード許可フローで OAuth を使用して myinstance
という名前の ServiceNow インスタンスにSnowflakeを接続します。
CREATE SECURITY INTEGRATION servicenow_oauth TYPE = api_authentication AUTH_TYPE = oauth2 OAUTH_CLIENT_AUTH_METHOD = client_secret_post OAUTH_CLIENT_ID = 'sn-oauth-134o9erqfedlc' OAUTH_CLIENT_SECRET = 'eb9vaXsrcEvrFdfcvCaoijhilj4fc' OAUTH_TOKEN_ENDPOINT = 'https://myinstance.service-now.com/oauth_token.do' ENABLED = true;