Skip to content

アプリケーション内で をクリックすると、お使いのDataRobotバージョンに関する全プラットフォームドキュメントにアクセスできます。

Snowflake

サポート対象の認証

ユーザー名/パスワード

前提条件

DataRobotでSnowflakeに接続するには、以下が必要です。

  • Snowflakeアカウント

セキュリティ統合を伴うOAuth

OAuthの設定時にセキュリティ統合を作成する場合は、OAUTH_REDIRECT_URIhttps://<datarobot_app_server>/account/snowflake/snowflake_authz_returnとして指定する必要があります。

必須パラメーター

以下にリストされている必須フィールドに加えて、他の使用可能な設定オプションについては、 Snowflakeのドキュメントを参照してください。

必須フィールド 説明 ドキュメンテーション
address Snowflake接続用の安全な接続URLを格納する接続オブジェクト。

例: {account_name}.snowflakecomputing.com
Snowflakeドキュメント
warehouse 仮想ウェアハウスの一意の識別子。 Snowflakeドキュメント
db データベースの一意の識別子。 Snowflakeドキュメント

キーペア

前提条件

DataRobotでSnowflakeに接続するには、以下が必要です。

  • Snowflakeアカウント
  • 秘密キーファイル(秘密キーの生成方法については、Snowflakeのドキュメントを参照してください)

DataRobotでの接続設定

以下のタブでは、キーペア認証を使用したSnowflakeデータ接続を設定する方法について紹介します。

DataRobot ClassicでSnowflakeデータ接続を作成する場合は、資格情報タイプとしてキーペアを選択します。 続いて、必要なパラメーターを入力します。

ワークベンチでSnowflakeデータ接続を作成する場合は、資格情報タイプとしてキーペアを選択します。 続いて、必要なパラメーターを入力します。

必須パラメーター

以下にリストされている必須フィールドに加えて、他の使用可能な設定オプションについては、 Snowflakeのドキュメントを参照してください。

必須フィールド 説明
ユーザー名 Snowflakeアカウント内のユーザーの一意の識別子(つまり、Snowflakeにログインするときに使用する名前)。
秘密鍵 秘密キーファイルからコピーした文字列
表示名 DataRobot内のSnowflake資格情報を表す一意の識別子

Snowflakeでの秘密キーの生成やキーペア認証の設定など、Snowflakeのキーペア認証の詳細については、Snowflakeのドキュメントを参照してください。

Snowflake OAuth

前提条件

DataRobotでSnowflakeに接続するには、以下が必要です。

DataRobotでの接続設定

OAuthパラメーターで接続する場合、新しいデータ接続を作成する必要があります。

OAuthを使用してデータ接続を設定するには:

  1. データ接続の作成接続のテストの手順に従ってください。

  2. 接続をテストをクリックすると、資格情報ウィンドウが表示されます。 SnowflakeのクライアントID、クライアントシークレット、アカウント名を入力します。 OAuthプロバイダーとしてSnowflakeを選択します。

  3. 保存してサインインをクリックします。

  4. Snowflakeのユーザー名とパスワードを入力します。 サインインをクリックします。

  5. データベースクライアントに同意するには、許可をクリックします。

接続に成功すると、DataRobotに以下のメッセージが表示されます。

必須パラメーター

以下にリストされている必須フィールドに加えて、他の使用可能な設定オプションについては、 Snowflakeのドキュメントを参照してください。

必須フィールド 説明 ドキュメンテーション
データ接続の必須フィールド
address Snowflake接続用の安全な接続URLを格納する接続オブジェクト。

例:
{account_name}.snowflakecomputing.com
Snowflakeドキュメント
warehouse 仮想ウェアハウスの一意の識別子。 Snowflakeドキュメント
db データベースの一意の識別子。 Snowflakeドキュメント
資格情報の必須フィールド
クライアントID アプリケーションの公開識別子。 Snowflakeドキュメント
クライアントのシークレット アプリケーションの認証に使用する秘密識別子。 Snowflakeドキュメント
Snowflakeアカウント名 組織内のSnowflakeアカウントの一意の識別子。 Snowflakeドキュメント

