Snowflake RBAC入門|ロールで権限管理を始めよう

Snowflake RBAC入門|ロールで権限管理を始めよう Snowflake

はじめに:なぜRBACを学ぶの?

Snowflakeを業務で使い始めると、必ずぶつかるのが「誰がどのデータにアクセスできるべきか?」という問題です。営業チームには売上テーブルだけ見せたい、エンジニアにはウェアハウスを使わせたい、でも本番テーブルへのDROPは絶対にさせたくない──こんな要件を整理するための仕組みが ロールベースアクセス制御 (RBAC) です。

この記事では、Snowflakeを触り始めたばかりの方に向けて、RBACの考え方と最低限知っておきたいSQLをやさしく解説します!

RBACの基本概念:登場人物は4つだけ

Snowflakeのアクセス制御は、たった4つの要素を理解すれば一気に見通しが良くなります。

  • ユーザー (User):Snowflakeにログインする人やアプリ
  • ロール (Role):権限の入った「役割バッジ」のようなもの
  • 権限 (Privilege):SELECT・INSERT・USAGEといった「やっていいこと」
  • オブジェクト (Object):データベース・スキーマ・テーブル・ウェアハウスなど

ポイントは、権限はユーザーに直接ではなくロールに付与すること。そしてユーザーにはロールを割り当てます。「人事異動でロールを付け替えるだけで権限管理が完了する」という、とても運用しやすい仕組みです。

Snowflake RBACのユーザー・ロール・権限・オブジェクト4要素の関係を示す概念図

システム定義ロールを覚えよう

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すらできません。階段を上るには、各階の鍵が要るイメージです。

ウェアハウスからスキーマ・テーブルへUSAGE権限で階層的にアクセスするSnowflake RBACの構造図

Snowsightでの確認方法

Snowsightでは画面右下のユーザーメニューから「Switch Role」で現在のロールを切り替えられます。Admin → Users & Roles 画面では、ロールの継承関係がグラフィカルに見られて、誰がどのロールを持っているか一目でわかります。SQLで SHOW GRANTS TO ROLE analyst_role; と打つのも便利ですよ。

よくある注意点

  • 常に最強ロール (ACCOUNTADMIN) で作業しない。最小権限の原則を守る
  • オブジェクトを作るときの「現在のロール」が所有者になる。ウェアハウステーブルは基本SYSADMIN配下で作る
  • 個人ではなくロールに権限を寄せる。退職時もロール剥奪だけで安心

まとめ

RBACは「ユーザーにロール、ロールに権限、権限はオブジェクトに対して」という3段階で考えるとスッキリ整理できます。最初は小さなロールを1つ作るところから始めて、徐々に階層を整えていきましょう。データガバナンスの第一歩として、ぜひ自社環境で試してみてください!

参考リンク

関連記事