はじめに
Snowflakeは2025年11月にパスワードによる単一要素認証のサインインをブロックすることを発表しました。
これにより、多要素認証(MFA)がすべてのパスワードサインインのデフォルトになります。
https://www.snowflake.com/ja/blog/blocking-single-factor-password-authentification/
MFAでは、ユーザーが知っているもの(パスワード)に加えて、ユーザーが持っているもの(スマートフォンアプリ、ハードウェアトークンなど)または、ユーザー自身の特徴(生体認証)を組み合わせることで、認証の強度を大幅に向上させます。
Qlik Talend Cloud Data Integrationを使用してSnowflakeとの自動化されたデータ統合を行っている組織にとって、この変更は避けて通れない課題となっています。
従来のパスワードベースの認証に依存していたデータパイプラインは、対応を怠れば2025年11月以降に完全に停止してしまうリスクを抱えています。
そこで当記事では、Qlik Talend Cloud Data IntegrationとSnowflakeのKey-Pair接続の手順を備忘録として残しました。
公開鍵認証について
公開鍵認証とは、秘密鍵と公開鍵のペアを使って、本人確認を行う安全な認証方式です。
公開鍵はサーバーに登録し、秘密鍵は自分だけが持ち、サーバーからの認証要求に応じる際に使用します。
これにより、パスワードを使わずに安全なログインが可能になります。
以下の記事が分かりやすかったです。
https://qiita.com/kunichiko/items/ef5efdb41611d6cf7775
PKCS#1とPKCS#8の違いとSnowflakeとの関わり
項目 | PKCS#1 | PKCS#8 |
---|---|---|
対応アルゴリズム | RSAのみ | RSA, EC, DSA などの複数対応 |
主な用途 | RSA秘密鍵の保存 | 秘密鍵の統一的な保存形式 |
フォーマット例 | -----BEGIN RSA PRIVATE KEY----- |
-----BEGIN PRIVATE KEY----- |
鍵構造情報 | アルゴリズム情報は含まれない | アルゴリズム識別子を含む |
Snowflake対応 | ❌ 非対応 | ✅ 対応(Key-Pair認証に必須) |
OpenSSL生成例 | openssl genrsa -out key.pem |
openssl pkcs8 -topk8 -nocrypt ... |
SnowflakeやTalendでKey-Pair認証を使うには、必ず非暗号化のPKCS#8形式の秘密鍵を使用します。
パスフレーズ付きやPKCS#1形式は認証エラー(JWT token is invalid)を引き起こすので注意して下さい。
手順
事前準備
OpenSSLをPC(筆者はWindows)にインストールする必要があります。
インストールに関しては、以下の記事を参考にしました。
https://qiita.com/SKY-HaYaTo/items/7c40256543a4f9d14c0d
接続までの流れ
-
コマンドプロンプトを開き、秘密鍵・公開鍵を作成する箇所に移動します。(cdコマンドを使用)
-
以下のコードに従い、公開鍵・秘密鍵を生成します。
bash.sh#1. 秘密鍵(2048bit)を生成 openssl genrsa -out fresh_key.pem 2048 #2. PKCS#8形式(非暗号化)で接続用秘密鍵を作成 openssl pkcs8 -topk8 -nocrypt -in fresh_key.pem -out private_key_pkcs8.pem # 3. 公開鍵をDER形式で出力 openssl rsa -in fresh_key.pem -pubout -outform DER -out pubkey.der # 4. PowerShell(またはLinux)でBase64エンコード powershell -Command "[Convert]::ToBase64String([IO.File]::ReadAllBytes('pubkey.der'))" > pubkey_base64.txt #3補足 #-outform DER: 出力形式をDER(バイナリ)に指定 #-out pubkey.der: DER形式の公開鍵ファイル名 # バイナリ形式の公開鍵 pubkey.der を生成(SnowflakeなどがBase64エンコードで必要とする形式
-
pubkey_base.txtの中身をコピーしておきます。(Windows + Vで呼び出せる状況にしておきましょう。)
-
Snowflakeを開き、「新しいSQLワークシート」を作成後、以下のクエリを実行して下さい。(問題なければ、ステートメントは正常に実行されます。)
※ このSQL文を実行することで、Snowflakeのユーザーアカウントに公開鍵を登録します。これにより、公開鍵認証(Key-Pair認証)でログインできるようになります。bash.sh#<ユーザー名>は、Snowflakeに登録しているユーザー #<Base64でエンコードされた公開鍵>は、4でコピーした内容をペースト ALTER USER <ユーザー名> SET rsa_public_key='<Base64エンコードされた公開鍵>'; #以下のコードを実行し、"RSA_PUBLIC_KEY_FP"を確認 DESC USER <ユーザー名>;
-
以下のコマンドをコマンドプロンプトで実行し、5で確認した"RSA_PUBLIC_KEY_FP"と一致していることを確認します。
bash.shopenssl rsa -in private_key_pkcs8.pem -pubout -outform DER | openssl dgst -sha256 -binary | openssl enc -base64
-
Qlik Talend Cloud Data IntegrationとSnowflakeを接続します。
a. Qlik Talend Cloud Data Integrationを開き「+接続を作成」を押下します。
b. Snowflakeを選択します。
c. 接続設定をします。設定項目名 設定値 Server SnowflakeのアカウントのサーバーURL ※https:// は付けない Port 443 Authenticastion Mechanism Key Pair User Snowflakeに登録しているユーザー Private Key File private_key_pkcs8.pem; Private Key File Password 空欄 d. Snowflakeに存在しているWahehouseを入力し、「Load databases」を押下します。 → データベースが表示されたら接続成功です。
e. 「接続をテスト」を押下し、以下のポップアップが出ることを確認します。
f. 「追加」を押下し、接続をします。
参考資料
〇 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
おわりに
Snowflakeが単一パスワード認証を廃止する方針は、セキュリティ強化の流れに沿った重要な一歩です。
これに伴い、QlikやTalend Cloud Data Integrationといったプラットフォームとの接続においても、Key-Pair認証の導入がますます重要になります。
より安全で持続可能なデータ統合環境の構築に役立てていただければ幸いです。
次回はTalend StudioとSnowflakeのKey-Pair接続について記事を書ければと思います。
それでは皆様、ごきげんよう。