はじめに:なぜRBACを学ぶの?
Snowflakeを業務で使い始めると、必ずぶつかるのが「誰がどのデータにアクセスできるべきか?」という問題です。営業チームには売上テーブルだけ見せたい、エンジニアにはウェアハウスを使わせたい、でも本番テーブルへのDROPは絶対にさせたくない──こんな要件を整理するための仕組みが ロールベースアクセス制御 (RBAC) です。
この記事では、Snowflakeを触り始めたばかりの方に向けて、RBACの考え方と最低限知っておきたいSQLをやさしく解説します!
RBACの基本概念:登場人物は4つだけ
Snowflakeのアクセス制御は、たった4つの要素を理解すれば一気に見通しが良くなります。
- ユーザー (User):Snowflakeにログインする人やアプリ
- ロール (Role):権限の入った「役割バッジ」のようなもの
- 権限 (Privilege):SELECT・INSERT・USAGEといった「やっていいこと」
- オブジェクト (Object):データベース・スキーマ・テーブル・ウェアハウスなど
ポイントは、権限はユーザーに直接ではなくロールに付与すること。そしてユーザーにはロールを割り当てます。「人事異動でロールを付け替えるだけで権限管理が完了する」という、とても運用しやすい仕組みです。

システム定義ロールを覚えよう
Snowflakeにはあらかじめ用意されたロールがあります。最初はこの階層を意識するだけでOKです。
- ACCOUNTADMIN:アカウント全体の最強ロール。普段使いはNG
- SECURITYADMIN:ロールやユーザーの管理担当
- SYSADMIN:データベースやウェアハウスを作る人向け
- USERADMIN:ユーザー作成専門
- PUBLIC:全ユーザーが自動で持つ最小ロール
実務では、これらの下に「分析チーム用」「ETL用」など独自ロールを作って権限を整理していくのが定石です。
具体的なSQLでやってみよう
たとえば「分析者が SALES データベースを読み取り専用で使えるようにしたい」とき、流れはこんな感じです。データベース・スキーマ・テーブルの階層を思い出しながら見てみましょう。
-- 1. ロール作成 (USERADMINで実行)
USE ROLE USERADMIN;
CREATE ROLE analyst_role;
-- 2. 権限付与 (SECURITYADMINで実行)
USE ROLE SECURITYADMIN;
GRANT USAGE ON WAREHOUSE analytics_wh TO ROLE analyst_role;
GRANT USAGE ON DATABASE sales TO ROLE analyst_role;
GRANT USAGE ON SCHEMA sales.public TO ROLE analyst_role;
GRANT SELECT ON ALL TABLES IN SCHEMA sales.public TO ROLE analyst_role;
-- 3. 将来作られるテーブルにも自動で適用
GRANT SELECT ON FUTURE TABLES IN SCHEMA sales.public TO ROLE analyst_role;
-- 4. ユーザーにロールを割り当て
GRANT ROLE analyst_role TO USER hanako;
注目ポイントは USAGE 権限。ウェアハウスやスキーマには「使ってもいいよ」という許可が必要で、これが無いとSELECTすらできません。階段を上るには、各階の鍵が要るイメージです。

Snowsightでの確認方法
Snowsightでは画面右下のユーザーメニューから「Switch Role」で現在のロールを切り替えられます。Admin → Users & Roles 画面では、ロールの継承関係がグラフィカルに見られて、誰がどのロールを持っているか一目でわかります。SQLで SHOW GRANTS TO ROLE analyst_role; と打つのも便利ですよ。
よくある注意点
- 常に最強ロール (ACCOUNTADMIN) で作業しない。最小権限の原則を守る
- オブジェクトを作るときの「現在のロール」が所有者になる。ウェアハウスやテーブルは基本SYSADMIN配下で作る
- 個人ではなくロールに権限を寄せる。退職時もロール剥奪だけで安心
まとめ
RBACは「ユーザーにロール、ロールに権限、権限はオブジェクトに対して」という3段階で考えるとスッキリ整理できます。最初は小さなロールを1つ作るところから始めて、徐々に階層を整えていきましょう。データガバナンスの第一歩として、ぜひ自社環境で試してみてください!
参考リンク
関連記事
- Snowflakeのデータベース・スキーマ・テーブル階層を初心者向けに解説 – 権限を付与する対象の構造を理解できます
- Snowflakeウェアハウスとは?サイズと使い分けを初心者向けに解説 – USAGE権限を付与する代表的なオブジェクトです
- Snowflakeのテーブル種類|通常・一時・トランジェントの違いを解説 – 権限管理の対象となるテーブルの種類を整理
- Snowflakeゼロコピークローン入門|データベースを一瞬で複製する魔法 – クローンにも適切な権限設定が必要です