Snowflakeの外部OAuth

前提条件

OAuthを使用してDataRobotでSnowflakeに接続する前に、以下が必要です。

  • Snowflakeアカウント
  • OktaのSnowflakeで設定済みの外部OAuth

セキュリティ統合を伴う外部OAuth

Oktaを外部IDプロバイダー(IdP)として使用する場合、Oktaで新しいアプリ連携を作成する際にサインインリダイレクトURIとしてhttps://<datarobot_app_server>/account/snowflake/snowflake_authz_returnを指定する必要があります。

Microsoft Entra IDはAzure Active Directoryの新しい名前です。

  • Snowflakeアカウント
  • Microsoft Entra IDのSnowflakeで設定済みの外部OAuth

セキュリティ統合を伴う外部OAuth

Entra IDを外部IDプロバイダー(IdP)として使用する場合は、 両方のアプリケーションをEntra IDに登録する際に、https://<datarobot_app_server>/account/snowflake/snowflake_authz_returnリダイレクトURIとして指定する必要があります。

外部IdPの設定

備考

このセクションでは、外部IdPを設定するための設定例を使用します。 特定の環境と要件に基づいて外部IdPを設定する方法については、OktaまたはEntra IDのドキュメントを参照してください。

適切な外部IdPで、Snowflakeアプリケーションを作成します。

Oktaで新しいアプリ統合を作成します。

  1. アプリケーション > 各種アプリケーションに移動します。
  2. アプリ統合を作成をクリックします。
  3. サインイン方法で、OIDC - OpenID Connectを選択します。
  4. アプリケーションタイプで、ウェブアプリケーションを選択します。
  5. 次へをクリックします。
  6. 新しいアプリケーションの名前を入力します。
  7. 付与タイプで、以下のオプションが選択されていることを確認します。

    • クライアント資格情報
    • 認証コード
    • リフレッシュトークン
  8. ログインで、サインインリダイレクトURIhttp://<datarobot_app_server>/account/snowflake/snowflake_authz_returnを追加します。

  9. 保存をクリックします。これにより、クライアントIDクライアントシークレットが生成されます。

新しい認証サーバーを作成する

  1. セキュリティ > API > 認証サーバーへ移動します。 認証サーバーの追加をクリックします。
  2. 名前を入力します。
  3. オーディエンスhttps://<account_identifier>.snowflakecomputing.com/に設定します。
  4. 保存をクリックします。
  5. スコープ > スコープを追加に移動します。

    • 名前session:role:publicに設定します。 publicはPublicというSnowflakeのロールを指します。 これは別のロール名でもかまいませんが、Snowflake内にも存在する必要があります。
    • ユーザーの同意には必須を設定します。
    • このスコープではユーザーの同意が必要サービスがこのスコープを要求するのをブロックするを追加します。
    • (オプション)同意を必要とするoffline_accessスコープを設定します。
  6. アクセスポリシーに移動して、ポリシーの追加をクリックします。

  7. 割り当て先で、次のクライアントを選択し、作成したばかりのアプリケーションを選択します。
  8. ポリシーを作成をクリックします。
  9. ルールを追加をクリックします。
  10. 名前を入力し、以下のオプションが選択されていることを確認します。

    • チェックインClient Credentialsを追加します。
    • チェックインAuthorization Codeを追加します。
  11. ルールを作成をクリックします。

必要な情報

SnowflakeとDataRobotのセットアップを進める前に、以下の情報をOktaにコピーしていることを確認します。

  • クライアントID
  • クライアントのシークレット
  • Okta発行者のURL
  • JWKS URI
  • オーディエンス

オーディエンスは「設定」タブに表示され、発行者のURLとJWKS URIを確認するには、メタデータURIのリンクをクリックします。 これにより、必要な情報を含むJSONアイテムが読み込まれます。

(オプション)アプリケーションのテスト

