■本記事の目的
Snowflakeのトライアルおよびご契約後の初期設定を行うため
管理者ロールの段階を理解するため
■前回の記事
Snowflake 初期設定:③USERADMIN編 ユーザー ロール作成
■今回の作業
SECURITYADMINでの作業に戻ります。
ロールを実際に階層化していきます。
■ロール階層の作成
前段でアクセスロールとファンクショナルロールを定義した理由ですが、
オブジェクト制御権限は、オブジェクトによっては非常に細かい制御をロールに対して行う必要があります。一つのロールに対してオブジェクトで都度考えながら権限を振るのは管理上の手間となります。そのためアクセスケースをあらかじめ整理して、オブジェクトのアクセス制御権限をロールでセットとする考え方で管理を効率化します。
上位ロールは下位ロールの操作権限を継承できるためアクセスロールとファンクショナルロールというロールの階層構成が可能となっています。
上位ロールに下位ロールを構成します。
アクセスロールとファンクショナルロールの関係性ですが、
継承を利用したロール階層構成ですので、以下の構文となります。
use role SECURITYADMIN ;
grant role <アクセスロール> to role <ファンクショナルロール> ;
例
--データベースアクセスを付与
grant role TEST_ACCESS_SELECT_ROLE to role TEST_FUNCTIONAL_ANALYST_ROLE ;
grant role TEST_ACCESS_ALL_ROLE to role TEST_FUNCTIONAL_DBADMIN_ROLE ;
--ウェアハウスアクセスを付与
grant role TEST_ACCESS_WH_ROLE to role TEST_FUNCTIONAL_ANALYST_ROLE ;
grant role TEST_ACCESS_WH_ROLE to role TEST_FUNCTIONAL_DBADMIN_ROLE ;
親ロールの最後は一部の例を除き、SYSADMINとしておきます。
SYSADMINで下位ロールのオブジェクト管理ができるようにしておきます。
use role SECURITYADMIN ;
grant role <ファンクショナルロール> to role SYSADMIN ;
例
grant role TEST_FUNCTIONAL_ANALYST_ROLE to role SYSADMIN ;
grant role TEST_FUNCTIONAL_DBADMIN_ROLE to role SYSADMIN ;
■ロール階層における注意点
別の方の記事での注意点を閲覧したところ
共有(SHARE)の権限はむやみにSYSADMINに継承しない方がいいみたいです。
ロール階層を組むことが必須ではないロール構成もあるようです。
DB関連ではないですが、サポート管理ロールなども独立させるようにしていたので、
上位ロールに継承させたくない場合は考慮しましょう。
■あとがき
ロール設計については、お客様の要件や規模、DB環境などで構成が変わるので
図面化してから作成したほうが良さそうです。
ユーザーへのロールの割当ては、次回とさせてください。