はじめに
Snowflakeアクセス制御のベストプラクティスの一つである、
ファンクショナルロール/アクセスロールによるアクセス制御についてまとめました。
Snowflakeにおけるアクセス制御
Snowflakeにおけるロールベースアクセスコントロール(RBAC)に
ファンクショナルロール/アクセスロールの2層の概念によるアクセス制御があります。
ファンクショナルロールとアクセスロールという概念を利用し、それらのロールの階層によってアクセス制御を構成します。
(Snowflakeにおけるアクセス制御全般の説明は公式サイトに↓)
アクセス制御の概要:https://docs.snowflake.com/ja/user-guide/security-access-control-overview
ファンクショナルロール/アクセルロールとは
そもそもファンクショナルロールとアクセルロールとは何でしょうか?
公式の例で見てみると、
上から2段目のACCOUNTANTやANALYSTはファンクショナルロール、
その下段の"DB_"で始まるロールはアクセスロールにあたります。
画像引用元:https://docs.snowflake.com/en/user-guide/security-access-control-considerations#aligning-object-access-with-business-functions
ファンクショナルロール
→あるユーザが何の役割または組織に対応するかを示すロール。
ファンクショナルロールは基本的にはユーザーに割り当てるロールです。
(ユーザーと紐づくロール!)
企業の場合、職位や役職に当てはめて考えるのが一般的。
例:マネージャー、アナリスト、経理課、人事部、etc.
アクセルロール
→何のオブジェクト(DBやスキーマなど)に対して、何の操作ができるかを示すロール。
アクセスロールはオブジェクトの権限が付与され、ファンクショナルロールに継承するロールです。
(オブジェクトと紐づくロール!)
例:参照、管理、追加および修正、etc.
これらのロールはあくまで概念であり実際に機能として存在するわけではないです。
利用すると良いこと
ファンクショナルロールとアクセルロールの概念を使うことで以下の良いことがあります。
1. ロールと権限を紐づけることで論理的に分けられる
Aスキーマの参照権限がまとまっているロール、Bスキーマの編集権限がまとまっているロール、と人間がわかるように区別しておくことができるのですっきりまとまります。
公式の画像を見ると例えば、
"DB_FIN_RW"というアクセスロールは配下に多くの権限が連なっていますが、ロール名から「データベースFIN(おそらくfinancialの略)の R EAD と W RITE権限を持つロール」とおおよそわかります。
2. 塊にしておくことでロールの付け替えがしやすい
人が増えたとき、役割や部門が変わったときなどの運用イベントに楽に対応できます。
例えば、
USER1と同等の役割のユーザー増えたとします。
ロールがある場合はACCOUNTANTを割り当てるだけなのに対し
ロールがない場合はその下に記載されているDB FINのUSAGE、schemaのUSAGE、tableのSELECT、INSERT、UPDATE、DELETEを一つずつUSER1に付与しなければなりません。
画像引用元:https://docs.snowflake.com/en/user-guide/security-access-control-considerations#aligning-object-access-with-business-functions
何度も多くの権限を設定することなくシンプルな運用を実現できます。
まとめ
・ファンクショナルロールはどんな役割/職位かを示す
・アクセルロールは何のオブジェクトにどんな操作ができるかを示す
・使うことで運用の手間を軽減できる
私のSnowflakeを初めて勉強したときの最初のつまづきポイントでした。とてもシンプルですがこの考え方に慣れるまで時間がかかりました。。
この概念を利用してロール設計をしていくのでおさえておくと後々楽です。具体的な例は別の記事で書こうと思います。
参考
アクセス制御の概要:
https://docs.snowflake.com/ja/user-guide/security-access-control-overview
オブジェクトアクセスをビジネス機能と整合させる:
https://docs.snowflake.com/en/user-guide/security-access-control-considerations#aligning-object-access-with-business-functions