Snowflake

Snowflake RBAC完全解説|ロールベースアクセス制御の設計と実装

2026-03-21
更新: 2026-03-27
NicheeLab編集部

Snowflakeのアクセス制御はRBAC(Role-Based Access Control)を基盤としています。 すべての権限はロールに付与され、ユーザーはロールを通じてオブジェクトにアクセスします。 本記事では、システム定義ロールの階層構造、カスタムロールの設計パターン、GRANT/REVOKEの構文を体系的に解説します。

RBACの基本概念

SnowflakeのRBACでは、権限(Privilege)はオブジェクトに対して定義され、ロールに付与されます。 ユーザーには直接権限を付与できず、必ずロールを介してアクセスします。 ロールは他のロールにGRANTすることで階層構造を形成し、上位ロールは下位ロールの権限を継承します。

アクセス制御モデル:

[ユーザー] ──(USE ROLE)──→ [ロール] ──(GRANT)──→ [権限] ──→ [オブジェクト]

※ ユーザーに直接権限を付与することはできない
※ ロールは別のロールにGRANTして階層化できる

システム定義ロール階層

Snowflakeには5つのシステム定義ロールがあり、固定の階層構造を形成しています。 上位ロールは下位ロールの権限をすべて継承します。

システム定義ロール階層:

              ACCOUNTADMIN
             /            \
      SYSADMIN        SECURITYADMIN
         │                  │
         │              USERADMIN
         │                  │
         └────── PUBLIC ────┘

ACCOUNTADMIN  : アカウント全体の最上位管理者
SYSADMIN      : ウェアハウス・DB・スキーマ等のオブジェクト管理
SECURITYADMIN : ロール・権限・GRANTの管理(MANAGE GRANTS権限)
USERADMIN     : ユーザーとロールの作成・管理
PUBLIC        : 全ユーザーに自動付与される最下位ロール

各ロールの責務と権限

ロール主な責務付与されている主要権限
ACCOUNTADMINアカウント全体の管理SYSADMIN+SECURITYADMINの全権限、課金管理、Resource Monitor作成
SYSADMINオブジェクトの作成・管理CREATE WAREHOUSE / DATABASE / SCHEMA 等
SECURITYADMINアクセス制御の管理MANAGE GRANTS(他ロールのGRANTを管理)、USERADMINの権限を継承
USERADMINユーザーとロールの作成CREATE USER / ROLE
PUBLIC全ユーザーの基本ロールなし(明示的にGRANTされたものだけ)

カスタムロールの設計

実運用では業務要件に応じたカスタムロールを作成します。 カスタムロールはSYSADMINの配下に接続することがベストプラクティスです。

カスタムロール階層の設計例:

              ACCOUNTADMIN
             /            \
      SYSADMIN        SECURITYADMIN
       /    \               │
  ETL_ADMIN  ANALYST_ADMIN  USERADMIN
     │          │            │
  ETL_ROLE   ANALYST_ROLE   PUBLIC
     │          │
  ETL_DEV    ANALYST_RO

※ すべてのカスタムロールがSYSADMIN配下に
   接続されている(孤立ロールなし)
-- カスタムロール作成とSYSADMIN配下への接続
CREATE ROLE analyst_role
  COMMENT = 'データ分析チーム用ロール';

-- SYSADMINの配下に接続(ベストプラクティス)
GRANT ROLE analyst_role TO ROLE SYSADMIN;

-- 必要な権限を付与
GRANT USAGE ON DATABASE analytics_db TO ROLE analyst_role;
GRANT USAGE ON SCHEMA analytics_db.public TO ROLE analyst_role;
GRANT SELECT ON ALL TABLES IN SCHEMA analytics_db.public TO ROLE analyst_role;
GRANT SELECT ON FUTURE TABLES IN SCHEMA analytics_db.public TO ROLE analyst_role;
GRANT USAGE ON WAREHOUSE analyst_wh TO ROLE analyst_role;

-- ユーザーにロールを付与
GRANT ROLE analyst_role TO USER tanaka;

GRANT / REVOKE構文

GRANT — 権限の付与

