接続の確立
JDBC データソースの作成
Java アプリケーションから接続するJDBC データソースを作成できます。CData JDBC Driver for Snowflake に基づくJDBC データソースの作成は、3つの基本ステップで構成されます。
- ドライバーのJAR ファイルをクラスパスに追加します。JAR ファイルはインストールディレクトリの[lib]サブフォルダ内にあります。.lic ファイルはJAR ファイルと同じフォルダ内に配置される必要があることに注意してください。
- ドライバークラスを入力します。次に例を示します。
cdata.jdbc.snowflake.SnowflakeDriver
- JDBC URL を入力します。次に例を示します。
jdbc:snowflake:url=https://myaccount.region.snowflakecomputing.com;user=Admin;password=test123;Database=Northwind;Warehouse=TestWarehouse;Account=Tester1; or jdbc:cdata:snowflake:url=https://myaccount.region.snowflakecomputing.com;user=Admin;password=test123;Database=Northwind;Warehouse=TestWarehouse;Account=Tester1;
上記の2つ目の形式は、同じURL 形式を使用しているドライバー間でアプリケーションに競合がある場合は、CData ドライバーを使用していることを確認するために常に使用できます。URL は "jdbc:snowflake:" または"jdbc:cdata:snowflake:" のいずれかから始まり、任意の接続プロパティの名前と値のペアをセミコロン区切りで入力します。
Snowflake への接続
Snowflake データベースに接続するには、認証に加えて(下記参照)、次のプロパティを設定します。
- Url:AWS とAzure の両方のインスタンスがサポートされています。次に例を示します。
- AWS: https://myaccount.region.snowflakecomputing.com
- Azure: https://myaccount.region.azure.snowflakecomputing.com
Account が必要となるのは、Url が最初にアカウント名を含む通常の構文に準拠していない場合だけです。この場合に必要なAccount 名は、Snowflake が提供します。
オプションとして、Database とSchema を設定して、本製品 から返されるテーブルとビューを制限できます。
GCP インスタンス
GCP インスタンスへの接続を確立するには、次のURL を指定します。URL: https://myaccount.gcp.snowflakecomputing.com次はGCP インスタンスと連携するための接続文字列の例です。
jdbc:snowflake:AuthScheme=Basic;url=https://myaccount.gcp.snowflakecomputing.com;user=Admin;password=test123;Database=Northwind;Warehouse=TestWarehouse;Account=Tester1;
Snowflake への認証
本製品 は、Snowflake ユーザー認証、フェデレーション認証、およびSSL クライアント認証をサポートしています。認証するには、User とPassword を設定し、AuthScheme プロパティで認証メソッドを選択します。
パスワード
User およびPassword をSnowflake ユーザーに設定し、AuthScheme をPASSWORD に設定します。
キーペア
本製品 を使用すると、ユーザーアカウントに定義されたプライベートキーを使用してセキュアなトークンを作成することにより、キーペア認証を使用して認証できます。この方法で接続するには、AuthScheme をPRIVATEKEY に設定し、次の値を設定します。
- User:認証に使用するユーザーアカウント。
- PrivateKey:プライベートキーを含む.pem ファイルへのパスなど、ユーザーに使用されるプライベートキー。
- PrivateKeyType:プライベートキーを含むキーストアの種類(PEMKEY_FILE、PFXFILE など)。
- PrivateKeyPassword:指定されたプライベートキーのパスワード。
Okta
AuthScheme をOKTA に設定します。Okta に接続するには、次の接続プロパティを使用します。
- User:Okta ユーザーに設定。
- Password:ユーザーのOkta パスワードに設定。
- MFAPasscode(オプション):デバイスに送信されたOTP コードに設定。このプロパティは、OKTA サインオンにMFA が必要な場合にのみ使用します。
- Domain:OKTA org ドメイン名に設定。
- MFAType(オプション):multi-factor タイプに設定。このプロパティは、OKTA サインオンにMFA が必要な場合にのみ使用します。このプロパティには、次のいずれかの値を指定します。
- OKTAVerify
- SMS
- APIToken(オプション):顧客がOkta 組織から作成したAPI Token に設定。Okta クライアントリクエストコンテキストをオーバーライドする、信頼されたアプリケーションまたはプロキシ経由でユーザーを認証する場合には、これを指定する必要があります。ほとんどの場合必要ありません。
次は接続文字列の例です。
AuthScheme=OKTA;User=username;Password=password;Url='https://myaccount.region.snowflakecomputing.com';Warehouse=My_warehouse;SSO Properties='Domain=https://cdata-okta.okta.com';
次はOKTA MFA の接続文字列の例です。
AuthScheme=OKTA;User=username;Password=password;MFAPasscode=8111461;Url='https://myaccount.region.snowflakecomputing.com';Warehouse=My_warehouse;SSO Properties='Domain=https://cdata-okta.okta.com;MFAType=OktaVerify;';
AzureAD
AuthScheme をAzureAD に、User をAD ユーザーに設定します。接続すると、ブラウザが開きAzure AD にログインして認証を完了できます。 次はAzureAD の接続文字列の例です。AuthScheme=AzureAD;Url=https://myaccount.region.snowflakecomputing.com;[email protected];
PingFederate
AuthScheme をPingFederate に設定します。PingFederate に接続するには、次の接続プロパティを設定します。- User:PingFederate ユーザーに設定。また、PingFederate Data Store にもユーザーを追加する必要があります。接続すると、ブラウザが開きPingFederate にログインして認証を完了できます。
- Password:ユーザーパスワードに設定。
- ProofKey(オプション):ブラウザを使用せずに接続する場合は、必ず指定してください。ブラウザの設定では、この値は自動生成されます。
- ExternalToken(オプション):ブラウザを使用せずに接続する場合に必要です。ブラウザの設定では、この値は自動生成されます。
AuthScheme=PingFederate;Url=https://myaccount.region.snowflakecomputing.com;User=myuser@mydomain;Account=myaccount;Warehouse=mywarehouse;
Proof Key およびExternal Token の使用
AuthScheme をAzureAD またはPingFederate に設定するには、Proof Key およびExternal Token を使用します。インターネットブラウザで認証を完了する場合、これらの値は自動生成され、Snowflake のログインプロセスで使用される接続文字列に自動的に含まれます。ブラウザ経由以外の方法で接続する場合は、ProofKey およびExternalToken に値を指定する必要があります。この場合、下記の手順に従って認証します。
- 8080 などのポートを指定して、ローカルWeb サーバーを作成します。
- 指定したポートを使って、GetOAuthAuthorizationURL ストアドプロシージャを呼び出します。このプロシージャは、ログインSSO URL を返します。
- 返されたURL をブラウザにコピーします。
- 表示されるページで、ユーザーネームとパスワードを入力します。
- ログイン後、コールバックURL が生成され、ローカルのWeb サーバーインスタンスに送信されます。このコールバックURL は特殊な形式になっています。コールバックURL からExternal Token を抽出するためのコードを独自に記述する必要があります。
OAuth
OAuth で認証するには、AuthScheme をOAuth に設定します。カスタムOAuth アプリの作成 で認証して、OAuthClientId、OAuthClientSecret、およびCallbackURL 接続プロパティを取得できます。
NOTE:OAuthAuthenticator と呼ばれる追加の接続プロパティがあります。デフォルト値はAzure ですが、None またはOKTA に設定することもできます。このプロパティは、OAuth アプリケーションがSnowflake に要求するAuthenticator を決定します。
AuthScheme をAzureAD に設定する場合と、AuthScheme をOAuth してOAuthAuthenticator をAzureに設定する場合には違いがあります。
- AuthScheme=AzureAD:これはブラウザを必要とするSSO 認証形式で、Snowflake 側から見たセキュリティインテグレーションタイプはSAML2 です。
- AuthScheme=OAuth かつOAuthAuthenticator=Azure:ブラウザを必要としないOAuth 形式です。Snowflake 側から見ると、セキュリティインテグレーションタイプは"external_oauth" です。
デスクトップアプリ
このセクションでは、カスタムOAuth アプリの資格情報を使用したデスクトップ認証について説明します。詳しくは、カスタムOAuth アプリの作成 を参照してください。OAuth アクセストークンの取得
以下を設定して、接続してください。
- OAuthClientId:OAuth 統合設定のクライアントID に設定。
- OAuthClientSecret:OAuth 統合設定のクライアントシークレットに設定。
- CallbackURL:OAuth 統合設定のリダイレクトURL に設定。
- InitiateOAuth:GETANDREFRESH に設定。InitiateOAuth を使うと、OAuth 交換の繰り返しや、手動でのOAuthAccessToken 設定を避けられます。
- コールバックURL からアクセストークンを取得し、リクエストを認証します。
- 古いトークンの期限が切れたときは、新しいアクセストークンを取得します。
- OAuthSettingsLocation にOAuth 値を保存し、接続間で永続化されるようにします。
手動でのOAuth アクセストークンの取得
次の接続プロパティを設定し、OAuthAccessToken を取得します。
- InitiateOAuth:OFF に設定。
- OAuthClientId:OAuth 統合設定のクライアントID に設定。
- OAuthClientSecret:OAuth 統合設定のクライアントシークレットに設定。
続いてストアドプロシージャを呼び出し、OAuth 交換を完了します。
- GetOAuthAuthorizationUrl ストアドプロシージャを呼び出します。CallbackURL インプットをアプリ設定で指定したリダイレクトURI に設定します。ストアドプロシージャがOAuth エンドポイントのURL とPKCEVerifier を返します。
- URL を開き、ログインして、アプリケーションを認可します。コールバックURL にリダイレクトされます。
- GetOAuthAccessToken ストアドプロシージャを呼び出します。CallbackURL インプットをアプリ設定で指定したリダイレクトURI に設定します。PKCEVerifier インプットを最初の手順で取得したPKCEVerifier の値に設定します。
ヘッドレスマシン
ヘッドレスマシンのユーザーアカウントでOAuth を使用するようにドライバーを設定するには、インターネットブラウザに対応した別の端末で認証する必要があります。- 以下の2つのオプションから選択します。
- オプション1:後述の「Verifier code を取得および交換」に従い、OAuthVerifier 値を取得します。
- オプション2:別のマシンに本製品 をインストールし、後述の「OAuth 設定を転送」の説明に従い、通常のブラウザベースのフローで認証後にOAuth 認証値を転送します。
- その後、ヘッドレスマシンからアクセストークンを自動的にリフレッシュするように本製品 を設定します。
オプション1:Verifier code を取得および交換
Verifier code を取得するには、OAuth Authorization URL で認証する必要があります。
手順については、カスタムOAuth アプリの作成 を参照してください。このセクションでは、データの認証および接続を行う手順について説明します。
Verifier code を取得するには、ヘッドレスマシンで次のプロパティを設定します。
- InitiateOAuth:OFF に設定。
- OAuthClientId:OAuth 統合設定のクライアントID に設定。
- OAuthClientSecret:OAuth 統合設定のクライアントシークレットに設定。
次に、別のマシンから認証してOAuthVerifier 接続プロパティを取得します。
- GetOAuthAuthorizationUrl ストアドプロシージャを呼び出します。CallbackURL インプットをアプリ設定で指定したリダイレクトURI に設定します。ストアドプロシージャがOAuth エンドポイントのURL とPKCEVerifier を返します。
- 返されたURL をブラウザで開きます。ログインして、本製品 にアクセス許可を与えます。すると、verifier code を含むコールバックURL にリダイレクトされます。
- Verifier の値とPKCEVerifier の値を保存します。OAuthVerifier 接続プロパティにVerifier の値を設定し、PKCEVerifier 接続プロパティにPKCEVerifier の値を設定する必要があります。
最後に、ヘッドレスマシンで、次の接続プロパティを設定してOAuth 認証値を取得します。
- OAuthClientId:OAuth 統合設定のクライアントID に設定。
- OAuthClientSecret:OAuth 統合設定のクライアントシークレットに設定。
- OAuthVerifier:verifier code に設定。
- PKCEVerifier:PKCE verifier code に設定。
- OAuthSettingsLocation:暗号化されたOAuth 認証値を指定された場所に永続化。
- InitiateOAuth:REFRESH に設定。
データへの接続
OAuth 設定ファイルが生成されたら、次のプロパティを設定してデータに接続します。
- OAuthSettingsLocation:暗号化されたOAuth 認証値が保存される場所に設定。アクセストークンの自動リフレッシュを有効にするために、この場所がプロバイダーに読み書きのアクセス許可を与えることを確認してください。
- InitiateOAuth:REFRESH に設定。
オプション2:OAuth 設定を転送
別のマシンに本製品 をインストールするには、認証してから、結果のOAuth 値を転送します。
- セカンドマシンに、本製品 をインストールして、次の接続プロパティセットで接続します。
- OAuthSettingsLocation:書き込み可能な場所に設定。
- InitiateOAuth:GETANDREFRESH に設定。
- OAuthClientId:アプリケーション設定のクライアントID に設定。
- OAuthClientSecret:アプリケーション設定のクライアントシークレットに設定。
- CallbackURL:アプリケーション設定のコールバックURL に設定。
- 認証する接続をテストします。生成された認証値は、OAuthSettingsLocation で指定された場所に暗号化されて書き込まれます。接続が正常にテストされたら、OAuth 設定ファイルをヘッドレスマシンにコピーします。ヘッドレスマシンで、次の接続プロパティを設定し、データに接続します。
- InitiateOAuth:REFRESH に設定。
- OAuthSettingsLocation:OAuth 設定ファイルの場所に設定。アクセストークンの自動リフレッシュを有効にするために、この場所が本製品 に読み書きのアクセス許可を与えることを確認してください。
SAML プロバイダー
本製品 は、OneLogin などのSAML ベースのID プロバイダーを汎用的にサポートしています。
AuthScheme をExternalBrowser に設定します。
OneLogin
User を認証したいSnowflake ユーザーに設定します。
接続を試みると、SAML プロバイダーは、デフォルトのWeb ブラウザでログインプロンプトを起動します。
Snowflake を認証するために、SAML プロバイダーに紐づいた認証情報を提供します。
アクセス制御の設定
認証ユーザーがシステム定義のロールにマップしている場合は、RoleName プロパティで指定します。