やりたいこと
Snowflakeのkeypair認証を設定するためのメモです。
OpenSSLをインストール
・MACの場合はデフォルトで入っている
・Windowsの場合は、Downloadする必要がある
https://slproweb.com/products/Win32OpenSSL.html
・環境変数に、opensslのpathを追加
・ windows + Rを押して、「SystemPropertiesAdvanced」を入れてenter
・[詳細設定]タブにある[環境変数]ボタンをクリックする。

・「システム環境変数」の「path」に、opensslのBINを追加

・最後、cmdで、「openssl version」を実行して、Versionを確認できれば、opensslのインストールは完了した。

秘密keyの生成
・以下のコマンドを実行して、no script keyを生成
openssl genrsa 2048 | openssl pkcs8 -topk8 -inform PEM -out rsa_key.p8 -nocrypt
JavaScript
・暗号化キーを生成する場合は以下のコマンド
openssl genrsa 2048 | openssl pkcs8 -topk8 -v2 des3 -inform PEM -out rsa_key.p8
JavaScript公開キーの生成
・以下のコマンドを実行して、公開キーを生成
openssl rsa -in rsa_key.p8 -pubout -out rsa_key.pub
JavaScriptsnowflakeユーザーに公開キーを割り当てる
・roleとuserを作成
set quollio_role = 'stg_quollio_agent_role';
CREATE OR REPLACE ROLE identifier($quollio_role);
GRANT USAGE
ON WAREHOUSE STG_GENERAL_S
TO ROLE identifier($quollio_role);
GRANT OPERATE
ON WAREHOUSE STG_GENERAL_S
TO ROLE identifier($quollio_role);
SHOW SHARES;
-- create user
CREATE OR REPLACE USER stg_quollio_user
PASSWORD = '$C3ub3oZ5TRo'
MUST_CHANGE_PASSWORD = FALSE
DEFAULT_ROLE = stg_quollio_agent_role
DEFAULT_WAREHOUSE = STG_GENERAL_S
DEFAULT_NAMESPACE = STG_DXP_DMD.DENODO_LOG_SYS
COMMENT = 'quollio metadata agent user';
-- GRANT ROLE TO USER
GRANT ROLE identifier($quollio_role) TO USER stg_quollio_user;
SQL・ユーザーにpublic keyを付与
ALTER USER stg_quollio_user SET RSA_PUBLIC_KEY='{public key}';
DESC USER stg_quollio_user;
-- RSA keyの認証IDを作成
SELECT SUBSTR((SELECT "value" FROM TABLE(RESULT_SCAN(LAST_QUERY_ID()))
WHERE "property" = 'RSA_PUBLIC_KEY_FP'), LEN('SHA256:') + 1);
SQL・ローカルで、以下のコマンドを実行して、認証IDを作成して、上記と比較
openssl rsa -pubin -in rsa_key.pub -outform DER | openssl dgst -sha256 -binary | openssl enc -base64
SQL