1. はじめに(背景と課題)
Snowflakeではセキュリティ強化が進み、パスワードのみの認証が段階的に制限・廃止されつつあります。運用環境によってバッチやETLの自動処理でパスワード認証が使いづらい/使えないケースが増えていると思います。
そこで、Pentaho Data Integration(PDI)からキーペア認証を使ってSnowflakeへ接続する方法をまとめました。
2. パスワード以外の接続方法の選択肢
Snowflakeのパスワード以外の認証には、たとえば以下があります。
- MFA(多要素認証)
- キーペア(Key Pair)認証
- Programmatic access token(PAT)
- OAuth / SSO(IdP連携)
この記事では、バッチ処理やETLで扱いやすい「キーペア認証」の手順を説明します。
3. 前提
キーペア(公開鍵/秘密鍵)の作成とSnowflakeユーザーへの公開鍵登録は済んでいるものとします。
詳しい作成・登録手順はSnowflakeのドキュメントや先人のQiita記事が充実していますので、以下を参照してください。
- 公式:キーペア認証とキーペアローテーション
https://docs.snowflake.com/ja/user-guide/key-pair-auth - Qiita例:SnowflakeのMFAを使わない認証について試してみる(その1:キーペア認証)
https://qiita.com/koushidahira41/items/27b1afce083fbeeef25c
4. Pentahoでの接続方法(キーペア認証)
Pentaho(PDI/Spoon)のデータベース接続画面で、Snowflakeに対してキーペア認証を設定します。ポイントは [オプション]タブでJDBCプロパティを追加する ことです。
4.1 事前準備
- 接続先のアカウントURL、ユーザー名、デフォルトのウェアハウス/データベース/スキーマを把握しておきます。
4.2 設定手順
- Spoonを起動し、データ変換またはジョブの定義画面を開きます
- 左ペインの左上の[ビュー]→[データベース接続]を右クリックして[新規]をクリックします。
- [一般]タブをクリックし、接続タイプ:[Snowflake]、アクセス:[Native(JDBC)] を選択後、通常の項目(接続名、ホスト名、Warehouse、データベース名、ポート番号、ユーザー名)を入力します。パスワードは空欄にします。
Warehouse、データベース名、ユーザー名は大文字・小文字を意識せずに作成したのであれば大文字を推奨します。 (小文字にするとテーブル一覧を取得できないこともあるようです。)
4. [オプション]タブで以下のJDBCプロパティを追加します。
| # | プロパティ名 | 設定値 | 備考 |
|---|---|---|---|
| 1 | authenticator | snowflake_jwt | |
| 2 | private_key_file | <秘密鍵ファイルのパス> | Windowsでもフォルダの区切り文字を'/'にします。 例) C:/work/snowkey.txt |
| 3 | private_key_file_pwd | <秘密鍵ファイルのパスワード> | パスワード付きの秘密鍵ファイルを作成した場合に指定します。パスワードを付けていないのであればこのプロパティは不要です。 |
パスワード有りの場合は以下のような問題が発生することがあるようです。
https://community.snowflake.com/s/article/Key-pair-authentication-failure-due-to-ObjectIdentifier-or-SecretKeyFactory-not-available-errors
5. [テスト]で接続確認し成功したら[OK]をクリックしてダイアログを閉じます
5. 実行例
Pentahoのデータ変換/ジョブからSnowflakeにクエリを発行し、結果が取得できることを確認します。接続テストに成功していれば、[テーブル入力]ステップなどで読み書きが可能です。
参考リンク
- キーペア認証の作成・運用
- Pentahoドキュメント:Connect to Snowflake using strong authentication
https://docs.pentaho.com/install/pentaho-configuration/tasks-to-be-performed-by-a-pentaho-administrator/define-data-connections/enter-database-connection-information/connect-to-snowflake-using-strong-authentication - Snowflake JDBC:接続パラメータ一覧 (
authenticator=snowflake_jwt、private_key_file、private_key_file_pwdほか)
https://docs.snowflake.com/en/developer-guide/jdbc/jdbc-parameters
まとめ
Pentahoのオプションタブにプロパティを追加することで、Snowflakeのキーペア認証に移行できます。
他社商品名、商標等の引用に関する表示
- Snowflakeは、Snowflake Inc.の米国およびその他の国における商標または登録商標です。
- Pentahoは、Hitachi Vantara LLCの商標または登録商標です。
- HITACHIは,株式会社 日立製作所の商標または登録商標です。
- その他記載の会社名,製品名などは,それぞれの会社の商標もしくは登録商標です



