カスタムロールとセカンダリロール

Snowflake の管理、ガバナンス、コラボレーション

Emily Melhuish

Technical Curriculum Developer, Snowflake

フラットなロール構成の問題点

さまざまな権限を指すアナリストの一覧

Snowflake の管理、ガバナンス、コラボレーション

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

アクセスロールとファンクショナルロールの継承関係を示す図

  • アクセスロールは特定オブジェクトへの特定権限を保持
  • ファンクショナルロールはアクセスロールを継承する上位ロール
1 [Snowflake: Aligning Object Access with Business Functions](https://docs.snowflake.com/en/user-guide/security-access-control-considerations#aligning-object-access-with-business-functions)
Snowflake の管理、ガバナンス、コラボレーション

仕組み

実際の動作例

  • アクセスロールは特定の権限を保持
  • ファンクショナルロールは1つ以上のアクセスロールを継承
  • ユーザーにはファンクショナルロールを割り当て
Snowflake の管理、ガバナンス、コラボレーション

SQLでの階層構築

ステップ1: アクセスロールを作成しオブジェクト権限を付与

CREATE ROLE credit_read;
GRANT USAGE ON DATABASE claro_db 
TO ROLE credit_read;
GRANT USAGE ON SCHEMA claro_db.core 
TO ROLE credit_read;
GRANT SELECT ON TABLE core.credit_scores
  TO ROLE credit_read;

ステップ2: ファンクショナルロールを作成しアクセスロールを継承

CREATE ROLE analyst;
GRANT ROLE credit_read TO ROLE analyst;

ステップ3: ユーザーにファンクショナルロールを割り当て

GRANT ROLE analyst TO USER ana;
Snowflake の管理、ガバナンス、コラボレーション

アカウントロールとデータベースロール

アカウントロール データベースロール
スコープ 任意のデータベースまたはスキーマ 単一データベースに限定
ユーザーへの付与 不可 - アカウントロールに付与
SQL CREATE ROLE CREATE DATABASE ROLE
ユースケース アカウント全体の職務機能を表す 単一DB内のオブジェクトアクセスをまとめる
Snowflake の管理、ガバナンス、コラボレーション

セカンダリロール

  • 各セッションでは USE ROLE <Role Name> でプライマリロールを設定します
  • デフォルトでセカンダリロールは ALL に設定: 割り当て済みロールがすべて有効
  • USE SECONDARY ROLES <role_name> で特定のサブセットを有効化

  • USE SECONDARY ROLES NONE でプライマリロールのみに制限

セッションでのセカンダリロール制御

USE SECONDARY ROLES ALL;
USE SECONDARY ROLES <role_name>;
USE SECONDARY ROLES NONE;
1 [Snowflake BCR-1692: Secondary Roles Default Change](https://docs.snowflake.com/en/release-notes/bcr-bundles/2024_08/bcr-1692)
Snowflake の管理、ガバナンス、コラボレーション

フューチャーグラント

このスキーマに追加される新しいテーブルすべてに SELECT を自動付与

GRANT SELECT ON FUTURE TABLES
  IN SCHEMA core
  TO ROLE credit_read;
Snowflake の管理、ガバナンス、コラボレーション

練習しましょう!

Snowflake の管理、ガバナンス、コラボレーション

Preparing Video For Download...