- 22 Apr 2022
- 2 分で読み終わります
-
印刷
-
ダークライト
Snowflakeの接続情報
- 更新日 22 Apr 2022
- 2 分で読み終わります
-
印刷
-
ダークライト
概要
Snowflakeの接続情報を設定する際のヘルプページとなります。
入力項目
項目名 | 必須 | 内容 |
---|---|---|
名前 | Yes | trocco内部で利用する接続情報の名前を入力してください。 |
メモ | No | trocco内部で利用する接続情報のメモを入力してください。 |
接続先ホスト | Yes | Snowflakeのホストを入力してください。 具体例は以下画像をご参照ください。 ![]() |
ユーザー | Yes | Snowflakeのユーザー名を入力してください。 |
認証方式 | Yes | 転送設定用の設定ではユーザ・パスワード認証を、データマート用の設定ではキーペア認証を選択してください。 |
パスワード | Yes | Snowflakeのパスワードを入力してください。 |
秘密鍵 | No | Snowflakeの秘密鍵を入力してください。 ※キーペア認証のときは必須となります。 |
共有するグループ | No | trocco内部で利用する接続情報の共有の有無と対象のグループを入力してください。 |
補足
権限について
- Snowflakeを利用するにあたり、ロールに必要な権限を付与し、ユーザーにロールを付与してください。
転送設定の利用に必要な権限
転送元にSnowflakeを選択した場合に必要な権限
項目 | 権限 | 内容 | 備考 |
---|---|---|---|
仮想ウェアハウス権限 | OPERATE | ウェアハウスの状態(停止、開始、一時停止、再開)を変更し、実行中のクエリを中止できるようにします。 | |
仮想ウェアハウス権限 | USAGE | 仮想ウェアハウスを使用し、その結果として、ウェアハウスでクエリを実行します。 | |
データベース権限 | USAGE | データベースを使用できるようにします。データベース内のオブジェクトを表示またはアクションを実行するには、追加の権限が必要です。 | |
スキーマ権限 | USAGE | スキーマを使用できるようにします。 | |
テーブル権限 | SELECT | テーブルでSELECTステートメントを実行できるようにします。 |
サンプルクエリ
- 作成するロール
TROCCO_INPUT_ROLE
- ロールを付与するユーザー
TROCCO_USER
- 対象ウェアハウス
TROCCO_WAREHOUSE
- 対象データベース
TROCCO_DATABASE
- 対象スキーマ
PUBLIC
- 対象テーブル
TROCCO_TABLE
- ※ サンプルで指定されているロール、ユーザー、対象ウェアハウス、データベース、スキーマ、テーブル名は実際に利用する内容に書き換えてください。
-- ロールを作成可能なロールに切り替える
USE ROLE ACCOUNTADMIN;
-- ロールを新規作成
CREATE ROLE TROCCO_INPUT_ROLE;
-- 指定したユーザーにロールを使用可能にする
GRANT ROLE TROCCO_INPUT_ROLE TO USER TROCCO_USER;
-- ユーザーに対し、作成したロールをデフォルトで使用するロールにする
ALTER USER TROCCO_USER SET DEFAULT_ROLE = TROCCO_INPUT_ROLE;
-- ウェアハウスの利用権限をロールに付与
GRANT USAGE ON WAREHOUSE TROCCO_WAREHOUSE TO ROLE TROCCO_INPUT_ROLE;
GRANT OPERATE ON WAREHOUSE TROCCO_WAREHOUSE TO ROLE TROCCO_INPUT_ROLE;
-- データベースの利用権限をロールに付与
GRANT USAGE ON DATABASE TROCCO_DATABASE TO ROLE TROCCO_INPUT_ROLE;
-- スキーマの利用権限をロールに付与
GRANT USAGE ON SCHEMA TROCCO_DATABASE.PUBLIC TO ROLE TROCCO_INPUT_ROLE;
-- スキーマの全テーブルに対してSELECTクエリを実行可能にする権限をロールに付与
GRANT SELECT ON ALL TABLES IN SCHEMA TROCCO_DATABASE.PUBLIC TO ROLE TROCCO_INPUT_ROLE;
-- ※個別のテーブルのみSELECTクエリを実行可能にする権限をロールに付与する場合
GRANT SELECT on TABLE TROCCO_DATABASE.PUBLIC.TROCCO_TABLE TO ROLE TROCCO_INPUT_ROLE;
転送先にSnowflakeを選択した場合に必要な権限
項目 | 権限 | 内容 | 備考 |
---|---|---|---|
仮想ウェアハウス権限 | OPERATE | ウェアハウスの状態(停止、開始、一時停止、再開)を変更し、実行中のクエリを中止できるようにします。 | |
仮想ウェアハウス権限 | USAGE | 仮想ウェアハウスを使用し、その結果として、ウェアハウスでクエリを実行します。 | |
データベース権限 | USAGE | データベースを使用できるようにします。データベース内のオブジェクトを表示またはアクションを実行するには、追加の権限が必要です。 | |
スキーマ権限 | USAGE | スキーマを使用できるようにします。 | |
スキーマ権限 | CREATE TABLE | テーブルの複製など、スキーマで新しいテーブルを作成できるようにします。 | |
スキーマ権限 | CREATE STAGE | ステージの複製など、スキーマで新しいステージを作成できるようにします。 | |
テーブル権限 | OWNERSHIP | テーブルの所有権を譲渡します。これにより、テーブルに対するフル制御が付与されます。 | 転送モートがreplaceの場合、 DROP TABLE クエリを実行するために必要となります。 ※DROP TABLEクエリを使用するにはテーブルの所有権を持つロールを使用する必要があります。 Snowflake ドキュメント - 使用上の注意 ※ 既に存在するテーブルに対して実行する場合のみ必要になります。 |
サンプルクエリ
- 作成するロール
TROCCO_OUTPUT_ROLE
- ロールを付与するユーザー
TROCCO_USER
- 対象ウェアハウス
TROCCO_WAREHOUSE
- 対象データベース
TROCCO_DATABASE
- 対象スキーマ
PUBLIC
- 対象テーブル
TROCCO_TABLE
- ※ サンプルで指定されているロール、ユーザー、対象ウェアハウス、データベース、スキーマ、テーブル名は実際に利用する内容に書き換えてください。
-- ロールを作成可能なロールに切り替える
USE ROLE ACCOUNTADMIN;
-- ロールを新規作成
CREATE ROLE TROCCO_OUTPUT_ROLE;
-- 指定したユーザーにロールが使えるようにする
GRANT ROLE TROCCO_OUTPUT_ROLE TO USER TROCCO_USER;
-- ユーザーに対し、作成したロールをデフォルトで使用するロールにする
ALTER USER TROCCO_USER SET DEFAULT_ROLE = TROCCO_OUTPUT_ROLE;
-- ウェアハウスの利用権限をロールに付与
GRANT USAGE ON WAREHOUSE TROCCO_WAREHOUSE TO ROLE TROCCO_OUTPUT_ROLE;
GRANT OPERATE ON WAREHOUSE TROCCO_WAREHOUSE TO ROLE TROCCO_OUTPUT_ROLE;
-- データベースの利用権限をロールに付与
GRANT USAGE ON DATABASE TROCCO_DATABASE TO ROLE TROCCO_OUTPUT_ROLE;
-- スキーマの利用権限をロールに付与
GRANT USAGE ON SCHEMA TROCCO_DATABASE.PUBLIC TO ROLE TROCCO_OUTPUT_ROLE;
-- テーブル作成の権限をロールに付与する
GRANT CREATE TABLE ON SCHEMA TROCCO_DATABASE.PUBLIC TO ROLE TROCCO_OUTPUT_ROLE;
-- ステージの操作の権限をロールに付与する
GRANT CREATE STAGE on SCHEMA TROCCO_DATABASE.PUBLIC to ROLE TROCCO_OUTPUT_ROLE;
-- テーブルの所有権をロールに移行させる
-- ※ 既に存在するテーブルに対して実行する場合に必要になります
GRANT OWNERSHIP ON TABLE TROCCO_DATABASE.PUBLIC.TROCCO_TABLE TO ROLE TROCCO_OUTPUT_ROLE;
データマートの利用に必要な権限
項目 | 権限 | 内容 | 備考 |
---|---|---|---|
仮想ウェアハウス権限 | OPERATE | ウェアハウスの状態(停止、開始、一時停止、再開)を変更し、実行中のクエリを中止できるようにします。 | |
仮想ウェアハウス権限 | USAGE | 仮想ウェアハウスを使用し、その結果として、ウェアハウスでクエリを実行します。 | |
データベース権限 | USAGE | データベースを使用できるようにします。データベース内のオブジェクトを表示またはアクションを実行するには、追加の権限が必要です。 | |
スキーマ権限 | USAGE | スキーマを使用できるようにします。 | |
スキーマ権限 | CREATE TABLE | テーブルの複製など、スキーマで新しいテーブルを作成できるようにします。 | |
テーブル権限 | SELECT | テーブルでSELECTステートメントを実行できるようにします。 | |
テーブル権限 | INSERT | テーブルでINSERTステートメントを実行できるようにします。 | 書き込みモードが追記の場合、出力先テーブルへデータを登録するために必要となります。 |
テーブル権限 | OWNERSHIP | テーブルの所有権を譲渡します。これにより、テーブルに対するフル制御が付与されます。 | 書き込みモードが全件洗い替えの場合、出力先テーブルの削除を実行するために必要となります。 ※ 既に存在するテーブルに対して実行する場合のみ必要になります。 |
サンプルクエリ
- 作成するロール
TROCCO_DATAMART_ROLE
- ロールを付与するユーザー
TROCCO_USER
- 対象ウェアハウス
TROCCO_WAREHOUSE
- 対象データベース
TROCCO_DATABASE
- 対象スキーマ
PUBLIC
- 対象テーブル
TROCCO_TABLE
- ※サンプルで指定されているロール、ユーザー、対象ウェアハウス、データベース、スキーマ、テーブル名は実際に利用する内容に書き換えてください。
-- ロールを作成可能なロールに切り替える
USE ROLE ACCOUNTADMIN;
-- ロールを新規作成
CREATE ROLE TROCCO_DATAMART_ROLE;
-- 指定したユーザーにロールが使えるようにする
GRANT ROLE TROCCO_DATAMART_ROLE TO USER TROCCO_USER;
-- ユーザーに対し、作成したロールをデフォルトで使用するロールにする
ALTER USER TROCCO_USER SET DEFAULT_ROLE = TROCCO_DATAMART_ROLE;
-- ウェアハウスの利用権限をロールに付与
GRANT USAGE ON WAREHOUSE TROCCO_WAREHOUSE TO ROLE TROCCO_DATAMART_ROLE;
GRANT OPERATE ON WAREHOUSE TROCCO_WAREHOUSE TO ROLE TROCCO_DATAMART_ROLE;
-- データベースの利用権限をロールに付与
GRANT USAGE ON DATABASE TROCCO_DATABASE TO ROLE TROCCO_DATAMART_ROLE;
-- スキーマの利用権限をロールに付与
GRANT USAGE ON SCHEMA TROCCO_DATABASE.PUBLIC TO ROLE TROCCO_DATAMART_ROLE;
-- テーブル作成の権限をロールに付与する
GRANT CREATE TABLE ON SCHEMA TROCCO_DATABASE.PUBLIC TO ROLE TROCCO_DATAMART_ROLE;
-- テーブルへINSERTクエリを実行可能にする権限をロールに付与
GRANT INSERT ON TABLE TROCCO_DATABASE.PUBLIC.TROCCO_TABLE TO ROLE TROCCO_DATAMART_ROLE;
-- テーブルの所有権をロールに移行させる
-- ※ 既に存在するテーブルに対して実行する場合に必要になります。
GRANT OWNERSHIP ON TABLE TROCCO_DATABASE.PUBLIC.TROCCO_TABLE TO ROLE TROCCO_DATAMART_ROLE;
キーペア認証について
キーペアの作成
ターミナルにて以下のコマンドを実施
- 秘密鍵の作成
$ openssl genrsa 2048 | openssl pkcs8 -topk8 -inform PEM -out rsa_key.p8 -nocrypt
- 公開鍵の生成
$ openssl rsa -in rsa_key.p8 -pubout -out rsa_key.pub
- 設定用の公開鍵を出力(改行と不要な箇所の除去)
$ cat rsa_key.pub | \
tr -d "\n" | \
sed "s/-----BEGIN PUBLIC KEY-----//g" | \
sed "s/-----END PUBLIC KEY-----//g"
Snowflakeへの公開鍵の設定
-- 任意のユーザーへ公開鍵を紐付ける
alter user [username] set rsa_public_key='[設定用の公開鍵の出力結果]'