【Snowflake】クエリで環境構築試してみた

Snowflake

はじめに

今回はSnowflakeの勉強を兼ねて、クエリで環境構築を試してみました。
環境構築といっても、たいそうなものではありません。今回作成したのは以下の内容です。
 ・データベース
 ・スキーマ
 ・ロール
 ・ユーザー
また、ロールとユーザーに対しての権限付与も実施しました。
次項から実際に実施したクエリの内容になります。

クエリ実行に使用するロールの設定

USE ROLE ACCOUNTADMIN;

データベースの作成

CREATE DATABASE IF NOT EXISTS TEST_DB;

IF NOT EXISTSによってすでに同じ名前のデータベースが存在していてもクエリがエラーになりません。
後述するスキーマ、ロール、ユーザーも同様の構文が使えます。

スキーマの作成

CREATE SCHEMA IF NOT EXISTS TEST_DB.TEST_SCHEMA;

ロールの作成

CREATE ROLE IF NOT EXISTS TEST_ROLE;

作成したロールにウェアハウス、データベース、スキーマの権限を付与

 --ウェアハウスに対する権限
GRANT USAGE ON WAREHOUSE COMPUTE_WH TO ROLE TEST_ROLE;
 
 --データベースに対する権限
GRANT USAGE ON DATABASE TEST_DB TO TEST_ROLE;

 --スキーマ_RAWに対する権限
GRANT ALL ON SCHEMA TEST_DB.TEST_SCHEMA TO TEST_ROLE;

今回はウェアハウスとデータベースは使用することができるUSAGEという権限を付与。
スキーマに対してはOWNERSHIP以外の権限を全て付与するALL権限を付与。

各オブジェクトに対しての権限一覧はこちら↓(公式ページ)
https://docs.snowflake.com/ja/user-guide/security-access-control-privileges

ユーザーの作成

CREATE USER TEST_TEST
    LOGIN_NAME = 'T.TEST'
    DISPLAY_NAME = 'T.TEST'
    PASSWORD = 'Test2024!123!'
    DEFAULT_ROLE = 'TEST_ROLE'
    DEFAULT_WAREHOUSE = 'COMPUTE_WH'
    MUST_CHANGE_PASSWORD = FALSE;

ユーザー作成時のパラメーターはたくさんあるが、今回は上記の内容で実行。

その他のパラメーターなど詳細はこちら↓(公式ページ)
https://docs.snowflake.com/ja/sql-reference/sql/create-user

ユーザーにロールを割り当てる

GRANT ROLE TEST_ROLE TO USER TEST_TEST;

ユーザー作成時にデフォルトのロールに設定していても、割り当てられていなければ使用できないので注意。

今回のクエリの完成版

--使用するロールの指定
USE ROLE ACCOUNTADMIN;

--データベースの作成
CREATE DATABASE IF NOT EXISTS TEST_DB;

--スキーマの作成
CREATE SCHEMA IF NOT EXISTS TEST_DB.TEST_SCHEMA;

--ロールの作成
CREATE ROLE IF NOT EXISTS TEST_ROLE;

--ロールへの権限付与
 --ウェアハウス
GRANT USAGE ON WAREHOUSE COMPUTE_WH TO ROLE TEST_ROLE;
 
 --データベース
GRANT USAGE ON DATABASE TEST_DB TO TEST_ROLE;

 --スキーマ_RAW
GRANT ALL ON SCHEMA TEST_DB.TEST_SCHEMA TO TEST_ROLE;

--ユーザー作成
CREATE USER TEST_TEST
    LOGIN_NAME = 'T.TEST'
    DISPLAY_NAME = 'T.TEST'
    PASSWORD = 'Test2024!123!'
    DEFAULT_ROLE = 'TEST_ROLE'
    DEFAULT_WAREHOUSE = 'COMPUTE_WH'
    MUST_CHANGE_PASSWORD = FALSE;

--ユーザーへの権限付与
GRANT ROLE TEST_ROLE TO USER TEST_TEST;

クエリの実行後確認

・ロール
「TEST_ROLE」ロールが作成されている

・ユーザー
「TEST_TEST」ユーザーが作成され、「TEST_ROLE」ロールが付与されている

・ウェアハウス
「TEST_ROLE」ロールに権限が付与されている

・データベース
「TEST_DB」データベースが作成され、「TEST_ROLE」ロールに権限が付与されている

・スキーマ
「TEST_SCHEMA」スキーマが作成され、「TEST_ROLE」ロールに権限が付与されている

タイトルとURLをコピーしました