接続の作成の前提条件
Snowflakeアダプタとの接続を作成するには、次の前提条件を満たす必要があります:
パラメータ値の把握
-
インスタンスURLを確認します。
-
倉庫名を確認します。
-
データベース名がわかっていること。
-
スキーマ名を確認します。
-
統合のクライアントIDおよびクライアント・シークレットを確認します。 クライアント・シークレットは、SYSTEM$SHOW_OAUTH_CLIENT_SECRETS関数を使用して取得されます。
-
統合ユーザー(カスタム・ロール)に、ウェアハウス、データベースおよびスキーマに対するすべての権限があることを確認します。
- 倉庫名
- データベース名
- スキーマ名
- クライアントIDおよびクライアント・シークレット
- リフレッシュ・トークン
ノート:
次のコマンド例は、入力内容を把握するために提供されています。- Snowflake管理アカウントにログインします。
- 次のコマンドを使用してウェアハウスを作成します。 たとえば:
「倉庫の作成」を参照してください。create or replace warehouse ORACLE_WH; - 次のコマンドを使用してデータベースを作成します。 たとえば:
「データベースの作成」を参照してください。create or replace database snowflake_db_oracle; - スキーマの作成 「スキーマの作成」を参照してください。 ステップ2および3で説明したコマンドを使用した場合は、デフォルトで次のスキーマが表示されます。
use schema Public; - 現行/指定したスキーマに新しい表を作成します。 「表の作成」を参照してください。
- 次のコマンドを使用してユーザーを作成します。 たとえば:
create user oracle_user password='01March#2022' default_role = SYSADMIN「ユーザーの作成」を参照してください。
- Snowflakeの次のコマンドを使用して、新しいSnowflake OAuthセキュリティ統合を作成します。 たとえば:
create or replace security integration ORACLE_OAUTH type=oauth enabled=true oauth_client=CUSTOM oauth_client_type='CONFIDENTIAL' oauth_redirect_uri='https://my-development-instance.integration.us-region-1.domain.com/icsapis/agent/oauth/callbackâ oauth_issue_refresh_tokens=true oauth_refresh_token_validity=86400;「セキュリティ統合の作成(Snowflake Oauth)」を参照してください。
ノート:
OAuthリフレッシュ・トークン値では、最大値を7776000 (90日)に設定できます。このステップでは、SnowflakeにアクセスするためのクライアントID、クライアント・シークレットおよびアクセス・トークン(およびオプションでリフレッシュ・トークン)を生成します。
- セキュリティ統合のクライアントIDおよびクライアント・シークレットを表示するには、次のコマンドを使用します。 たとえば:
SELECT SYSTEM$SHOW_OAUTH_CLIENT_SECRETS('ORACLE_OAUTH'); - セキュリティ統合のプロパティを表示するには、次のコマンドを使用します。 たとえば:
desc integration ORACLE_OAUTH;
- セキュリティ統合のクライアントIDおよびクライアント・シークレットを表示するには、次のコマンドを使用します。 たとえば:
- ユーザーにロール(admin以外)を割り当てます。 「ロールの付与」と「ユーザーの変更」を参照してください。
- ウェアハウス、データベースおよびスキーマに対するすべての権限をカスタム・ロールに付与します。
- データベースの権限をデフォルト・ロールに付与するには、次のコマンドを使用します。 たとえば:
GRANT all PRIVILEGES on DATABASE snowflake_db_oracle to role sysadmin; - セキュリティ統合の権限をデフォルト・ロールに提供するには、次のコマンドを使用します。 たとえば:
grant all on integration ORACLE_OAUTH to role sysadmin; - 事前定義済ロールの権限をユーザーに付与するには、次のコマンドを使用します。 たとえば:
grant role SYSADMIN to user oracle_user; - ウェアハウスの権限をデフォルト・ロールに付与するには、次のコマンドを使用します。 たとえば:
grant usage on warehouse oracle_wh to role sysadmin; - データベースの権限をデフォルト・ロールに付与するには、次のコマンドを使用します。 たとえば:
grant usage on database snowflake_db_oracle to role sysadmin; - スキーマの使用権限をデフォルト・ロールに付与するには、次のコマンドを使用します。 たとえば:
grant usage on schema public to role sysadmin;
GRANT <privileges> … TO ROLEを参照してください。
- データベースの権限をデフォルト・ロールに付与するには、次のコマンドを使用します。 たとえば:
OAuth 2.0クライアント資格証明認証用の外部アイデンティティ・プロバイダの構成
- アクセス・トークンURI
- クライアントID
- クライアント・シークレット
- 有効範囲
これらの資格証明を使用して、スノーフレーク・アダプタがユーザー対話型(3レッグOAuth)フローを必要とせずにスノーフレークに安全に接続するために使用するアクセス・トークンを取得します。
ノート:
これらの詳細は、セキュリティ構成にのみ適用されます。 接続プロパティおよび実行時の動作は、既存のOAuthベースの統合と同じままです。 無効な資格証明が指定されている場合は、トラブルシューティングに役立つ説明的なエラー・メッセージが返されます。外部OAuthがスノーフレークで一般的にどのように機能するかの詳細は、スノーフレーク・ドキュメントの外部OAuthの概要を参照してください。
スノーフレークでのユーザーおよびセキュリティ統合の作成
外部アイデンティティ・プロバイダを使用してSnowflakeへのセキュアでトークンベースのアクセスを許可するには、次のステップに従ってユーザーを作成します。
- IDPから次の資格証明を使用してアクセス・トークンを取得します。
- クライアントID
- クライアント・シークレット
- アクセス・トークンURI
- 有効範囲
- アクセス・トークンをデコードし、
sub値を抽出します。 OAuthアクセス・トークンのデコードを参照してください。 このsub値は、アイデンティティ・プロバイダによって発行されたユーザーIDを表します。 - スノーフレークで外部OAuthセキュリティ統合を作成します。 次の情報を指定します:
- JWSキーURL
- OAuth発行者
- 対象者リスト
- 抽出した
sub値をLOGIN_NAMEプロパティの値として使用して、Snowflakeでユーザーを作成します。 - ユーザーに適切なロールと権限を付与します。
- Oracle Integrationの「接続」ページの「セキュリティ」セクションで、「ユーザーID」フィールドに同じ
sub値を入力します。