はじめに
Snowflakeの単一要素パスワード認証が廃止になるため、Tableau→Snowflakeへキーペア認証を使用して接続してみたいと思います。
https://www.snowflake.com/ja/blog/blocking-single-factor-password-authentification/
キーペア認証の手順についてはSnowflakeの公式ドキュメントがあるので、こちらを参考にしながら進めていきます!
参考:https://docs.snowflake.com/ja/user-guide/key-pair-auth
使用環境
Tableau Desktopバージョン:2024.3
※Tableauがキーペア認証に対応したのがバージョン2024.3~
参考:https://help.tableau.com/current/pro/desktop/ja-jp/examples_snowflake.htm
Snowflake ODBCドライバー:snowflake64_odbc-3.5.0.msi
OpenSSL:Win64 OpenSSL v3.4.0
Opensslは初めてダウンロードしたので、その手順については後述しようと思います。
OpenSSLのダウンロード
こちらからインストーラーをダウンロードできます。
https://slproweb.com/products/Win32OpenSSL.html
ダウンロード後openssl.exeが格納されるインストール先のbinディレクトリを環境変数「PATH」に設定します。
最後にPowerShell等で以下コマンドを実行し、バージョン情報が出力されれば完了です!
openssl version
環境の準備ができたので、本題のキーペア認証に必要な設定をしていきます。
①秘密鍵/公開鍵の作成
まずは秘密鍵の作成を行います。
秘密鍵は暗号化or非暗号化が選べますが、安全性を高めるため今回は暗号化していきたいと思います。
openssl genrsa 2048 | openssl pkcs8 -topk8 -v2 des3 -inform PEM -out rsa_key.p8
続いて暗号化パスワードが求められるので入力
Enter Encryption Password:
もう一度同じパスワードを入力
Verifying - Enter Encryption Password:
PowerShellでログイン中のユーザーと同じ場所に秘密鍵が生成されていると思います。
続いて公開鍵の作成です。
openssl rsa -in rsa_key.p8 -pubout -out rsa_key.pub
先ほど作成した秘密鍵を暗号化したときに使用したパスワードを入力します。
Enter pass phrase for rsa_key.p8:
以上で秘密鍵/公開鍵の作成は完了です!
②Snowflakeユーザーの作成&公開鍵の割り当て
Snowflakeでキーペア認証用のユーザーを作成します。
USE ROLE USERADMIN;
CREATE USER TOOL_USER DEFAULT_ROLE = SYSADMIN TYPE = SERVICE;
GRANT ROLE SYSADMIN TO USER TOOL_USER;
※ここでは一旦SYSADMINを付与しておきます
続いて、以下コマンドで上記の手順で作成したユーザーに公開鍵を割り当てます。
ALTER USER TOOL_USER SET RSA_PUBLIC_KEY = 'XXXXX';
公開鍵に改行が含まれている場合、改行を削除して一行にします。
以上でSnowflakeの設定も完了です!
③Tableau Desktop→Snowflakeへキーペア認証で接続
①②の準備ができたのでTableau Desktopからキーペア認証で接続してみます。
Tableau DesktopでSnowflakeへの接続設定画面を開くと、
「キーペアを使用したサインイン」がありますね!
こちらを選択して、次の手順に進みます。
以下情報の入力を求められるので、適宜入力していきます。
サーバー:SnowflakeのログインURLの、https:// 以降の文字列です
秘密キーファイル:手順①で取得した秘密鍵の場所を指定します
秘密キーファイルのパスワード:手順①で設定した暗号化パスワードを指定します
キーペア認証を使用して接続することができました!
おわりに
今回初めてキーペア認証を使用した接続をするのでビビってましたが簡単に設定できました!
今後SERVICEユーザーにはOauth認証が必須になってくると思いますが、事前にやり方を把握できていれば安心ですね。
ただ、上記手順の中には記載していませんが手順①②でフィンガープリントを取得し、
一致するか突き合わせてみたのですが一致しませんでした。
でも接続は問題なくできるという謎状態。。
何が原因か調査中なので、分かり次第この記事はアップデート予定です。
最後まで読んでいただきありがとうございました