4
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Snowflake オブジェクトへのアクセス制御

Last updated at Posted at 2024-10-17

はじめに

Snowflakeアクセス制御のベストプラクティスの一つである、
ファンクショナルロール/アクセスロールによるアクセス制御についてまとめました。

Snowflakeにおけるアクセス制御

Snowflakeにおけるロールベースアクセスコントロール(RBAC)に
ファンクショナルロール/アクセスロールの2層の概念によるアクセス制御があります。
ファンクショナルロールとアクセスロールという概念を利用し、それらのロールの階層によってアクセス制御を構成します。
(Snowflakeにおけるアクセス制御全般の説明は公式サイトに↓)
アクセス制御の概要:https://docs.snowflake.com/ja/user-guide/security-access-control-overview

ファンクショナルロール/アクセルロールとは

そもそもファンクショナルロールとアクセルロールとは何でしょうか?
公式の例で見てみると、
上から2段目のACCOUNTANTやANALYSTはファンクショナルロール、
その下段の"DB_"で始まるロールはアクセスロールにあたります。

image.png
画像引用元:https://docs.snowflake.com/en/user-guide/security-access-control-considerations#aligning-object-access-with-business-functions

ファンクショナルロール

→あるユーザが何の役割または組織に対応するかを示すロール。
ファンクショナルロールは基本的にはユーザーに割り当てるロールです。
(ユーザーと紐づくロール!)
企業の場合、職位や役職に当てはめて考えるのが一般的。
例:マネージャー、アナリスト、経理課、人事部、etc.

アクセルロール

→何のオブジェクト(DBやスキーマなど)に対して、何の操作ができるかを示すロール。
アクセスロールはオブジェクトの権限が付与され、ファンクショナルロールに継承するロールです。
(オブジェクトと紐づくロール!)
例:参照、管理、追加および修正、etc.

これらのロールはあくまで概念であり実際に機能として存在するわけではないです。

ファンクショナルロールとアクセルロールのイメージ
image.png

利用すると良いこと

ファンクショナルロールとアクセルロールの概念を使うことで以下の良いことがあります。

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に付与しなければなりません。
image.png
画像引用元: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

4
1
0

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
4
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?