はじめに
本記事では、Snowflakeにおけるロール階層と権限継承について解説します。
Snowflakeは独自のRole-Based Access Control(RBAC)システムを採用しており、
効率的で安全なデータアクセス管理を実現しています。
気かではその管理に使用されているロールに関する基本的な内容を解説します。
本記事で学べること:
- Snowflakeの5つのシステムロールの特徴と用途
- ロール階層における権限継承の仕組み
- 他のクラウドサービスとの違い
- ロールの制約
Snowflakeのロール階層と権限の継承
システムロール一覧
以下にSnowflakeにて使用されているシステムロールをまとめます。
ロール名 | 権限レベル | 説明 | 主な用途 |
---|---|---|---|
ACCOUNTADMIN | 最上位 | アカウント内で最上位のロール。すべての権限を持つ | アカウント全体の設定、課金管理、セキュリティポリシーの設定 |
SECURITYADMIN | セキュリティ管理 | セキュリティ管理用のロール。ユーザとロールの管理権限を持つ | ユーザ・ロールの作成、権限の割り当て、セキュリティ監査 |
USERADMIN | ユーザー管理 | ユーザとロールの管理専用のロール。SECURITYADMINより限定的 | 基本的なユーザ・ロール管理(セキュリティ権限なし) |
SYSADMIN | システム管理 | データベースオブジェクトの管理権限を持つロール | ウェアハウス、データベース、スキーマ、テーブルの作成・管理 |
PUBLIC | 基本 | すべてのユーザー・ロールに自動付与される基本ロール | 基本的なシステム機能へのアクセス |
各ロールの詳細
ACCOUNTADMIN(アカウント管理者)
- アカウント内のすべてのオブジェクトとデータへの完全なアクセス権
- 他のすべてのロールの権限を継承
- 使用は最小限に抑え、必要な時のみ利用することを推奨
SECURITYADMIN(セキュリティ管理者)
- グローバルなユーザー・ロール管理権限
- セキュリティポリシーの設定と管理
- USERADMINロールの権限を継承
USERADMIN(ユーザー管理者)
- ユーザーとロールの作成・管理(限定的)
- セキュリティ関連の権限は持たない
- 日常的なユーザー管理業務に適している
SYSADMIN(システム管理者)
- データベースオブジェクトの作成・管理
- ウェアハウスの管理
- カスタムロールの多くはこのロール配下に配置される
PUBLIC(パブリック)
- すべてのユーザーに自動的に付与される
- 基本的なシステム機能へのアクセスのみ
- 最小限の権限のみを持つ
システムロールの階層
それぞれのシステムロールの関係性としては以下のようになっております。
引用元:ロール階層と権限の継承
権限の継承
継承の仕組み
権限継承は以下のように動作します:
例:3つのロールの権限継承
ロール3(権限C)→ ロール2(権限B)→ ロール1(権限A)→ ユーザ1
結果: ユーザ1は権限A、B、Cすべてを取得する
上記の権限継承を図で示すと以下のようになります
引用元:ロール階層と権限の継承
他のクラウドサービスとの違い
- AWS IAM等: ポリシー → ロール → ユーザー/リソース
- Snowflake: ロール → ロール → ユーザー(階層構造)
重要な制約
- ✅ データベースロール → アカウントロール:付与可能
- ❌ アカウントロール → データベースロール:付与不可
階層の特徴
- 上位ロールは下位ロールの権限をすべて継承する
- PUBLICロールはすべてのユーザー・ロールに自動的に付与される
- カスタムロールは主にSYSADMIN配下に配置される
- データベースロールはデータベース内でのみ有効
さいごに
Snowflakeのロール階層システムは、適切に設計・運用することで組織のデータガバナンスを大幅に向上させることができます。
少しでもSnowflakeのロールに関する学習の参考になれば幸いです。