はじめに

通常、新規にテーブル/ビューを作成する際、スキーマに付与されている権限が継承(※)されます。

例えば、スキーマに権限継承の設定がされていれば、そのスキーマに作成される新規テーブル/ビューに対して全てのスキーマ権限が継承されます。
スキーマに権限継承の設定がされていなければ、新規テーブル/ビューに対してスキーマ権限は継承されません。

ただし、CREATE TABLE/VIEWコマンドにオプション指定することにより、作成時に権限継承させるか否かを制御できます。
今回はオプションの指定方法とその動作を紹介いたします。

(※)権限継承の設定については、以下の記事をご参照ください。
新規にテーブルを作成した場合の権限管理 (7.2新機能)
http://vertica-tech.ashisuto.co.jp/schema_privileges/

構文

EXCLUDE・・・スキーマ権限を継承しない
INCLUDE・・・スキーマ権限を継承する

次に2つのパターンを例に、オプションの使い方をご案内します。

パターン1:スキーマに権限継承の設定がされていない場合

概要

権限継承の設定をせずにスキーマを作成します。
通常、このスキーマに新規作成されるテーブル/ビューにはスキーマ権限は継承されませんが、
INCLUDE PRIVILEGESオプションを指定することで、作成時の指定により継承させられることを確認します。

詳細

①権限継承の設定を行わずにs1スキーマを作成します。

②user1ユーザーを作成し、権限付与します。

③権限検証に関するオプションを指定せずに t1 テーブルを作成します。

スキーマ作成時に権限継承に関するオプションを指定をしなかった場合、「DEFAULT EXCLUDE SCHEMA PRIVILEGES」がデフォルトで設定されます。

④user1ユーザーにログインし、t1テーブルが参照できないことを確認します。

⑤テーブル作成時、INCLUDE PRIVILEGESオプションを付与します。

⑥t2テーブルが参照可能となっていることを確認します。

パターン2:スキーマに権限継承の設定がされている場合

概要

権限継承の設定をしてスキーマを作成します。
通常、このスキーマに新規作成されるテーブル/ビューにはスキーマ権限が継承されますが、
EXCLUDE PRIVILEGESオプションを指定することで、権限の継承を無効にできることを確認します。

詳細

①権限継承の設定を行い、s2スキーマを作成します。

②user2ユーザーを作成し、権限付与します。

③権限検証に関するオプションを指定せずに t1 テーブルを作成します。

④user2ユーザーにログインし、t1テーブルが参照可能となっていることを確認します。

⑤テーブル作成時、EXCLUDE PRIVILEGESオプションを付与します。

⑥t2テーブルが参照できないことを確認します。

参考情報

新規にテーブルを作成した場合の権限管理 (7.2新機能)
http://vertica-tech.ashisuto.co.jp/schema_privileges/

Inherited Privileges
https://www.vertica.com/docs/9.2.x/HTML/Content/Authoring/AdministratorsGuide/DBUsersAndPrivileges/Privileges/InheritedPrivilegesOverview.htm

Setting Privileges Inheritance on Tables and Views
https://www.vertica.com/docs/9.2.x/HTML/Content/Authoring/AdministratorsGuide/DBUsersAndPrivileges/Privileges/TableViewInheritance.htm

Enabling Database Inheritance
https://www.vertica.com/docs/9.2.x/HTML/Content/Authoring/AdministratorsGuide/DBUsersAndPrivileges/Privileges/EnableDatabaseInheritance.htm

検証バージョンについて

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

更新履歴

2019/11/29 本記事を公開