Snowflakeでテーブル追加のたびにgrantを打たなくてよくする方法
前置き
こんにちは。株式会社GENDAのこみぃです。
今日のお話はSnowflake運用の軽いTipsです。
allは今存在するテーブル
Snowflakeでユーザーに参照権限を付ける場合には以下のようなgrant文を打つことになります。
grant select on all tables in schema test to role test_user;
ここでall tablesというのは そのタイミングで存在しているすべてのテーブル を指します
つまりこの後テーブルが追加された場合にはtest_userは参照できません。そのタイミングで存在していなかったからです。
futureは今後作られるテーブル
さて、今後作られるすべてのテーブルに対しての権限を付けるには 今後作られるという意味の単語が必要 であり、それはallではないということになります。
ではそんな単語はあるのかというと、それが future です。
逆にfutureは現在のテーブルは一切含まないので、allとfutureを足すとようやく求めている意味での全てのテーブルということになります。
futureにgrantすればOK
そういうわけで、テーブル追加のたびにgrantを打たなくてよくするためにはfutureに対してgrantを打てばOKです。
grant select on future tables in schema test to role test_user;
テーブルとViewも別
ちなみにallとfutureが別だったように、テーブルとViewも別です。
テーブルとViewを意識して区別する意味がないなら、以下のように全て打っておくといいかもしれませんね。
grant select on all tables in schema test to role test_user;
grant select on future tables in schema test to role test_user;
grant select on all views in schema test to role test_user;
grant select on future views in schema test to role test_user;
結びの言葉
データ基盤は機密情報などを含むデータを扱うこともあり、権限管理は割りとしっかりやらないといけません。
だからこそ手間は少なくしたいので、こういったTipsはしっかり抑えて無駄な工数を削りたいですね。
さらに詳細が聞きたいという方は、私がわかる範囲であればお答えしますので、Twitterあたりでお気軽にお声がけください。
@kommy_jp
なお、株式会社GENDAでは、一緒に働くデータ関連の人材を絶賛募集中です。
興味がある方は是非お声がけください。
本日はこのあたりで。
それじゃあ、バイバイ!
Discussion