0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Data Warehouse構築の際の各ロールへの権限の委譲のやり方

Posted at

※今後加筆修正する可能性あり(2022.11.27現在)

 Snowflakeを使ってデータウェアハウス(Data Warehouse 以下DWH)の構築を行った。DWH内に複数あるテーブルに対して、各ロールごとにアクセスの権限を付与する際、すべてのテーブルに一括で権限を付与する方法が難しかったので、忘れないためにまとめる。

対象:初めてSnowflake上にデータベース・スキーマ・テーブルを構築する人
筆者の経験値:初めてSnowflakeを扱う
この記事の目的:ロールに対して、複数のテーブルに一括してアクセス権限を付与する方法

ロール
 SnowflakeでDWHを構築する際、DWHを設計する人・閲覧する人・DWH内のデータを使う(挿入更新削除)人のように、役割に応じてDWHにアクセスする権限を切り替えたい場合がある。(例:データを見るだけの役割の人がデータを勝手に更新・削除できてしまってはデータの管理上問題がある。データを見るだけの役割の人にはデータを見る権限のみを与えるようにしなければならない)
 これらの役割をロールという。

ロールへの権限付与で生じた課題
 SnowflakeはSQL文を叩くか、GUIで操作することでアクセス権限を付与できる。たとえば、SQL文で特定のテーブルに権限付与するとしたら以下のようになる。

grant usage
on database d1
to role r1;

grant usage
on schema d1.s1
to role r1;

grant select
on table d1.s1.t1
to role r1;

しかしこのやり方だと、1個1個のテーブルにいちいちSQL文を書いては実行書いては実行…を繰り返さなければならずめんどくさい。

各ロールへの権限を一括付与

grant select
on future tables in database d1
to role r1;

 「未来のテーブルに対して権限を付与する」ということにすれば、テーブルを作成するごとに付与した権限が適用されるので、便利!

参究
※以下、よくわかっていないこと
 上述のやり方では、「未来のテーブルに対して」権限を付与する内容だが、既存のテーブルにも一括で権限を付与したい時はどうしたらいいのか...?

 Snowflakeの使い方やエラー解消に関する日本語のサイトが公式ドキュメント以外に乏しく、今回Qiita記事を書くに至った。今後Snowflakeを扱う人に参考に慣れればと思う。

参考

0
0
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?