Snowflake OAuth の概要¶
Snowflake OAuth は、Snowflakeの組み込み OAuth サービスを使用して、 OAuth ベースの認証を提供します。
このトピックでは、Snowflake OAuth と、Snowflake を OAuth リソースおよび認証サーバーとして使用してSnowflakeデータに安全にアクセスする方法について説明します。
Snowflake OAuth は、Snowflakeの組み込み OAuth サービスを使用し、次のアプリケーションをサポートします。
1回限りのリフレッシュトークン¶
You can use single-use refresh tokens to mitigate theft or reuse of refresh tokens. For more information, see Snowflake OAuth セキュリティ統合の1回使用の更新トークン
Local applications¶
Snowflakeは、ローカルアプリケーション(つまりデスクトップアプリケーション)設定してSnowflake OAuth を認証に使用するための簡素な方法を提供します。アプリケーションは、単一の接続オプションを設定することで認証できます。追加のセットアップは必要ありません。詳細については、 ローカルアプリケーション用のSnowflake OAuth の使用 をご参照ください。
パートナーアプリケーション¶
サポートを構成するには、 パートナーアプリケーション用Snowflake OAuth の構成 をご参照ください。
パブリックインターネットを経由せずに OAuth を使用する方法については、 パートナーアプリケーション をご参照ください。
カスタムクライアント¶
Snowflakeは、組織が構成したカスタムクライアントをサポートしています。サポートを構成するには、 カスタムクライアント用のSnowflake OAuth の構成 をご参照ください。
Snowflake OAuthのネットワークトラフィックの制限¶
ネットワークポリシー をSnowflake OAuthセキュリティ統合を関連付け、クライアントが認証サーバーとしてのSnowflakeにトークンをリクエストする場合に、ネットワークトラフィックを制限することができます。このネットワークポリシーは、クライアントがリソースサーバーとしてSnowflakeをクエリするときも、ネットワークトラフィックを管理します。
To associate a network policy with the Snowflake OAuth security integration, set the NETWORK_POLICY parameter when creating or updating the integration. For example:
CREATE SECURITY INTEGRATION td_oauth_int2
TYPE = oauth
ENABLED = true
OAUTH_CLIENT = tableau_desktop
OAUTH_REFRESH_TOKEN_VALIDITY = 36000
BLOCKED_ROLES_LIST = ('SYSADMIN');
NETWORK_POLICY = 'allow_private_ip_only';
Snowflake OAuthセキュリティ統合に関連するネットワークポリシーは、ユーザーと認証サーバーとしてのSnowflake間のネットワークトラフィックには影響しません。ユーザーがブラウザーを使用して認証すると、ネットワークトラフィックはユーザーに関連付けられたネットワークポリシーによって制限されます。
次の図は、クライアントとユーザーからのネットワークトラフィックを管理するネットワークポリシーを示しています。
ユーザー管理に関連するネットワークポリシー。ユーザーレベルのネットワークポリシーが存在しない場合は、アカウントレベルのポリシーが優先されます。
セキュリティ統合に関連するネットワークポリシーが管理します。統合レベルのネットワークポリシーが存在しない場合は、アカウントレベルのポリシーが優先されます。
エラーコード¶
Snowflake OAuth に関連するエラーコードの説明については、以下の表をご参照ください。
エラーコード |
エラー |
説明 |
|---|---|---|
390302 |
OAUTH_CONSENT_INVALID |
特定のユーザーに対する同意の生成または検証に関する問題。 |
390303 |
OAUTH_ACCESS_TOKEN_INVALID |
Snowflakeセッションを作成しようとしたときに使用されたアクセストークンが期限切れまたは無効です。 |
390304 |
OAUTH_AUTHORIZE_INVALID_RESPONSE_TYPE |
無効な |
390305 |
OAUTH_AUTHORIZE_INVALID_STATE_LENGTH |
認証エンドポイントにパラメーターとして提供されたステータスパラメーターが2048文字を超えています。 |
390306 |
OAUTH_AUTHORIZE_INVALID_CLIENT_ID |
指定されたクライアントIDに関連付けられた統合は存在しません。 |
390307 |
OAUTH_AUTHORIZE_INVALID_REDIRECT_URI |
認証エンドポイントへのパラメーターとして指定された |
390308 |
OAUTH_AUTHORIZE_INVALID_SCOPE |
リクエストされた範囲が有効なスコープではないか、リクエストされた範囲をユーザーに完全に付与できません。 |
390309 |
OAUTH_USERNAMES_MISMATCH |
認証しようとしたユーザーは、アクセストークンに関連付けられているユーザーとは異なります。 |
390311 |
OAUTH_AUTHORIZE_INVALID_CODE_CHALLENGE_PARAMS |
コードチャレンジまたはコードチャレンジ方法のいずれかが見つからないか、無効であるか、サポートされていません。 |
さらに、 RFC から次のエラーが取得され、トークンのリクエストまたは交換が失敗したときに生成された JSON BLOBに返されます。
エラー |
説明 |
|---|---|
invalid_client |
クライアントが不明である、クライアントのシークレットが一致しないなど、クライアント認証に関連する障害がありました。 |
invalid_grant |
提供された認可付与またはリフレッシュトークンが無効であるか、期限が切れているか、取り消されているか、認可リクエストで使用されたリダイレクト URI と一致しないか、別のクライアントにパブリッシュされました。 |
unsupported_grant_type |
現在、Snowflakeがサポートしていない付与タイプが提供されています(現時点でサポートされている付与タイプは「refresh_token」と「authorization_code」のみ)。 |
invalid_request |
リクエストの形式が正しくないか、処理できませんでした。 |
