はじめに

Vertica7.2より、スキーマレベルの権限継承が可能になりました。従来までは、新規にテーブルを作成した場合、その都度DBユーザーに作成したテーブルの権限付与が必要でした。Vertica7.2からは、予めDBユーザーにスキーマの権限を付与しておくことで、新規に作成したテーブルに対しても権限を自動で付与することできます。

スキーマレベルの権限継承_ロール編
本機能を利用した場合、従来と比べて権限付与のオペレーションを省略することができます。

スキーマレベル権限継承の動作確認

本機能を利用した場合の実行例をご紹介します。

構文

テーブルとビューで、本機能を利用することができます。

【GRANT文】
GRANT { { SELECT | INSERT | UPDATE | DELETE | REFERENCES | TRUNCATE } | ALL [ PRIVILEGES ] } ON [ schema name ] TO { username | role | PUBLIC } [ , … ]
GRANT文でスキーマに対しての権限をDBユーザやロールに割当てます。

【CREATE文】
CREATE SCHEMA { … } [ DEFAULT { INCLUDE | EXCLUDE } [SCHEMA] PRIVILEGES ];

 「INCLUDE」:含める
 「EXCLUDE」:含めない
テーブルを新規で作成する場合、スキーマに付与された権限を含めるかどうかをスキーマレベルで指定します。デフォルトは「DEFAULT EXCLUDE SCHEMA PRIVILEGES」(含めない) でスキーマは作成されます。

CREATE [ … ] TABLE { … } [ { INCLUDE | EXCLUDE } [SCHEMA] PRIVILEGES ];
CREATE [ … ] VIEW { … } [ { INCLUDE | EXCLUDE } [SCHEMA] PRIVILEGES ] { … };

 「INCLUDE」:含める
 「EXCLUDE」:含めない
テーブル/ビューに対してアクセス制御をする場合、スキーマに付与された権限を含めるかどうかを指定します。

【ALTER文】
ALTER DATABASE { … } SET DisableInheritedPrivileges=1;

 「0」:有効
 「1」:無効
データベースレベルで指定する場合は「DisableInheritedPrivileges」パラメーターを変更します。

ALTER SCHEMA { … } [ DEFAULT { INCLUDE | EXCLUDE } [SCHEMA] PRIVILEGES ];
ALTER TABLE { … } [ { INCLUDE | EXCLUDE } [SCHEMA] PRIVILEGES ];
ALTER VIEW { … } [ { INCLUDE | EXCLUDE } [SCHEMA] PRIVILEGES ];

 「INCLUDE」:含める
 「EXCLUDE」:含めない
ALTER文でスキーマ/テーブル/ビューの権限管理を変更できます。


実行結果

Vertica7.1とVertica7.2の動作は、以下のとおりになります。

【Vertica7.1まで】


【Vertica7.2から】


参考情報

・権限管理を容易にする方法(ロールについて)
http://vertica-tech.ashisuto.co.jp/create_role/

・作成したロールの情報を確認する方法
http://vertica-tech.ashisuto.co.jp/role_informations/

検証バージョンについて

この記事の内容はVertica 7.2で確認しています。