
SnowflakeのODBCドライバのKeyPair認証設定方法について
本記事は、Alteryx用に提供されているSimba ODBCドライバのKeyPair設定ですが、通常のSnowflakeのODBCドライバの手順と同一になります。
昨今(2025年2月時点)、Snowflakeのセキュリティ設定が厳しくなり、基本的にMFA必須という流れになっています。しかしながら、自動化を行うようなシステムでの接続は、MFA認証などできません。そこでIDとパスワードというセキュリティ的に脆弱なものではないもので接続しましょう、ということでキーペア認証(Key Pair)が推奨されています。
本記事では、ODBCドライバのKeyPair認証の設定方法について解説します。
前提条件
- Snowflake側で秘密鍵を生成していること
- 管理者権限必要(ODBC設定、レジストリエディタを使用します)
つまり、ここでは秘密鍵の生成方法は取り扱いません。秘密鍵の生成についてはこちらのSnowflake社ドキュメント を御覧ください。
具体的なODBCへの設定手順
基本的な流れは以下のとおりです。
- ODBCドライバの設定を行う
- レジストリエディタで作成したODBCドライバの設定を変更する
- ODBCドライバの接続テストを行う
1.ODBCドライバの設定を行う
すでに作成済みのODBCドライバを使うのであれば本手順はスキップ可能ですが、追加の作業があるのでご注意ください。
まず、ODBCデータソースアドミニストレータ(ODBCデータソース(64ビット))を起動します。
すでにODBCドライバが登録されている場合は、それをダブルクリックします。そうでない場合は新規作成します。
Simbaの場合は「Simba Snowflake ODBC Driver」を選択します。通常のドライバの場合は、「SnowflakeDSIIDriver」になります。
以下のように必要事項を入力します。
ここでのポイントは、Authenticatorに「SNOWFLAKE_JWT」と入力することです。それ以外は通常のODBCドライバと設定は変わりません。新規作成の場合も、既存設定の再利用の場合もOKボタンで一度決定します。
2.レジストリエディタで作成したODBCドライバの設定を変更する
次に、レジストリエディタを起動し、設定を行っていきます。レジストリエディタはWindowsの検索ボックスで「れじすとり」などと入力すれば、候補として出てくると思います。
これを起動します。
目的のレジストリは、「コンピューター\HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBC.INI\」です。ここを開くと、先程ODBCデータソースアドミニストレータで作成したODBCの設定項目があるはずです。ここをクリックします。今回は「Snowflake_PROD_Key_Pair」という項目名にしています。
ここで、新規の項目を作成していきます。今回作った項目を選択後、レジストリエディタのメニューから「編集」-「新規」-「文字列値」を選択します。
ここで、項目名を「PRIV_KEY_FILE」とします。
この作成された項目をダブルクリックし、メニューを開きます。
ここで、値のデータとして、秘密鍵のファイルの格納パスを入力します。
オプションとはなっていますが、公式の手順にあるので、さらに項目を追加しましょう。先ほどと同じように新規の項目を作成していきます。レジストリエディタのメニューから「編集」-「新規」-「文字列値」を選択し、名称を「LogLevel」とします。再度項目をダブルクリックし、出てきたダイアログに「6」と入力します。
秘密鍵にパスワードをかけていない場合はこれで終了です。
一方で、秘密鍵にパスワードをかけている場合はさらに追加の作業があります。
再び新規の項目を作成していきます。レジストリエディタのメニューから「編集」-「新規」-「文字列値」を選択し、名称を「PRIV_KEY_FILE_PWD」とします。再度項目をダブルクリックし、出てきたダイアログに秘密鍵作成時のパスワードを入力します。
これで以下のような形で「PRIV_KEY_FILE」「LogLevel」そして秘密鍵にパスワードをかけている場合は「PRIV_KEY_FILE_PWD」という項目が作成されていればオッケーです。
3.ODBCドライバの接続テストを行う
最後に接続テストです。
ODBCデータソースアドミニストレータにて、設定を開きます。左下にテストボタンがあるのでクリックしましょう。
なお、ここではパスワードは不要です。以下のように「SUCCESS!」と出ればオッケーです。
注意点
使用するツールによっては、「[Simba][DSI] (20032) Required setting 'PWD' is not present in the connection settings.」というエラーが出るケースがあります(AlteryxのDCMを使わないODBC接続の場合など)。この場合、パスワードをレジストリで埋め込む必要があります(さらに、ツール側の設定でもパスワードが必要なケースがあります)。
再び新規の項目を作成していきます。レジストリエディタのメニューから「編集」-「新規」-「文字列値」を選択し、名称を「PWD」とします。再度項目をダブルクリックし、出てきたダイアログに接続するアカウントのパスワードを入力します(ここで入力するパスワードはKeyPairでは使われないためダミーのパスワードでオッケーです)。
とはいえ、本来KeyPairの場合はアカウントのパスワードは使わないので、本来必要ないのですが、どうやらID/Passがセットのなごりなのか、パスワードが形式的に必要なようです。
参考URL
- Snowflake Knowledge Base「How to set up ODBC Driver with key pair authentication to connect to Snowflake on Windows 」
- Snowflake Knowledge Base「SQL execution error: New public key rejected by current policy. Reason: 'Invalid public key'" when configuring key-pair authentication 」
- Snowflake Knowledge Base「ERROR: "[Snowflake][DSI] (20032) Required setting 'PWD' is not present in the connection settings.(#20032) with windows ODBC snowflake driver." while connecting to any third-party client using Snowflake ODBC driver 」