IntellijでSnowflakeのキーペア認証を使ってみる

IntellijでSnowflakeのキーペア認証を使ってみる

Clock Icon2025.05.22

はじめに

データ事業本部のkobayashiです。Intellijで使えるデータベースクライアントのDataGripでSnowflakeのキーペア接続を試してみたのでその内容をまとめます。

https://www.jetbrains.com/ja-jp/datagrip/#

Snowflakeでキーペア認証用のユーザー作成

Snowflakeにキーペア認証でアクセスするユーザーを作成しますがはじめにキーペアを作成します。キーペアの作成方法はSnowflakeの公式ドキュメンに記載されいてるものを踏襲します。

https://docs.snowflake.com/ja/user-guide/key-pair-auth

秘密鍵・公開鍵の作成

$ openssl genrsa 2048 | openssl pkcs8 -topk8 -inform PEM -out rsa_key.p8
Enter Encryption Password: # パスフレーズを入力
Verifying - Enter Encryption Password: # 確認用パスフレーズを入力
$ openssl rsa -in rsa_key.p8 -pubout -out rsa_key.pub

これで秘密鍵としてrsa_key.p8、公開鍵としてrsa_key.pubが作成されます。

rsa_key.pubを確認すると以下のような形式になっているので公開鍵をコピーしておきます。

$ cat rsa_key.pub
-----BEGIN ENCRYPTED PRIVATE KEY-----
MIIFNT
......
xmhj4=
-----END ENCRYPTED PRIVATE KEY-----

次にSnoflakeでユーザーを作成してコピーした公開鍵を割り当てます。

USE ROLE USERADMIN;
CREATE USER test_user DEFAULT_ROLE = SYSADMIN;
ALTER USER test_user SET RSA_PUBLIC_KEY = 'MIIFNT....xmhj4=';

これでSnowflakeにキーペア認証用のユーザーが作成できました。

DataGripでSnowflakeのキーペア接続してみる

それでは、Intellijで使えるデータベースクライアントのDataGripでSnowflakeのキーペア接続を設定します。

はじめにIntellijのデータベース接続設定でSnowflake接続を作成します。

スクリーンショット_2025-05-21_14_58_43

次にSSH/SSLタブを開き以下の設定を行います。

  • Use SSLをチェックする
  • 先に作成した秘密鍵の.p8ファイルをClient key fileボックスに入力し、秘密鍵のパスフレーズをClient key passwordに入力する

スクリーンショット_2025-05-21_7_13_04

次にGeneralタブを開き以下の設定を行います。

  • Hostにホスト名を入力する
  • AuthenticationAuthenticatorを入力する
  • AuthenticatorSNOWFLAKE_JWTを入力する
  • Userにユーザー名を入力する
  • Passwordを空白のままにする

スクリーンショット_2025-05-21_7_10_51

最後にAdvancedタブを開きprivate_key_fileauthenticatorのカスタムプロパティが設定されていないことを確認します。
ここに値が設定されているとSSH/SSLタブで設定したClient key fileの値やGeneralタブで設定した値と競合して接続ができません。

スクリーンショット 2025-05-21 15.09.26

これで設定が終わったのでTest Connectionを押下して接続が問題ないことを確認します。

スクリーンショット_2025-05-21_7_13_19

まとめ

Intellijで使えるデータベースクライアントのDataGripでSnowflakeのキーペア接続を試してみました。2025年の11月にパスワードによる単一要素認証を使用したSnowflakeへのサインインができなくなるので今後はこちらの方式で接続設定を行う必要があります。

最後まで読んで頂いてありがとうございました。

Share this article

facebook logohatena logotwitter logo

© Classmethod, Inc. All rights reserved.