🙌
Snowflakeでロール設計してみた(Functional + Access)
たしろ@ちゅらデータエンジニア です。
※ずっと下書きになってたやつをみつけて、ちゃんと書かねば・・・って思ったですよ
ずっとSYSADMINとかで作っていたのでこれはあかーーーんということで、真面目にカスタムロールを設計してみました
の Functional + Access Role Model をつかってみました。
USER(Functional)ロールとしては
- user_admin
- user_general
- user_ds
- user_analyst
- user_vierwer
というロールを設定しています。
Access Role としては
- DB_OWNER
- DB_RW : Database全体のRead/Write
- DB_R : Database全体のRead
- DB_LAKE_SPOT_W : LAKE_SPOTスキーマに書き込める
- DB_MART_W : MARKスキーマに書き込める
- DB_PUBLIC_RW
あと、WHを使うアクセスロールがあってもいいかな・・ってので、こちらも
※ここは、FunctionalロールにUSAGEをつけてしまうでもいいのだけど・・・
- USE_USER_WH
- USE_DS_WH
- USE_BI_WH
CDPでは、基本的には三層構造を採用するようにしています(ゆずたそさんの構成を参考に)
Schemaとしては
- LAKE層 : Amazon S3や GCS、BigQueryから取り込んだそのまま、最近でいうとレイクハウス的?な層。どこからとってきてるかを明確にしたかったので、更に元データソースごとにスキーマを切ってます
- CORE_DB : 基幹DBとか
- APP : Firebaseとか
- SPOT : その他分析で必要なファイルとか
- WAREHOUSE層 : 集約していろいろMASTERの情報とかくっつけたテーブルorView
- MART層 : WAREHOUSE層からBIとかで見せるためのデータマートを作成する。AnalystやDSのアウトプットを置く場所
という三層です。
で、こんな感じ
- USER_ADMIN
- ACCOUNTADMINを持ってるロール。これっているだろうか・・・・ちょっと悩む
- ACCOUNTADMINをそもそも渡せばいいんじゃまいか・・・orz
- USER_GENERAL
- DB(データ)に対する一番上位ロール、SAMPLE_DBに対してすべての操作ができる。OWNERSHIPもたせてる
- USER_DS
- データサイエンティストなロール
- 基本的に、READ権限
- LAKE_SPOTへのアップロード権限あり(一時的に必要な分析用ファイルとか)
- MARTへの書き込み権限あり。LAKE層、WAREHOUSE層からマートを作成できる
- サイズの大きい DS_WH を使用できるのが、USER_ANALYSTとの違い
- USER_ANALYST
- アナリストなロール
- 基本的に、SAMPLE_DBにたいしてはREAD
- LAKE_SPOTへのアップロード権限あり(一時的に必要な分析用ファイルとか)
- MARTへの書き込み権限あり。LAKE層、WAREHOUSE層からマートを作成できる
- USER_VIEW
- 閲覧者の権限
- データを見るだけ
- 書き込み権限なし
あと、BIロール、PREPロール(閲覧のみ)とか、ETLロールなども作り、WHをわけるといいかも
Discussion