-- オブジェクト権限のGRANT
GRANT SELECT ON TABLE my_db.public.sales TO ROLE analyst_role;
GRANT INSERT, UPDATE ON TABLE my_db.public.reports TO ROLE etl_role;
GRANT USAGE ON WAREHOUSE etl_wh TO ROLE etl_role;
GRANT CREATE TABLE ON SCHEMA my_db.staging TO ROLE etl_role;

-- データベース・スキーマレベルのGRANT
GRANT USAGE ON DATABASE my_db TO ROLE analyst_role;
GRANT USAGE ON ALL SCHEMAS IN DATABASE my_db TO ROLE analyst_role;

-- FUTURE GRANTs(将来作成されるオブジェクトにも適用)
GRANT SELECT ON FUTURE TABLES IN SCHEMA my_db.public TO ROLE analyst_role;
GRANT USAGE ON FUTURE SCHEMAS IN DATABASE my_db TO ROLE analyst_role;

-- ロールのGRANT(階層構造の構築)
GRANT ROLE analyst_role TO ROLE analyst_admin;
GRANT ROLE analyst_admin TO ROLE SYSADMIN;

REVOKE — 権限の取り消し

-- 特定の権限を取り消し
REVOKE SELECT ON TABLE my_db.public.sales FROM ROLE analyst_role;

-- FUTURE GRANTsの取り消し
REVOKE SELECT ON FUTURE TABLES IN SCHEMA my_db.public FROM ROLE analyst_role;

-- ロールの階層関係を解除
REVOKE ROLE analyst_role FROM ROLE SYSADMIN;

-- CASCADE / RESTRICT(参照関係がある場合)
REVOKE SELECT ON TABLE my_db.public.sales FROM ROLE analyst_role CASCADE;

権限の種類

カテゴリ主な権限対象オブジェクト
グローバル権限CREATE WAREHOUSE, MANAGE GRANTS, EXECUTE TASKアカウント全体
データベース権限USAGE, CREATE SCHEMA, MONITORデータベース
スキーマ権限USAGE, CREATE TABLE, CREATE VIEWスキーマ
テーブル権限SELECT, INSERT, UPDATE, DELETE, TRUNCATEテーブル
ウェアハウス権限USAGE, OPERATE, MONITOR, MODIFYウェアハウス

ウェアハウス権限の違い

権限できること
USAGEウェアハウスを使用してクエリを実行
OPERATEウェアハウスの起動・停止・中断・再開
MONITORウェアハウスの利用状況・パフォーマンスを監視
MODIFYウェアハウスのプロパティ変更(サイズ変更等)

DAC(Discretionary Access Control)との関係

Snowflakeはロールベースのアクセス制御(RBAC)に加え、任意アクセス制御(DAC)も採用しています。 DACでは、オブジェクトの所有者(作成したロール)がそのオブジェクトに対するすべての権限を持ちます。 所有権の移転はGRANT OWNERSHIP ON ... TO ROLE ...で実行します。

-- 所有権の移転
GRANT OWNERSHIP ON TABLE my_db.public.sales
  TO ROLE etl_role
  REVOKE CURRENT GRANTS;

-- REVOKE CURRENT GRANTS: 元の所有者の権限を取り消す
-- COPY CURRENT GRANTS: 元の所有者の権限を保持する

ベストプラクティス

  • ACCOUNTADMINは管理作業時のみ使用し、日常業務にはカスタムロールを使用する
  • ACCOUNTADMINには少なくとも2人のユーザーを割り当て、MFAを有効にする
  • すべてのカスタムロールをSYSADMIN配下に接続し、孤立ロールを防ぐ
  • FUTURE GRANTsで将来作成されるオブジェクトの権限を事前に設定する
  • 最小権限の原則に従い、業務に必要な権限のみを付与する
  • オブジェクト所有権はサービスロール(ETL_ROLE等)に設定し、個人ユーザーの離職時の問題を防ぐ

