はじめに
今回は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」ロールに権限が付与されている