Oktaで作成したばかりのアプリケーションをテストするには:

  1. トークンのプレビューに移動し、リクエストプロパティに付与タイプ、アプリケーションに割り当てられているユーザー、および指定されたスコープを入力します。 トークンのプレビューをクリックします。
  2. 次の結果が得られます。

    • Issuer、たとえば、https://dev-11863425.okta.com/oauth2/aus15ca55wkdOxplJ5d7
    • Okta APIへのプログラムによるアクセス用の認証Token
    • 認証サーバーのメタデータJSON(設定 > メタデータURI)。

Okta API呼び出し

現在のユーザーを取得する
 curl --location --request GET 'https://<OKTA_ACCOUNT>.okta.com/api/v1/users/me' \
 --header 'Accept: application/json' \
 --header 'Content-Type: application/json' \
 --header 'Authorization: SSWS <TOKEN>' 
ユーザーの権限を取得する
 curl --location --request GET 'https://<OKTA_ACCOUNT>.okta.com/api/v1/users/<USER_ID>/clients/<CLIENT_ID>/grants' \
 --header 'Accept: application/json' \
 --header 'Content-Type: application/json' \
 --header 'Authorization: SSWS <TOKEN>' 
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>' 

Microsoft Entra IDでSnowflakeリソースのアプリケーションを登録します。

  1. MS Azure > Microsoft Entra ID > アプリの登録に移動します。
  2. 新規登録をクリックします。

    • 名前の下に、Snowflake OAuthリソースを入力します。
    • サポートされているアカウントの種類で、この組織のディレクトリのみのアカウントを選択します。
    • リダイレクトURIで、ウェブを選択しhttps://<datarobot_app_server>/account/snowflake/snowflake_authz_returnと入力します。
    • 登録をクリックします。
  3. APIを公開します。

    • アプリケーションID URIの横にある設定リンクをクリックし、固有IDであることを確認します(これは変更する必要はありません)。 これは、値になります。
    • スコープを追加をクリックして、Snowflakeロールを表すスコープを追加します
    • Snowflakeのロール名を使用して、スコープをsession:scope:<snowflake_role_name>のように入力します。 カスタムロールの場合は、Snowflakeでロール名を設定し、スコープをsession:scope:<custom_role_name>のように入力します。
    • スコープ名を session:role-anyと入力します。
    • 新しく作成されたスコープの値をコピーします。 これは、<OAUTH_SCOPES>の値になります。

Microsoft Entra IDでSnowflakeクライアントアプリのアプリケーションを登録します。

  1. MS Azure > Microsoft Entra ID > アプリの登録に移動します。
  2. 新規登録をクリックします。

    • 名前の下に、Snowflake OAuthクライアントを入力します。
    • サポートされているアカウントの種類で、この組織のディレクトリのみのアカウントを選択します。
    • リダイレクトURIで、ウェブを選択しhttps://<datarobot_app_server>/account/snowflake/snowflake_authz_returnと入力します。
    • 登録をクリックします。
  3. 概要セクションで、アプリケーション(クライアント)IDフィールドからクライアントIDをコピーします。 これは<OAUTH_CLIENT_ID>と呼ばれます。

  4. 証明書とシークレットをクリックし、新規クライアントシークレットをクリックします。
  5. 追加をクリックします。 シークレットをコピーします。 これは<OAUTH_CLIENT_SECRET>と呼ばれます。
  6. オプション ユーザーに代わってアクセストークンをリクエストする必要があるプログラムクライアントの場合は、アプリケーションの委任権限を以下のように設定します。

    • APIのアクセス許可をクリックします。
    • アクセス許可の追加をクリックします。
    • [自分のAPI]をクリックします。
    • ステップ1で作成したSnowflake OAuth Resourceをクリックします。Entra IDで、OAuth Resourceを設定します。
    • [委任されたアクセス許可]ボックスをクリックします。
    • ステップ3で作成されたスコープに関連する権限を確認しますsession:scope:role-any
    • [アクセス許可の追加]をクリックします。