試験対策のポイント

  • ACCOUNTADMINはSYSADMIN+SECURITYADMINの権限を継承する最上位ロール
  • SECURITYADMINはMANAGE GRANTS権限を持ち、他ロールのGRANTを管理可能
  • カスタムロールはSYSADMIN配下に接続するのがベストプラクティス
  • PUBLICロールは全ユーザーに自動付与され、取り消しできない
  • FUTURE GRANTsは将来作成されるオブジェクトに自動的に権限を適用する
  • ウェアハウスのUSAGE権限はクエリ実行に必要、OPERATE権限は起動/停止に必要

サンプル問題

RBAC

問題 1

新しく作成したカスタムロール custom_etl にウェアハウス etl_wh の操作権限を付与したい。ウェアハウスの起動・停止はできるが、プロパティ変更はできないようにするには、どの権限を付与すべきか?

  1. A. USAGE
  2. B. OPERATE
  3. C. MODIFY
  4. D. MONITOR

正解: B

OPERATE権限はウェアハウスの起動(RESUME)・停止(SUSPEND)・中断(ABORT)を許可します。USAGEはクエリ実行に必要な権限ですが起動/停止は含みません。MODIFYはサイズ変更などのプロパティ変更を許可するため要件を超えます。MONITORは利用状況の監視のみで起動/停止はできません。

よくある質問

ACCOUNTADMINロールを日常的に使用しても問題ありませんか?

推奨されません。ACCOUNTADMINはアカウント内の全権限を持つ最上位ロールのため、誤操作やセキュリティインシデントのリスクが高まります。Snowflakeの公式ベストプラクティスでは、ACCOUNTADMINは管理作業が必要な場面でのみ切り替えて使用し、日常業務にはカスタムロールを使用することが推奨されています。また、ACCOUNTADMINには複数ユーザーを割り当て、MFAを有効にすべきです。

SYSADMINとSECURITYADMINの役割の違いは何ですか?

SYSADMINはウェアハウス・データベース・スキーマなどのオブジェクト管理を担当します。一方、SECURITYADMINはロール・ユーザーの作成およびGRANT権限の管理を担当します。SECURITYADMINにはMANAGE GRANTSグローバル権限があり、他のロールが所有するオブジェクトに対してもGRANT/REVOKEを実行できます。この分離により、オブジェクト管理とアクセス制御を独立して運用できます。

カスタムロールはどのシステム定義ロールの配下に作成すべきですか?

カスタムロールはSYSADMINの配下に作成することがベストプラクティスです。具体的には、GRANT ROLE custom_role TO ROLE SYSADMIN で階層をつなぎます。これにより、SYSADMINがカスタムロールの持つ権限を継承し、ACCOUNTADMIN経由でアカウント全体の権限を一元管理できます。カスタムロールをSYSADMIN配下に接続しないと「孤立ロール」となり、ACCOUNTADMINからも権限が見えなくなる問題が発生します。

この記事で学んだ内容を問題で確認しましょう

16,000問以上の問題で実力チェック

無料で問題を解いてみる
この記事の著者

NicheeLab編集部

データエンジニアリング・クラウド資格の専門家。Databricks・Snowflake等の認定資格を保有し、実務経験に基づいた問題作成・解説を行っています。NicheeLab運営。


関連記事
Snowflake

Snowflake資格一覧|全11試験(SnowPro)の難易度・費用

Snowflake認定資格(SnowPro)全11試験の一覧・難易度・費用・出題範囲を徹底解説。...

Snowflake

Snowflake試験の難易度ランキング|全11資格を徹底比較

Snowflake(SnowPro)認定全11試験の難易度をランキング形式で比較。学習時間・合格に必要なスキルから分析。...

Snowflake

Snowflake資格の勉強方法|効率的な学習ルートと合格のコツ

Snowflake認定資格(SnowPro)に最短で合格するための勉強方法。公式リソース・学習スケジュールを徹底ガイド。...

Snowflake

SnowPro Core試験完全解説|出題範囲・問題例・合格戦略

SnowPro Core Certification(COF-C03)を徹底解説。出題範囲・100問の試験形式・合格ライ...

Snowflake

SnowPro Platform Associate完全解説|入門試験の攻略

SnowPro Associate: Platform Certification(SOL-C01)を徹底解説。最も簡単...

Snowflakeの記事一覧 (102件)
© 2026 NicheeLab All rights reserved.