Snowflake¶
サポート対象の認証¶
- ユーザー名/パスワード
- Snowflake OAuth
- OktaまたはAzureADを使用した外部OAuth
ユーザー名/パスワード¶
前提条件¶
DataRobotでSnowflakeに接続するには、以下が必要です。
- Snowflakeアカウント
セキュリティ統合を伴うOAuth
OAuthの設定時にセキュリティ統合を作成する場合は、OAUTH_REDIRECT_URI
をhttps://<datarobot_app_server>/account/snowflake/snowflake_authz_return
として指定する必要があります。
必須パラメーター¶
以下にリストされている必須フィールドに加えて、他の使用可能な設定オプションについては、 Snowflakeのドキュメントを参照してください。
必須フィールド | 説明 | ドキュメンテーション |
---|---|---|
address |
Snowflake接続用の安全な接続URLを格納する接続オブジェクト。 例: {account_name}.snowflakecomputing.com |
Snowflakeドキュメント |
warehouse |
仮想ウェアハウスの一意の識別子。 | Snowflakeドキュメント |
db |
データベースの一意の識別子。 | Snowflakeドキュメント |
Snowflake OAuth¶
前提条件¶
DataRobotでSnowflakeに接続するには、以下が必要です。
- Snowflakeアカウント
- 設定済みのSnowflake OAuth
Set up the connection in DataRobot¶
OAuthパラメーターで接続する場合、新しいデータ接続を作成する必要があります。
OAuthを使用してデータ接続を設定するには:
-
テスト接続をクリックすると、ウィンドウが表示され、データベースアカウントから取得できるSnowflakeクライアントIDとクライアントシークレットを入力する必要があります。 保存してサインインをクリックします。
-
Snowflakeのユーザー名とパスワードを入力します。 サインインをクリックします。
-
データベースクライアントに同意するには、許可をクリックします。
接続に成功すると、DataRobotに以下のメッセージが表示されます。
必須パラメーター¶
以下にリストされている必須フィールドに加えて、他の使用可能な設定オプションについては、 Snowflakeのドキュメントを参照してください。
必須フィールド | 説明 | ドキュメンテーション |
---|---|---|
データ接続の必須フィールド | ||
address |
Snowflake接続用の安全な接続URLを格納する接続オブジェクト。 例: {account_name}.snowflakecomputing.com |
Snowflakeドキュメント |
warehouse |
仮想ウェアハウスの一意の識別子。 | Snowflakeドキュメント |
db |
データベースの一意の識別子。 | Snowflakeドキュメント |
資格情報の必須フィールド | ||
クライアントID | アプリケーションの公開識別子。 | Snowflakeドキュメント |
クライアントのシークレット | アプリケーションの認証に使用する秘密識別子。 | Snowflakeドキュメント |
Snowflakeアカウント名 | 組織内のSnowflakeアカウントの一意の識別子。 | Snowflakeドキュメント |
Snowflake External OAuth¶
前提条件¶
DataRobotでSnowflakeに接続するには、以下が必要です。
- Snowflakeアカウント
- OktaのSnowflakeで設定済みの外部OAuth。
セキュリティ統合を伴う外部OAuth
Oktaを外部IDプロバイダー(IdP)として使用する場合は、 Oktaで新しいアプリ統合を作成する際に、http://localhost/account/snowflake/snowflake_authz_return
をサインインリダイレクトURIとして指定する必要があります。
- Snowflakeアカウント
- Microsoft Azure ADのSnowflakeで設定済みの外部OAuth。
セキュリティ統合を伴う外部OAuth
Azure ADを外部IDプロバイダー(IdP)として使用する場合は、 両方のアプリケーションをAzure ADに登録する際に、https://<datarobot_app_server>/account/snowflake/snowflake_authz_return
をリダイレクトURIとして指定する必要があります。
外部IdPの設定¶
備考
このセクションでは、外部IdPを設定するための設定例を使用します。 特定の環境と要件に基づいて外部IdPを設定する方法については、OktaまたはAzure ADのドキュメントを参照してください。
適切な外部IdPで、Snowflakeアプリケーションを作成します。
Oktaで新しいアプリ統合を作成します。
- アプリケーション > 各種アプリケーションに移動します。
- アプリ統合を作成をクリックします。
- サインイン方法で、OIDC - OpenID Connectを選択します。
- アプリケーションタイプで、ウェブアプリケーションを選択します。
- 次へをクリックします。
-
次のオプションが選択されていることを確認してください。
- クライアント資格情報
- 認証コード
- リフレッシュトークン
- 同意が必要
-
ログインで、
http://localhost/account/snowflake/snowflake_authz_return
を追加しリダイレクトURIにサインインします。 Client ID
とClient secret
が生成されます。
次に、新しい認証サーバーを作成します。
-
セキュリティ > API > 認証サーバーを追加に移動します。
- オーディエンスを
https://<partner_name>.snowflakecomputing.com/
に設定します。<partner_name>
は現在のDataRobot Snowflakeインスタンスのdatarobot_partner
です。
- オーディエンスを
-
スコープ > スコープを追加に移動します。
- 名前を
session:role:public
に設定します(Snowflakeロールを参照)。 - チェックインの場合、
Require user consent for this scope
とBlock services from requesting this scope
を追加します。 - (オプション)同意を必要とする
offline_access
スコープを設定します。
- 名前を
-
アクセスポリシー > ルールを追加に移動し、次のルールを追加します。
- チェックイン
Client Credentials
を追加します。 - チェックイン
Authorization Code
を追加します。 - クライアントインテグレーション(上記で作成)を
Assigned to clients
フィールドに追加します。
- チェックイン
-
トークンに移動し、トークンを作成をクリックします。
-
次の結果が得られます。
Issuer
、たとえば、https://dev-11863425.okta.com/oauth2/aus15ca55wkdOxplJ5d7
。- Okta APIへのプログラムによるアクセス用の認証
Token
。 - 認証サーバーのメタデータJSON(設定 > メタデータURI)。
Okta API呼び出し
```
title="Get current user"
curl --location --request GET 'https://
``` title="Revoke grant/consent"
curl --location --request DELETE 'https://<OKTA_ACCOUNT>.okta.com/api/v1/users/<USER_ID>/grants/<GRANT_ID>' \
--header 'Accept: application/json' \
--header 'Content-Type: application/json' \
--header 'Authorization: SSWS <TOKEN>'
Azure ADでSnowflakeリソースのアプリケーションを登録します。
- MS Azure > Azure AD > アプリの登録に移動します。
-
新規登録をクリックします。
- 名前に、Snowflakeリソースを入力します。
- サポートされているアカウントの種類で、この組織のディレクトリのみのアカウントを選択します。
- リダイレクトURIで、ウェブを選択し
http://localhost/account/snowflake/snowflake_authz_return
と入力します。 - 登録をクリックします。
-
APIを公開します。
- Snowflake URIを参照するようにアプリケーションIDのURIを設定します(例:
https://hl91180.us-east-2.aws.snowflakecomputing.com
)。 - 既存のSnowflakeロールを参照するスコープを追加します。スコープには、アプリケーションID URIがプレフィックスとして付けられます(例:
https://hl91180.us-east-2.aws.snowflakecomputing.com/session:scope:public
)。
- Snowflake URIを参照するようにアプリケーションIDのURIを設定します(例:
Azure ADでSnowflakeクライアントアプリのアプリケーションを登録します。
- MS Azure > Azure AD > アプリの登録に移動します。
-
新規登録をクリックします。
- 名前に、Snowflakeリソースを入力します。
- サポートされているアカウントの種類で、この組織のディレクトリのみのアカウントを選択します。
- リダイレクトURIで、ウェブを選択し
http://localhost/account/snowflake/snowflake_authz_return
と入力します。 - 登録をクリックします。
-
クライアント資格情報 > 新しいクライアントシークレットに移動し、値をコピーします。 この値は、この手順の後では使用できないことに注意してください。
API Permission > Add Permission > My APIs > Snowflake Resource
に移動し、上記で作成したSnowflakeリソースのスコープを選択します(session:scope:public
)。-
次の結果が得られます。
- Snowflakeクライアントアプリ:
Client ID
とClient secret
-
発行者URL(Snowflakeとの連携では
<external_oauth_jws_keys_url>
)- Snowflakeクライアントアプリ > 概要 > エンドポイント > OpenID Connectメタデータのドキュメントに移動し、ブラウザーでドキュメントを開き、
jwks_uri
(例えば、https://login.microsoftonline.com/6064c47c-80e4-4a2b-82ee-1fc5643b37a2/discovery/v2.0/keys
)を検索します。
- Snowflakeクライアントアプリ > 概要 > エンドポイント > OpenID Connectメタデータのドキュメントに移動し、ブラウザーでドキュメントを開き、
-
エンティティID(Snowflakeとの連携では
<external_oauth_issuer>
)- Snowflakeクライアントアプリ > 概要 > エンドポイント > フェデレーションメタデータのドキュメントに移動し、ブラウザーでドキュメントを開き、
entityID
(例えば、https://sts.windows.net/6064c47c-80e4-4a2b-82ee-1fc5643b37a2/
)を検索します。
- Snowflakeクライアントアプリ > 概要 > エンドポイント > フェデレーションメタデータのドキュメントに移動し、ブラウザーでドキュメントを開き、
- Snowflakeクライアントアプリ:
Snowflakeの設定¶
備考
このセクションでは、Snowflakeで外部IdPを設定するための設定例を使用します。 特定の環境と要件に基づいてSnowflakeで外部IdPを設定する方法については、Snowflakeのドキュメントを参照してください。
Snowflakeで、適切な外部IdPの統合を作成します。
create security integration external_oauth_okta_2
type = external_oauth
enabled = true
external_oauth_type = okta
external_oauth_issuer = '<OKTA_ISSUER>'
external_oauth_jws_keys_url = '<JWKS_URI>'
external_oauth_audience_list = ('<AUDIENCE>')
external_oauth_token_user_mapping_claim = 'sub'
external_oauth_snowflake_user_mapping_attribute = 'login_name';
CREATE OR REPLACE USER <user_name>
LOGIN_NAME = '<okta_user_name>';
alter user <user_name> set DEFAULT_ROLE = 'PUBLIC';
参考値:
OKTA_ISSUER
:https://dev-11863425.okta.com/oauth2/aus15ca55wkdOxplJ5d7
AUDIENCE
:https://hl91180.us-east-2.aws.snowflakecomputing.com/
JWKS_URI
:https://dev-11863425.okta.com/oauth2/aus15ca55wkdOxplJ5d7/v1/keys
(Okta認証サーバーのメタデータJSONから取得)okta_user_name
(Okta > ディレクトリ > ユーザーから取得し、ユーザーを選択してから、プロフィール > ユーザー名/ログインに移動します)
create security integration external_oauth_azure_1
type = external_oauth
enabled = true
external_oauth_type = azure
external_oauth_issuer = 'https://sts.windows.net/6064c47c-80e4-4a2b-82ee-1fc5643b37a2/'
external_oauth_jws_keys_url = 'https://login.microsoftonline.com/6064c47c-80e4-4a2b-82ee-1fc5643b37a2/discovery/v2.0/keys'
external_oauth_audience_list = ('https://hl91180.us-east-2.aws.snowflakecomputing.com/')
external_oauth_token_user_mapping_claim = 'upn'
external_oauth_snowflake_user_mapping_attribute = 'login_name';
Set up the connection in DataRobot¶
When connecting with external OAuth parameters, you must create a new data connection.
To set up a Snowflake data connection using external OAuth:
-
After clicking Test Connection, select your OAuth provider from the dropdown—either Okta or Azure AD— and fill in the additional required fields.Then, click Save and sign in.
-
Enter your Okta or Azure AD username and password. サインインをクリックします。
-
データベースクライアントに同意するには、許可をクリックします。
接続に成功すると、DataRobotに以下のメッセージが表示されます。
必須パラメーター¶
以下にリストされている必須フィールドに加えて、他の使用可能な設定オプションについては、 Snowflakeのドキュメントを参照してください。
必須フィールド | 説明 | ドキュメンテーション |
---|---|---|
データ接続の必須フィールド | ||
address |
Snowflake接続用の安全な接続URLを格納する接続オブジェクト。 例: {account_name}.snowflakecomputing.com |
Snowflakeドキュメント |
warehouse |
仮想ウェアハウスの一意の識別子。 | Snowflakeドキュメント |
db |
データベースの一意の識別子。 | Snowflakeドキュメント |
資格情報の必須フィールド | ||
クライアントID | アプリケーションの公開識別子。 Okta管理コンソールで、アプリケーション > 各種アプリケーション > OpenID Connectウェブアプリ > サインオンタブ > サインオン方法に移動します。 Azure ADでは、これは applicationID とも呼ばれます。 |
Oktaまたは Azure ADのドキュメント |
クライアントのシークレット | アプリケーションの認証用の秘密識別子。 Okta管理コンソールで、アプリケーション > 各種アプリケーション > OpenID Connectウェブアプリ > サインオンタブ > サインオン方法に移動します。 Azure ADでは、これは application secret とも呼ばれます。 |
Oktaまたは Azure ADのドキュメント |
Snowflakeアカウント名 | 組織内のSnowflakeアカウントの一意の識別子。 | Snowflakeドキュメント |
発行者URL | SAML IDプロバイダーを一意に識別するURL。 「発行者」とは、IDプロバイダーのエンティティIDを指します。 例:
|
Oktaまたは Azure ADのドキュメント |
スコープ | Snowflakeのロール名が含まれます。 例: Snowflakeアナリストのパラメーター。
|
Snowflakeドキュメント |
これらのフィールドに適切な値については管理者にお問い合わせください。
注意事項¶
デフォルトでは、Snowflakeは二重引用符で囲まれた識別子を保存および解決する際に、アルファベットの大文字と小文字を保持します。ただし、Snowflakeでこのデフォルトを上書きすると、二重引用符で囲まれた識別子は大文字として保存および解決されます。 DataRobotは大文字と小文字を区別するプラットフォームであるため、元の大文字と小文字を維持することが重要です。
大文字と小文字の区別に関連する潜在的な問題を回避するには、DataRobotのSnowflakeデータ接続に移動し、QUOTED_IDENTIFIERS_IGNORE_CASE
パラメーターを追加して、値をFALSE
に設定します。 詳細については、 Snowflakeのドキュメントを参照してください。
トラブルシューティング¶
問題 | 解決方法 | 説明 |
---|---|---|
DataRobotで操作を実行しようとすると、ファイアウォールが毎回IPアドレスをクリアするよう要求します。 | DataRobotのホワイトリストに登録されたすべてのIPを追加します。 | ホワイトリストの送信元IPアドレスを参照してください。 ホワイトリストに登録されたIPをすでに追加している場合は、既存のIPが完全であることを確認してください。 |