はじめに
Snowflakeは2025年11月にパスワードによる単一要素認証のサインインをブロックすることを発表しました。
これにより、多要素認証(MFA)がすべてのパスワードサインインのデフォルトになります。
https://www.snowflake.com/ja/blog/blocking-single-factor-password-authentification/
Talend Studioを使用してSnowflakeとの接続をしている組織にとって、この変更は避けて通れない課題となっています。
従来のパスワードベースの認証に依存していたETL処理は、対応を怠れば2025年11月以降に完全に停止してしまうリスクを抱えています。
そこで当記事では、Talend StudioとSnowflakeのKey-Pair接続(StudioのパッチがR2025-4以前)の手順を備忘録として残しました。
Talend Studioのパッチと設定の場合分け
Talend Studioに適応中のパッチがR2025-04を境に、Key-Pair接続の方式が変わります。
筆者はR2024-11なので、旧式の適用方法を当記事では備忘録として残しました。
旧式では秘密鍵の直接的な指定は不可能であるため、KeyStore(PKCS#12)を使用して接続する必要があります。
秘密鍵・公開鍵の概念については、個人的に以下の記事が分かりやすかったです。
https://qiita.com/kunichiko/items/ef5efdb41611d6cf7775
KeyStoreとは
簡単に言うと、秘密鍵や証明書などの機密情報を、安全に保管・管理するための“金庫”のようなものです。
秘密鍵や公開鍵などの暗号化キーを安全に保管したり、SSL/TLS通信で使用する証明書を保管します。
SSL/TLS通信の理解については、以下の記事をおすすめします。
https://www.kagoya.jp/howto/it-glossary/security/ssl/
手順
事前準備
OpenSSLをPC(筆者はWindows)にインストールする必要があります。
インストールに関しては、以下の記事を参考にしました。
https://qiita.com/SKY-HaYaTo/items/7c40256543a4f9d14c0d
Talend StudioとSnowflakeの接続までの流れ
-
コマンドプロンプトを開き、秘密鍵・公開鍵を作成する箇所に移動します。(cdコマンドを使用)
-
以下のコードを入力し、秘密鍵・公開鍵を作成します。
bash.sh#秘密鍵を作成 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を開き、「新しいSQLワークシート」を作成後、以下のクエリを実行します。(問題なければ、ステートメントは正常に実行されます。)
bash.sh#<ユーザー名>は、Snowflakeに登録しているユーザー #〇〇には生成したrsa_key.pubの内容をペースト ※ -----BEGIN PUBLIC KEY-----の文字ごと ALTER USER <ユーザー名> SET RSA_PUBLIC_KEY='〇〇';
-
コマンドプロンプトに移動して、KeyStoreを作成します。
※ 上記のとおり、旧式では、秘密鍵の直接的な指定は不可能であるため、KeyStore(PKCS#12)を使用して接続をする必要があります。bash.sh#CSR作成 #当コマンドを実行後、証明書作成のための情報が求められるが、Talend StudioとSnowflakeの接続に #直接関係ないため、適当でOK openssl req -new -key rsa_key.p8 -out cert.csr # 自己署名証明書を作成 openssl x509 -signkey rsa_key.p8 -days 365 -req -in cert.csr -out cert.cer -sha256 # Keystore(pfx)形式を作成 # エイリアスを"talend"として設定 openssl pkcs12 -export -in cert.cer -inkey rsa_key.p8 -out mykeystore.pfx -password pass:yourpassword -name talend # Talend用にp12形式へ変換 # yourpasswordは自分の任意のパスワードに変換 keytool -importkeystore -deststorepass yourpassword -destkeystore mykeystore.p12 -srckeystore mykeystore.pfx -srcstoretype PKCS12 -srcstorepass yourpassword
-
Talend Studioの設定を行います。
a. Talend Studioを開きます。
b. Preference > Talend > Security > SSLを開きます。
c. 以下の項目を設定します。KeyStore設定項目名 値 パス mykeystore.p12へのパス パスワード 4で設定した任意のパスワード キーストアのタイプ PKCS12 d. 「適用して閉じる」を押下します。
e. DBのメタデータ(Snowflake接続)をするため、「接続を作成」を選択します。
f. Snowflakeを選択します。
g. 接続設定をします。設定項目名 値 名前 登録するメタデータ名(任意) アカウント Snowflakeのアカウント識別子 Authentication Type Key Pair ユーザーID Snowflakeに登録しているユーザー Key Alias Talend ウェアハウス Snowflakeに存在しているウェアハウス名 スキーマ ウェアハウス内のスキーマ名 データベース ウェアハウス内のデータベース名 h. 「Test connection」を押下し、「接続成功」のポップアップが出ることを確認します。
i. 接続します。 -
Talend StudioでETLジョブを作成します。
a. 以下のコンポーネントをデザインワークスペースに配置して下さい。
・tSetKeyStore
・tSnowflakeConnection(作成したメタデータからドラッグ&ドロップ)
・tJavab. tSetKeyStoreを以下のように設定して下さい。
・KeyStoreパスワードは4のTalend用にp12形式へ変換する際のパスワードを設定します。
参考資料
〇 Snowflakeでキーペア認証を行う
https://www.slideshare.net/slideshow/snowflake-talend-studio-qlik-cloud-qlik-replicate/281614802
〇 Key-pair authentication and key-pair rotation
https://docs.snowflake.com/en/user-guide/key-pair-auth
おわりに
Talend CloudとSnowflakeの連携において、Key-Pair認証はこれからの主流です。
パスワード廃止の流れを見据えて、より強固で自動化に強い連携を進めるための第一歩になれば幸いです。
それでは皆様、ごきげんよう。