TROCCOからSnowflakeに接続する検証を行うことがあったので、
そのときの内容をまとめます。
以下ドキュメントを参考にしています。
作業手順です。
秘密キーを生成する
ターミナルで作業します。
TROCCO側の設定では、非暗号化バージョンの秘密キー(rsa_key.p8
)を使います。
非暗号化バージョンを生成するには、次のコマンドを使用します。
-nocrypt
をつけるのがポイントです。
openssl genrsa 2048 | openssl pkcs8 -topk8 -inform PEM -out rsa_key.p8 -nocrypt
秘密キーの内容を表示してみます。
cat rsa_key.p8
以下のような出力が確認できます。
-----BEGIN PRIVATE KEY-----
~~~
-----END PRIVATE KEY-----
この<出力1>は、TROCCO接続情報を設定するときに利用するのでメモしておきます。
(Snowflake側設定では使いません)
公開キーを生成する
ターミナルで作業を続けます。
以下のコマンドを実行し、先程の秘密キーから公開キー(rsa_key.pub
)を作成します。
openssl rsa -in rsa_key.p8 -pubout -out rsa_key.pub
公開キーの内容を、Snowflake側設定することを見越して加工し出力します。
cat rsa_key.pub | \
tr -d "\n" | \
sed "s/-----BEGIN PUBLIC KEY-----//g" | \
sed "s/-----END PUBLIC KEY-----//g"
この<出力2>は、Snowflakeでユーザー設定クエリ実行時に利用するのでメモしておきます。
Snowflakeユーザーに公開キーを割り当てる
Snowflakeのコンソールにログインし、ワークシートを開きます。
作業環境として以下が準備できている状況とします。
-
SECURITYADMIN
ロールをもつユーザーでクエリを実行します - TROCCO用のユーザー・ロール(
my_service_user
,my_service_role
)は作成済みであるとします
USER ROLE SECURITYADMIN;
-- キーペア認証を行いたいユーザー(`my_service_user`)に、公開キー(`'MII...'`)を割り当てる
ALTER USER my_service_user SET RSA_PUBLIC_KEY='<出力2>';
TROCCOのSnowflake接続情報を作成する
TROCCOのコンソールにログインします。
メニュー
> 接続情報
> 新規作成
> Snowflake
を選択します。
ここまで作成した情報をもとに、Snowflake接続情報を設定します。
- ホスト:
<ORGANIZATION>-<ACCOUNT_NAME>.snowflakecomputing.com
※ SnowflakeのコンソールURLから確認できます
https://app.snowflake.com/<ORGANIZATION>/<ACCOUNT_NAME>/
※以下クエリを実行しても確認できます。
SELECT CURRENT_ORGANIZATION_NAME() AS ORGANIZATION,
CURRENT_ACCOUNT_NAME() AS ACCOUNT_NAME --こちらがアカウント名
-- CURRENT_ACCOUNT() AS account_id --これはアカウントロケーターなので注意
;
- ユーザー:
my_service_user
- 認証方式:
キーペア認証
- 秘密鍵:
<出力1> (非暗号化秘密キー全文)
- ロール:
MY_SERVICE_ROLE
※ロール名は大文字で指定しないとエラーになります・!
接続確認
最後に「接続を確認」をクリックし、
接続結果
☑ホストの疎通確認