はじめに
当記事は以下の内容のAnother Versionみたいな位置づけです。
https://qiita.com/kazu_1994/items/452518ec97bbc623bdca
Talend Studioに適応中のパッチがR2025-04を境に、Key-Pair接続の方式が変わります。
今回のTalend StudioのパッチはR2025-8なので、新式の適用方法を当記事では備忘録として残しました。
手順
事前準備
OpenSSLをPC(筆者はWindows)にインストールする必要があります。
インストールに関しては、以下の記事を参考にしました。
https://qiita.com/SKY-HaYaTo/items/7c40256543a4f9d14c0d
Talend StudioとSnowflakeの接続までの流れ
-
コマンドプロンプトを開き、秘密鍵・公開鍵を作成する箇所に移動します。
-
以下のコードを入力し、秘密鍵・公開鍵を作成します。(秘密鍵を作成する際のパスワードは後に使用するので控えておいてください。)
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# 今回のための即席ユーザー CREATE ROLE TALEND_ROLE; --ロールの作成 GRANT ROLE TALEND_ROLE TO ROLE ACCOUNTADMIN; --権限は一旦上位のものを委譲しておく CREATE USER TALEND_USER PASSWORD = 'PASSWORD' -- ダミーパスワードを設定 LOGIN_NAME = 'TALEND_USER' DISPLAY_NAME = 'TALEND_USER' DEFAULT_ROLE = TALEND_ROLE DEFAULT_WAREHOUSE = 'TALEND_WH' -- 適切なウェアハウスを指定 MUST_CHANGE_PASSWORD = FALSE; GRANT ROLE TALEND_ROLE TO USER TALEND_USER; -- 作成したユーザーにロールを付与 #〇〇には生成したrsa_key.pubの内容をペースト ※ -----BEGIN PUBLIC KEY-----の文字ごと ALTER USER TALEND_USER SET RSA_PUBLIC_KEY='○○'; DESC USER TALEND_USER; --詳細の表示 CREATE DATABASE TALEND_DB; --データベースの作成 CREATE SCHEMA TALEND_DB.TALEND_SCHEMA; --スキーマの作成 -- TALEND_ROLEへの権限付与 GRANT USAGE ON DATABASE TALEND_DB TO ROLE TALEND_ROLE; GRANT USAGE ON SCHEMA TALEND_DB.TALEND_SCHEMA TO ROLE TALEND_ROLE; GRANT SELECT ON ALL TABLES IN SCHEMA TALEND_DB.TALEND_SCHEMA TO ROLE TALEND_ROLE; GRANT SELECT ON FUTURE TABLES IN SCHEMA TALEND_DB.TALEND_SCHEMA TO ROLE TALEND_ROLE; GRANT USAGE ON WAREHOUSE TALEND_WH TO ROLE TALEND_ROLE;
-
Talendのインストールフォルダから、.iniファイルを探します。
※今回はWindowsで設定するので以下の.iniファイルとなります。
-
.iniファイルを開き、末尾に以下のコードを追加します。
bash.sh-Dnet.snowflake.jdbc.enableBouncyCastle=true
-
Talend Studioを起動し、以下に従ってSnowflake作成用のメタデータを作成します。
名前 項目 アカウント Snowflakeのアカウント識別子 Authentication Type Basic ユーザーID Snowflakeに登録しているユーザー パスワード ダミー(使用しない) ウェアハウス Snowflakeに存在しているウェアハウス名 スキーマ ウェアハウス内のスキーマ名 データベース ウェアハウス内のデータベース名 追加のJDBCパラメーター private_key_file=<2で作成したrsa_key.p8のパス>&private_key_file_pwd=<2のkey作成時に設定したパスワード> ※ "advanced..."を押下すると新たなポップアップが表示されるのでそこで設定
-
Talend StudioでETLジョブを作成します。
a. 以下のコンポーネントをデザインワークスペースに配置して下さい。
・tSnowflakeConnection(作成したメタデータからドラッグ&ドロップ)
・tJavab. コンポーネント同士を"OnSubjobOk"で繋ぎます。
c. 実行タブの「詳細設定」に移動し、5のコードをJVM引数に加えます。
※ 実行箇所にJVM引数を加えないと、実行できません。Remote Engineで実行する際は、設定ファイルにJVMファイルを加えて下さい。
参考資料
〇 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認証はこれからの主流です。
パスワード廃止の流れを見据えて、より強固で自動化に強い連携を進めるための第一歩になれば幸いです。
それでは皆様、ごきげんよう。