パートナーアプリケーション用Snowflake OAuth の構成¶
このトピックでは、サポートされるSnowflakeパートナーアプリケーション用にSnowflakeへのSnowflake OAuth アクセスを構成する方法について説明します。このプロセスでは、統合を作成する必要があります。これは、Snowflakeとサードパーティのアプリケーションまたはサービスの間のインターフェイスを定義するファーストクラスのSnowflakeオブジェクトです。
重要
サードパーティアプリケーションを使用してSnowflakeに接続する場合、アプリケーションで使用される統合フローが内部セキュリティ要件を満たしていることを確認するようにお勧めします。この機能で使用するエンドツーエンドフローの詳細については、パートナーに直接お問い合わせください。
注釈
セカンダリロールへのセッション中のロール切り替えは、Snowflake OAuth ではサポートされていません。
OAuth ワークフローでこの動作が必要な場合は、代わりに外部 OAuth を使用してください。
詳細については、 外部 OAuth でのセカンダリロールの使用 をご参照ください。
現在、Snowflake OAuth は次のアプリケーションをサポートしています。
クライアント |
必要なクライアントバージョン |
クライアントタイプ |
---|---|---|
2019.1またはそれ以上 |
パブリック |
|
6.20またはそれ以上 |
||
Alationのドキュメント を参照 |
||
Collibraのドキュメント を参照 |
このトピックの内容:
Snowflake OAuth 統合を構成する¶
CREATE SECURITY INTEGRATION コマンドを使用して統合を作成します。統合は、SnowflakeとSnowflake OAuth をサポートするクライアントなどのサードパーティサービス間のインターフェイスを提供する、Snowflakeオブジェクトです。
注釈
この SQL コマンドを実行できるのは、アカウント管理者(つまり、 ACCOUNTADMIN システムロールを持つユーザー)またはグローバル CREATE INTEGRATION 権限を持つロールのみです。
CREATE [ OR REPLACE ] SECURITY INTEGRATION [ IF NOT EXISTS ]
<name>
TYPE = OAUTH
ENABLED = { TRUE | FALSE }
OAUTH_CLIENT = <partner_application>
oauthClientParams
[ COMMENT = '<string_literal>' ]
条件:
oauthClientParams
oauthClientParams ::= [ OAUTH_ISSUE_REFRESH_TOKENS = TRUE | FALSE ] [ OAUTH_REFRESH_TOKEN_VALIDITY = <integer> ] [ BLOCKED_ROLES_LIST = ('<role_name>', '<role_name>') ]
統合の使用から特定のロールをブロックする¶
オプションの BLOCKED_ROLES_LIST パラメーターを使用すると、統合での使用をユーザーが明示的に同意 できない Snowflakeロールをリストできます。
デフォルトでは、 ACCOUNTADMIN、 SECURITYADMIN、 ORGADMIN のロールはこのリストに含まれており、削除できません。ユーザーがこれらのロールでSnowflake OAuth を使用できるようにするビジネス上のニーズがあり、セキュリティチームがそれを許可している場合は、 Snowflakeサポート に連絡し、アカウントに対してこれらのロールを許可するようにリクエストしてください。
ログイン頻度の制御¶
ユーザーが正常に認証されると、パートナーアプリケーションはパブリッシュされた更新トークンを使用して、有効期限が短いアクセストークンをリクエストし、更新トークンの有効期限が切れるまで、ログインプロセスを繰り返すように求めることはありません。オプションの OAUTH_REFRESH_TOKEN_VALIDITY パラメーターは、更新トークンが有効な時間の長さ(秒単位)を指定します。この設定を使用すると、更新トークンを定期的に期限切れにして、ユーザーにログインプロセスの繰り返しを強制できます。
OAUTH_REFRESH_TOKEN_VALIDITY パラメーターでサポートされる最小値、最大値、およびデフォルト値は次のとおりです。
アプリケーション |
最小 |
最大 |
デフォルト |
---|---|---|---|
Tableau Desktop |
|
|
|
Tableau ServerまたはTableau Online |
|
|
|
ビジネスで最小値を下げるか、最大値を上げる必要がある場合は、 Snowflakeサポート に連絡して、アカウントの変更をリクエストしてください。
パートナーアプリケーション用Snowflake OAuth でのクライアントリダイレクトの使用¶
Snowflakeは、サポートされているSnowflakeクライアントでのクライアントリダイレクトおよび Snowflake OAuth の使用を含め、パートナーアプリケーション向けSnowflake OAuth でのクライアントリダイレクトの使用をサポートしています。
詳細については、 クライアント接続のリダイレクト をご参照ください。
ネットワークポリシーの管理¶
Snowflakeは、Snowflake OAuth のネットワークポリシーをサポートしています。詳細については、 ネットワークポリシー をご参照ください。
例¶
Tableau Desktop
次の例では、デフォルト設定でSnowflake OAuth 統合を作成します。
CREATE SECURITY INTEGRATION td_oauth_int1 TYPE = OAUTH ENABLED = TRUE OAUTH_CLIENT = TABLEAU_DESKTOP;DESCRIBE INTEGRATION を使用して統合設定を表示します。
DESC SECURITY INTEGRATION td_oauth_int1;次の例では、10時間(36000秒)後に期限切れになる更新トークンを使用してSnowflake OAuth 統合を作成します。統合により、ユーザーは SYSADMIN をアクティブロールとしてセッションを開始できなくなります。
CREATE SECURITY INTEGRATION td_oauth_int2 TYPE = OAUTH ENABLED = TRUE OAUTH_REFRESH_TOKEN_VALIDITY = 36000 BLOCKED_ROLES_LIST = ('SYSADMIN') OAUTH_CLIENT = TABLEAU_DESKTOP;
Tableau ServerまたはTableau Online
次の例では、デフォルト設定でSnowflake OAuth 統合を作成します。
CREATE SECURITY INTEGRATION ts_oauth_int1 TYPE = OAUTH ENABLED = TRUE OAUTH_CLIENT = TABLEAU_SERVER;DESCRIBE INTEGRATION を使用して統合設定を表示します。
DESC SECURITY INTEGRATION ts_oauth_int1;次の例では、1日(86400秒)後に期限切れになる更新トークンを使用してSnowflake OAuth 統合を作成します。統合により、ユーザーは SYSADMIN をアクティブロールとしてセッションを開始できなくなります。
CREATE SECURITY INTEGRATION ts_oauth_int2 TYPE = OAUTH ENABLED = TRUE OAUTH_CLIENT = TABLEAU_SERVER OAUTH_REFRESH_TOKEN_VALIDITY = 86400 BLOCKED_ROLES_LIST = ('SYSADMIN');
パートナーアプリケーションからのSnowflakeへのログイン¶
Tableau¶
Tableauが提供する 手順 に従い、OAuth を使用してSnowflakeに接続します。
Looker¶
Lookerが提供する 手順 に従って、Snoflake OAuth を使用してSnowflakeに接続します。
Alation¶
Alation Community にアクセスし、Alationが提供する手順に従って、Snowflake OAuth を使用してSnowflakeに接続します。
ThoughtSpot¶
ThoughtSpot ドキュメント にアクセスし、手順に従ってSnowflakeへの接続を作成します。これには、 Snowflake OAuth を構成するためのステップが含まれています。
Collibra¶
Collibraドキュメント にアクセスし、Collibraの手順に従って、Snowflake OAuth を使用してSnowflakeに接続します。
ユーザー同意の管理¶
このセクションでは、委任された認証、つまりSnowflake統合に関連付けられた1つ以上のクライアントに与えられるユーザーの同意を管理する方法について説明します。
Snowflake OAuth の同意を表示する¶
SHOW DELEGATED AUTHORIZATIONS を使用して、アクセス権限があるアクティブな委任された認証を一覧表示します。
SHOW DELEGATED AUTHORIZATIONS;
+-------------------------------+-----------+-----------+-------------------+--------------------+
| created_on | user_name | role_name | integration_name | integration_status |
|-------------------------------+-----------+-----------+-------------------+--------------------|
| 2018-11-27 07:43:10.914 -0800 | JSMITH | PUBLIC | MY_OAUTH_INT | ENABLED |
+-------------------------------+-----------+-----------+-------------------+--------------------+
指定したユーザーのアクティブな委任された認証を一覧表示します。ユーザーは、委任された独自の認証をリストできます。それ以外の場合、このコマンドバリアントにはユーザーのOWNERSHIP 権限が必要です。
SHOW DELEGATED AUTHORIZATIONS
BY USER <username>;
指定された統合のアクティブな委任された認証をリストします。このコマンドバリアントには、統合に対する OWNERSHIP 権限(つまり、ACCOUNTADMIN ロール)が必要です。
SHOW DELEGATED AUTHORIZATIONS
TO SECURITY INTEGRATION <integration_name>;
同意の取り消し¶
ユーザーは、指定された統合から同意を取り消すことができます。これには、統合に関連付けられたアクセストークンを無効にする効果があります。
特定の統合に対するユーザーの同意を取り消すには、 ALTER USER ... REMOVE DELEGATED AUTHORIZATIONS コマンドを実行します。
注釈
この SQL コマンドを実行できるのは、セキュリティ管理者(つまり、 SECURITYADMIN ロールを持つユーザー)以上のみです。
ALTER USER <username> REMOVE DELEGATED AUTHORIZATIONS
FROM SECURITY INTEGRATION <integration_name>
条件:
username
同意を取り消すユーザーを指定します。
integration_name
特定のクライアントのアクセストークンに関連付けられた統合を指定します。
特定のロールに関連付けられたユーザーの同意を取り消すには、ステートメントに OF ROLE role_name
パラメーターを含めます。
ALTER USER <username> REMOVE DELEGATED AUTHORIZATION
OF ROLE <role_name>
FROM SECURITY INTEGRATION <integration_name>
条件:
role_name
アクセストークンに関連付けられたロールを指定します。
ロールに関連付けられているアクセストークンは取り消されます。
エラーコード¶
OAuth に関連付けられたエラーコードのリスト、および認証フロー、トークンのリクエストまたは交換中、または OAuth フロー完了後のSnowflakeセッション作成時に JSON BLOBで返されるエラーについては、 エラーコード をご参照ください。