1.基本的なロールの確認
引用:https://www.youtube.com/watch?v=Ok8kMxl1FdE
こちらが、デフォルトで作成されているシステム定義ロールになっています。
階層は以下のようになっています
引用:https://docs.snowflake.com/ja/user-guide/security-access-control-overview
ACCOUNTADMINが最上位のロールとなっており、基本的にはこれは用いないことが正しいです
そこから細分化され、最終的にはPUBLICロールという自動的に付与される一番権限が低いロールとなっています。
必要に応じて、PUBLICロールから派生させていくことがベストプラクティスとなっています。
2.ロールの設定方法
今回のユースケース:Tableuでの可視化
DWHからBIツールで可視化というのはよくあるユースケースかと思います。
今回はsnowflake⇨Tableuを使うための最低限のロールを付与していきます。
ロールの作成
ロールの作成はWorksheat上でSQLコマンドで実行させます
--ロールの作成
CREATE OR REPLACE ROLE tableu_maneger;
これで空のロールが作成されます
このような感じで、実際にロールを割り当てる画面を見てみると確かにロールがあります
権限の付与
引き続き権限を付与させていきます
GRANT USAGE ON DATABASE <データベース名> TO ROLE <与えたいロール名>;
GRANT USAGE ON SCHEMA <データベース名>.<スキーマ名> TO ROLE <与えたいロール名>;
GRANT USAGE ON WAREHOUSE <WAREHOUSE名> TO ROLE <与えたいロール名>;
GRANT SELECT ON TABLE <データベース名>.<スキーマ名>.<テーブル名> TO ROLE <与えたいロール名>;
今回は、あるテーブルに対して、読み取ることが最低限です。
特にTableuを使うエンドユーザーはDBに対して書き込みなどは行いません。
そのため、どのDBのどのテーブルのSELECT(読み取り)権限を与えるのか
そして、忘れてはいけないのが、WAREHOUSEの指定です。
WAREHOUSE(コンピューティング)がないとそもそも読み取りすることすらできません。
これらを指定してあげてあとは作ったロールをユーザーに付与していきます。
ユーザーに権限の付与
GRANT ROLE <ロール名> TO USER <ユーザー名>;
デフォルトロールにしないと、使うユーザーがエラー起きてしまったので、設定しました。
ALTER USER <ユーザー名> SET DEFAULT_ROLE = <デフォルトロールにしたいロール>;
3.まとめ
今回はTableauを使えるようにした最低限のロール権限を作成しました。
よかったら使ってみてください。
それでは