本記事ではCData Snowflake Drivers で、Snowflake への接続時にキーペア認証を行う方法を紹介します。
CData Snowflake Drivers はSnowflake がサポートする様々な認証方式が使用できます。このうち「キーペア認証」はRSA のキーペアを使用した認証方式です。ドライバーからキーペア認証で接続するにはキーペアの秘密鍵が手元にあり、ログインユーザに公開鍵が割り当てられている必要があります。本記事ではキーペアの生成方法から説明します。
キーペアの作成と公開鍵の割り当て
Snowflake キーペア認証の設定方法はこちらのマニュアルページで詳しく書かれています。はじめにキーペアを生成します。マニュアルページに書かれている通りにOpenssl で秘密鍵と公開鍵をそれぞれ生成します。
秘密鍵の生成(暗号化なし)
$ openssl genrsa 2048 | openssl pkcs8 -topk8 -inform PEM -out rsa_key.p8 -nocrypt
秘密鍵の生成(暗号化あり)
$ openssl genrsa 2048 | openssl pkcs8 -topk8 -v2 des3 -inform PEM -out rsa_key.p8
公開鍵の生成
$ openssl rsa -in rsa_key.p8 -pubout -out rsa_key.pub
つづいてSnowflake ユーザへの公開鍵を割り当てます。こちらもマニュアルページに書かれている通りACCOUNTADMIN 権限でALTER USER コマンドを実行します。
ALTER USER TESTUSRE SET RSA_PUBLIC_KEY='<公開鍵>';
実行例
これで接続の準備は完了です。
CData Snowflake Drivers でのキーペア認証の設定
ドライバーでOAuth 認証を行うには、AuthSchem プロパティを「PrivateKey」に設定し、認証に必要な情報を設定します。以下にキーペア認証に必要なプロパティを示します。
プロパティ名 |
説明 |
Url |
SnowflakeのURL |
Warehouse |
接続先Warehouse |
User |
公開鍵が割り当てられているログインユーザの名前 |
AuthScheme |
「PrivateKey」を設定 |
PrivateKey |
秘密鍵ファイル(今回の例ではrsa_key.p8)のファイルパス |
PrivateKeyType |
秘密鍵ファイルの形式(今回の例では「PEMKEY_FILE」) |
PrivateKeyPassword |
秘密鍵ファイルが暗号化されている場合はパスワードを設定 |
JDBC / ODBC / Connect Cloud での設定例
JDBC Driver の接続文字列の例を以下に示します。
jdbc:cdata:snowflake:url=https://xxxxxx.us-east-1.snowflakecomputing.com;Warehouse=TEST_WAREHOUSE;User=TESTUSER;AuthScheme=PrivateKey;PrivateKey="C:\SnowflakePrivateKey\rsa_key.p8";PrivateKeyType=PEMKEY_FILE;PrivateKeyPassword="*****";
ODBC Driver のDSN 設定例を以下に示します。
Connect Cloud でのコネクション設定例を以下に示します。
秘密鍵のファイルを直接参照できないため、[Private Key Type]を「PEMKEY_BLOB」に設定し、[Private Key]に暗号化された秘密鍵の文字列を直接設定してください。暗号化されていない秘密鍵は使用できません。
おわりに
今回はCData Snowflake Drivers でキーペア認証を行う方法を説明しました。CData Snowflake Drivers は30日間無料でお使いいただけますのでSnowflake との連携をご検討の方はぜひお試しください。
Snowflake Drivers はOAuth 認証にも対応しております。OAuth 認証での接続はこちらの記事を参考にしてください。
関連コンテンツ