Snowflakeの接続情報
  • 22 Apr 2022
  • 2 分で読み終わります
  • ダーク
    ライト

Snowflakeの接続情報

  • ダーク
    ライト

概要

Snowflakeの接続情報を設定する際のヘルプページとなります。

入力項目

項目名 必須 内容
名前 Yes trocco内部で利用する接続情報の名前を入力してください。
メモ No trocco内部で利用する接続情報のメモを入力してください。
接続先ホスト Yes Snowflakeのホストを入力してください。
具体例は以下画像をご参照ください。
image.png
ユーザー 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='[設定用の公開鍵の出力結果]'

この記事は役に立ちましたか?