接続の確立
コネクタ内で利用可能なオブジェクトは、"cdata.snowflake" モジュールからアクセスできます。モジュールのオブジェクトを直接使用するには:
- モジュールを以下のようにインポートします。
import cdata.snowflake as mod
- 接続を確立するには、以下のような適切な接続文字列を使用してコネクタオブジェクトからconnect() メソッドを呼び出します。
mod.connect("url=https://myaccount.region.snowflakecomputing.com;user=Admin;password=test123;Database=Northwind;Warehouse=TestWarehouse;Account=Tester1;")
Snowflake への接続
認証する前に、以下のプロパティを設定してSnowflake 接続を定義します。
- URL:自身のSnowflake URL、例えばhttps://orgname-myaccount.snowflakecomputing.com。
- Legacy URL を使用する場合:https://myaccount.region.snowflakecomputing.com。
- 自身のURL を見つけるには:
- Snowflake UI の左下にある自身の名前をクリックします。
- Account ID にカーソルを合わせます。
- Copy Account URL アイコンをクリックして、アカウントURL をコピーします。
- Database(オプション):本製品 によって公開されるテーブルとビューを、特定のSnowflake データベースのものに制限します。
- Schema(オプション):本製品 によって公開されるテーブルとビューを、特定のSnowflake データベーススキーマのものに制限します。
Snowflake への認証
本製品 は、デフォルトでOAuth 認証をサポートし、フェデレーションID プロバイダーとキーベースログインの複数のオプションも提供します。
使用したい認証方法を指定するには、AuthScheme プロパティを設定します。
OAuth
OAuth で認証するには、AuthScheme をOAuth に設定します。
OAuth 認証を完了するには、カスタムOAuth アプリの作成 を参照してください。その後、次の接続プロパティを設定します。
- OAuthClientId:登録したOAuth アプリケーションのクライアントID に設定。
- OAuthClientSecret:登録したアプリケーションのクライアントシークレットに設定。
- CallbackURL:OAuth アプリ設定で構成されたリダイレクトURI に設定。
本製品 は、特定のID プロバイダー向けのOAuth ベースの認証スキームもサポートしています。 これらのスキームは標準のOAuth 設定を拡張し、ブラウザベースのログインまたはヘッドレス認証のいずれかをサポートします。 ID プロバイダーによって、以下のOAuth ベースの認証スキームが追加でサポートされます。 AuthScheme を以下の値のいずれかに設定し、必要なプロパティを構成します。
- AuthScheme=OAuthAzureAD:Azure Active Directory を使用して、非ブラウザOAuth 認証を実行します。Snowflake のセキュリティインテグレーションタイプはexternal_oauth です。
- OAuthClientId:Azure AD アプリケーションのクライアントID に設定。
- OAuthClientSecret:Azure AD アプリケーションのクライアントシークレットに設定。
- CallbackURL:Azure AD アプリで構成されたリダイレクトURI に設定。
- AzureTenant:Azure Active Directory のテナントID に設定。
- InitiateOAuth:アクセストークンを自動的に取得してリフレッシュするには、GETANDREFRESH に設定。
- AuthScheme=OAuthClientAzureAD:Azure Active Directory のクライアント資格情報付与フローを使用します。ブラウザは不要です。
- OAuthClientId:Azure AD アプリケーションのクライアントID に設定。
- OAuthClientSecret:Azure AD アプリケーションのクライアントシークレットに設定。
- AzureTenant:Azure Active Directory のテナントID に設定。
- InitiateOAuth:アクセストークンを自動的に取得してリフレッシュするには、GETANDREFRESH に設定。
- AuthScheme=OAuthOkta:Okta をID プロバイダーとしてOAuth 認証を行います。
- OAuthClientId:Okta アプリのクライアントID に設定。
- OAuthClientSecret:Okta アプリのクライアントシークレットに設定。
- CallbackURL:Okta アプリで構成されたリダイレクトURI に設定。
- OAuthAuthorizationURL:OAuth サービスの認可URL に設定。
- OAuthAccessTokenURL:OAuth アクセストークンを取得するURL に設定。
- InitiateOAuth:アクセストークンを自動的に取得してリフレッシュするには、GETANDREFRESH に設定。
- AuthScheme=OAuthClientOkta:Okta のクライアント資格情報付与フローを使用します。ブラウザは不要です。
- OAuthClientId:Okta アプリのクライアントID に設定。
- OAuthClientSecret:Okta アプリのクライアントシークレットに設定。
- OAuthAuthorizationURL:OAuth サービスの認可URL に設定。
- OAuthAccessTokenURL:OAuth アクセストークンを取得するURL に設定。
- InitiateOAuth:アクセストークンを自動的に取得してリフレッシュするには、GETANDREFRESH に設定。
- AuthScheme=OAuthOther:PingFederate などのサードパーティのID プロバイダーを使用してOAuth 認証を実行します。
- OAuthClientId:IdP のクライアントID に設定。
- OAuthClientSecret:IdP のクライアントシークレットに設定。
- CallbackURL:OAuth 設定で定義されたリダイレクトURI に設定。
- OAuthAuthorizationURL:OAuth サービスの認可URL に設定。
- OAuthAccessTokenURL:OAuth アクセストークンを取得するURL に設定。
- InitiateOAuth:アクセストークンを自動的に取得してリフレッシュするには、GETANDREFRESH に設定。
- AuthScheme=OAuthClientOther:PingFederate などのサードパーティのID プロバイダーで、クライアント資格情報付与フローを使用します。ブラウザは不要です。
- OAuthClientId:IdP のクライアントID に設定。
- OAuthClientSecret:IdP のクライアントシークレットに設定。
- OAuthAuthorizationURL:OAuth サービスの認可URL に設定。
- OAuthAccessTokenURL:OAuth アクセストークンを取得するURL に設定。
- InitiateOAuth:アクセストークンを自動的に取得してリフレッシュするには、GETANDREFRESH に設定。
- AuthScheme=OAuthJWT:署名されたJWT と証明書を使用してOAuth 認証を実行します。このスキームは通常、Azure Active Directory およびJWT ベースのアサーションをサポートするその他のIdP で使用されます。
- OAuthJWTCert:JWT の署名に使用される証明書ファイル(.pfx または.pem)へのパス。
- OAuthJWTCertType:証明書ファイルの形式(PEM、PFX)。
- OAuthClientId:OAuth アプリケーションのクライアントID。
- OAuthClientSecret:(オプション)IdP が要求する場合は、クライアントシークレット。
- AzureTenant:(Azure AD を使用する場合)Azure Active Directory のテナントID に設定。
- InitiateOAuth:アクセストークンを自動的に取得してリフレッシュするには、GETANDREFRESH に設定。
- AuthScheme=AzureMSI:Azure マネージドID(MSI)を使用してOAuth 認証を実行します。この方法は、Azure App Services や仮想マシンなどのAzure ホスティング環境で実行されるアプリケーションに最適です。
- AzureResource:Snowflake セキュリティ統合に必要なターゲットリソースID に設定。
- OAuthClientId:(オプション)ユーザーが割り当てられたマネージドID のクライアントID。
- InitiateOAuth:アクセストークンを自動的に取得してリフレッシュするには、GETANDREFRESH に設定。
デスクトップアプリ
このセクションでは、カスタム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 設定ファイルの場所に設定。アクセストークンの自動リフレッシュを有効にするために、この場所が本製品 に読み書きのアクセス許可を与えることを確認してください。
パスワード
User およびPassword をSnowflake ユーザーに設定し、AuthScheme をPASSWORD に設定します。
Note:Snowflake の2024_08 バンドル(2024年10月)以降を使用して作成されたアカウントでは、セキュリティ上の懸念によりパスワード認証はサポートされません。 代わりに、OAuth 認証やプライベートキー認証などの別の認証方法を使用してください。
プライベートキー
本製品 を使用すると、ユーザーアカウントに定義されたプライベートキーを使用してセキュアなトークンを作成することにより、キーペア認証を使用して認証できます。この方法で接続するには、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 を抽出するためのコードを独自に記述する必要があります。
SAML プロバイダー
本製品 は、OneLogin などのSAML ベースのID プロバイダーを汎用的にサポートしています。
AuthScheme をExternalBrowser に設定します。
OneLogin
User を認証したいSnowflake ユーザーに設定します。
接続を試みると、SAML プロバイダーは、デフォルトのWeb ブラウザでログインプロンプトを起動します。
Snowflake を認証するために、SAML プロバイダーに紐づいた認証情報を提供します。
アクセス制御の設定
認証ユーザーがシステム定義のロールにマップしている場合は、RoleName プロパティで指定します。