Snowflakeとの連携のために以下の情報を収集します。

  • アプリの登録をクリックします。
  • Snowflake OAuthリソースをクリックします。
  • 概要ページで、エンドポイントをクリックします。
  • OAuth 2.0トークンエンドポイント(v2) のURLの最初の部分(例:https://login.microsoftonline.com/6064c47c-80e4-4a555b-82ee-1fc5643b37a2)をコピーします。 これは、<ISSUER_URL>の値になります
  • OpenID Connectメタデータドキュメントの値をコピーし、新しいウィンドウに貼り付けます。 「jwks_uri」 パラメーターを見つけ、<JWS_KEY_ENDPOINT>値となるその値をコピーします(例:https://login.microsoftonline.com/6064c47c-80e4555b-82ee-1fc5643b37a2/discovery/v2.0/keys
  • フェデレーションメタデータドキュメントをコピーし、URLを新規ウィンドウで開きます。 <ENTITY_ID>値となる"entityID"パラメーターを見つけます。これは<AZURE_AD_ISSUER>とも呼ばれます(例:https://sts.windows.net/6064c47c-80e4-555582ee-1fc5643b37a2/)。

以下の値をコピーしたことを確認します。

  • <OAUTH_SCOPES>は、Snowflake OAuth Resourceからコピーしました

  • Snowflake OAuthリソースの概要およびエンドポイントビューにある<APP_ID_URI><ISSUER_URL><JWS_KEY_ENDPOINT><ENTITY_ID>の各値。

  • <OAUTH_CLIENT_ID><OAUTH_CLIENT_SECRET>は、Snowflake OAuthクライアントからコピーしました

関連資料

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/aus15ca55wxplJ5d7

  • AUDIENCE: https://hl91180.us-east-2.aws.snowflakecomputing.com/

  • JWKS_URIhttps://dev-11863425.okta.com/oauth2/aus15ca55wxplJ5d7/v1/keys(Okta認証サーバーのメタデータJSONから取得)

  • okta_user_nameOkta > ディレクトリ > ユーザーから取得し、ユーザーを選択してから、プロフィール > ユーザー名/ログインに移動します)

備考

以下の連携を作成するにはaccountadminロール、またはグローバルなCREATE INTEGRATION権限を持つロールが必要です。

create security integration external_oauth_azure_1
   type = external_oauth
   enabled = true
   external_oauth_type = azure
   external_oauth_issuer = '<ENTITY_ID>'
   external_oauth_jws_keys_url = '<JWS_KEY_ENDPOINT>'
   external_oauth_audience_list = ('<APP_ID_URI>')
   external_oauth_token_user_mapping_claim = 'upn'
   external_oauth_any_role_mode = 'ENABLE'
   external_oauth_snowflake_user_mapping_attribute = 'login_name'; 

参考値:

  • <ENTITY_ID>: https://sts.windows.net/6064c47c-80e4-4a2b-4444-1fc5643b37a2/

  • <JWS_KEY_ENDPOINT>: https://login.microsoftonline.com/6064c47c-80e4-4a2b-4444-1fc5643b37a2/discovery/v2.0/keys

  • <APP_ID_URI>: api://8aa2572f-c9e6-4e91-4444-dcd84c856dd2


連携のアクセス権をpublicロールに付与します。

grant USE_ANY_ROLE on integration external_oauth_azure_1 to PUBLIC;

grant USE_ANY_ROLE on integration external_oauth_azure_1 to <custom_role>;

LOGIN_NAMEのユーザーが、Azureログインと同じであることを確認します。 Snowflakeで、次のクエリーを使用して検証します。

DESC USER <SNOWFLAKE_LOGIN_NAME>

ログイン名が異なる場合、Snowflakeは、Entra IDで生成されたアクセストークンを検証できません。 その場合、以下のコマンドを使用し、SnowflakeとAzureを一致させます。

ALTER USER <SNOWFLAKE_LOGIN_NAME> SET LOGIN_NAME='<EMAIL_USED_FOR_AZURE_LOGIN>'

カスタムロールを使用していてデフォルトでない場合は、以下のコマンドでデフォルトとして設定し、接続をテストします。

ALTER USER <USERNAME> SET DEFAULT ROLE='<custom_role>';

DataRobotでの接続設定

外部OAuthパラメーターで接続する場合、新しいデータ接続を作成する必要があります。

外部OAuthを使用したSnowflakeデータ接続を設定するには:

  1. データ接続の作成接続のテストの手順に従ってください。

  2. 接続をテストをクリックした後、ドロップダウンからOktaまたはMS Azure ADのいずれかのOAuthプロバイダーを選択し、その他の必須フィールドに入力します。次に、保存してサインインをクリックします。

  3. OAuthモーダルで、OktaまたはAzureのユーザー名とパスワードを入力します。 サインインをクリックします。

  4. データベースクライアントに同意するには、許可をクリックします。

接続に成功すると、DataRobotに以下のメッセージが表示されます。

必須パラメーター

以下にリストされている必須フィールドに加えて、他の使用可能な設定オプションについては、 Snowflakeのドキュメントを参照してください。

必須フィールド 説明 ドキュメンテーション
データ接続の必須フィールド
address Snowflake接続用の安全な接続URLを格納する接続オブジェクト。

例: {account_name}.snowflakecomputing.com
Snowflakeドキュメント
warehouse 仮想ウェアハウスの一意の識別子。 Snowflakeドキュメント
db データベースの一意の識別子。 Snowflakeドキュメント
資格情報の必須フィールド
クライアントID アプリケーションの公開識別子。

Okta管理コンソールで、アプリケーション > 各種アプリケーション > OpenID Connectウェブアプリ > サインオンタブ > サインオン方法に移動します。

Microsoft Entra ID/Azure ADでは、これはapplicationIDとも呼ばれます。 上の手順では、<OAUTH_CLIENT_ID>としてコピーしました。
Oktaまたは Entra IDのドキュメント
クライアントのシークレット アプリケーションの認証用の秘密識別子。

Okta管理コンソールで、アプリケーション > 各種アプリケーション > OpenID Connectウェブアプリ > サインオンタブ > サインオン方法に移動します。

Microsoft Entra ID/Azure ADでは、これはclient secretとも呼ばれます。 上の手順では、<OAUTH_CLIENT_SECRET>としてコピーしました。
Oktaまたは Entra IDのドキュメント
Snowflakeアカウント名 組織内のSnowflakeアカウントの一意の識別子。 Snowflakeドキュメント
発行者URL SAML IDプロバイダーを一意に識別するURL。 「発行者」とは、IDプロバイダーのエンティティIDを指します。

例:
  • Okta:https://<your_company>.okta.com/oauth2/<auth_server_id>
  • Microsoft Entra ID:
    <ISSUER_URL> https://login.microsoftonline.com/<Azure_Tenant_ID>
Oktaまたは Entra IDのドキュメント
スコープ Snowflakeのロール名が含まれます。

例:
Snowflakeアナリストのパラメーター。
  • Okta: session:role:analyst
  • Microsoft Entra ID: <OAUTH_SCOPES> など api://8aa2572f-c9e6-4e91-9555-dcd84c856dd/session:role-any
Snowflakeドキュメント

これらのフィールドに適切な値については管理者にお問い合わせください。

機能に関する注意事項

  • デフォルトでは、Snowflakeは二重引用符で囲まれた識別子を保存および解決する際に、アルファベットの大文字と小文字を保持します。ただし、Snowflakeでこのデフォルトを上書きすると、二重引用符で囲まれた識別子は大文字として保存および解決されます。 DataRobotは大文字と小文字を区別するプラットフォームであるため、元の大文字と小文字を維持することが重要です。
  • 大文字と小文字の区別に関連する潜在的な問題を回避するには、DataRobotのSnowflakeデータ接続に移動し、QUOTED_IDENTIFIERS_IGNORE_CASEパラメーターを追加して、値をFALSEに設定します。 詳細については、 Snowflakeのドキュメントを参照してください。
  • データセットの更新など、スケジュールされたジョブを設定する予定がある場合、Snowflakeに接続する際にはOAuthではなく、キーペア認証またはBasic認証(ユーザー名/パスワード)を使用することをお勧めします。 アクセストークンの有効期限が切れた場合、再認証なしでリフレッシュトークンを使って更新できます。 ただし、リフレッシュトークンの有効期限が切れた場合は、再認証が必要です。

トラブルシューティング

問題 解決方法 説明
DataRobotで操作を実行しようとすると、ファイアウォールが毎回IPアドレスをクリアするよう要求します。 DataRobotのホワイトリストに登録されたすべてのIPを追加します。 ホワイトリストの送信元IPアドレスを参照してください。 ホワイトリストに登録されたIPをすでに追加している場合は、既存のIPが完全であることを確認してください。
外部OAuth Snowflake接続をMicrosoft Entra IDでテストすると、DataRobotは以下のメッセージを返します。

AADSTS700016:識別子'aa2572f-c9e6-4e91-9eb1-dcd84c856dd2'のアプリケーションが、'Azure directory "datarobot" ("azuresupportdatarobot")'ディレクトリで見つかりませんでした。 これは、テナントの管理者がアプリケーションをインストールしていない場合、またはテナント内のユーザーに同意されていない場合に発生します。 認証リクエストを、誤ったテナントに送信した可能性があります。
スコープが作成され、付与され、Azureのリソースに割り当てられたことを確認します。 詳細については、 Snowflakeのセットアップセクションを参照してください。
データ接続を追加後、外部OAuthをテストすると、DataRobotは以下のメッセージを返します。

jdbc:snowflake://datarobot_partner.snowflakecomputing.com?CLIENT_TIMESTAMP_TYPE_MAPPING=TIMESTAMP_NTZ&db=SANDBOX&warehouse=DEMO_WH&application=DATAROBOT&CLIENT_METADATA_REQUEST_USE_CONNECTION_CTX=false. 元のエラーのJDBC接続失敗は、以下のとおりです。接続でリクエストされたロール、または接続(ACCOUNTADMIN)でリクエストされなかった場合のデフォルトロールは、アクセストークンにリストされていないか、またはフィルターされています。 別のロールを指定するか、または、OAuth認証サーバー管理者に連絡してください。
Azureとの接続を確立するユーザーに、デフォルトのロールが割り当てられていることを確認してください。 デフォルトロールは、ACCOUNTADMINORGADMIN、またはSECURITYADMIN以外のものでなければなりません。 session:scopescope:role-anyで作成されている場合、ユーザーは、指定された管理者ロール以外のロールでログインできます。
接続テストをすると、DataRobotは以下のメッセージを返します。

無効なリクエストを以下に記します。リクエストトークンが、ユーザーのコンテキストと一致しません。 さまざまなリクエストまたはユーザーセッション間でユーザーコンテキスト値(Cookie、フォームフィールド、ヘッダー)をコピーしないでください。完全な単一ユーザーフロー全体で、提供されたALLの値を常に維持してください。 失敗の理由:[トークン値が一致しません。]
ユーザーのログイン名と、SnowflakeとAzureの両方のログイン名が一致していることを確認し、ユーザーをマッピングしてアクセストークンを作成します。 Snowflakeのログイン名を、Azureのユーザー名と一致するように変更できます。
Snowflake資格情報を認証しようとすると、DataRobotは次のエラーメッセージを返す:

指定されたユーザー名またはパスワードが間違っています。
パラメーターが有効であることを確認します。有効である場合は、推奨ドライバーバージョンを使用します。 ユーザー名、秘密鍵、パスフレーズを確認します。すべてのパラメーターが有効な場合は、ドロップダウンの追加パラメーターを表示 > ドライバーの推奨ドライバーバージョンを使用します。

ドライバーバージョン3.13.9を使用している場合:
  1. 追加パラメーターを表示をクリックします。
  2. パラメーターを追加をクリックし、アカウントを選択します。
  3. フィールドにアカウント名を入力します。

詳細については、 Snowflakeコミュニティの記事を参照してください。

更新しました 2024年10月16日