by shigemk2

当面は技術的なことしか書かない

Snowflake アクセス制御 なんとなく

まずは、DACと

任意アクセス制御(DAC): 各オブジェクトに所有者がおり、所有者はそのオブジェクトへのアクセスを許可できます。

RBACについて覚えておく。

ロールベースのアクセス制御(RBAC): アクセス権限がロールに割り当てられ、ロールはユーザーに割り当てられます。

Snowflakeにはオブジェクトなる概念があって、Organizationを一番の親としてウェアハウスだったりユーザーだったりロールだったりで派生していく。 もちろん、プログラミング言語のオブジェクトとは違う概念なので、ちょっと混同しがち。しかし全てのオブジェクトには所有者が割り振られている。 ウェアハウスにも所有者がいるし、テーブルやインテグレーションにも所有者がいる。 https://docs.snowflake.com/ja/_images/securable-objects-hierarchy.png

所有者が割り当てられたら所有者は自動的にテーブル一覧を見れたりテーブルにSELECTしたりテーブルをCREATEしたりできるかというとそうでもなく、GRANT ROLEで適宜ウェアハウスやテーブルに権限を付与してやらないといけない(イメージ図) https://docs.snowflake.com/ja/_images/access-control-relationships.png

ご覧の通りロールは継承できるが、ロールに各種オブジェクトへの権限を付与していく必要がある。カスタムロールはSYSADMINを継承していくのがベストプラクティスのようだ。 https://docs.snowflake.com/ja/_images/system-role-hierarchy.png

以下わかりやすい。 datumstudio.jp

最終的に行き着くドキュメント。 docs.snowflake.com