はじめに
データベースオブジェクトの権限はGRANTによる個別付与、ロールによる付与、 継承による自動付与など様々な設定を基に決定されており、システムテーブルによる確認は煩雑になります。
Vertica9.3.1の新機能であるGET_PRIVILEGES_DESCRIPTIONファンクションを利用することで、指定されたデータベースオブジェクトに対する有効な権限を簡単に確認することができます。
GET_PRIVILEGES_DESCRIPTIONファンクション
構文
GET_PRIVILEGES_DESCRIPTION( ‘type’, ‘[[database.]schema.]name’ );
パラメータ | 説明 |
|---|---|
type | 次のいずれかのオブジェクトタイプを指定します。 |
[database.]schema | データベースとスキーマを指定します。 |
name | オブジェクト名 |
利用例
fitnessスキーマに対するdbadminユーザの有効な権限を確認する例)
dbadmin=> SELECT GET_PRIVILEGES_DESCRIPTION('schema', 'fitness');
GET_PRIVILEGES_DESCRIPTION
--------------------------------------------------------------------------------------------
INSERT*, SELECT*, UPDATE*, DELETE*, ALTER*, REFERENCES*, DROP*, USAGE*, CREATE*, TRUNCATE*
(1 row)dbadminユーザは管理ユーザのため、全ての権限を所持していることが確認できます。
fitnessスキーマに対するu1ユーザの有効な権限を確認する例)
*u1ユーザの作成*
dbadmin=> CREATE USER u1 ;
CREATE USER
*u1ユーザへfitnessスキーマのSELECT、USAGE権限を付与*
dbadmin=> GRANT SELECT,USAGE ON SCHEMA fitness TO u1;
GRANT PRIVILEGE
*u1ユーザでGET_PRIVILEGES_DESCRIPTIONファンクションを実行*
u1=> SELECT GET_PRIVILEGES_DESCRIPTION('schema', 'fitness');
GET_PRIVILEGES_DESCRIPTION
----------------------------
SELECT, USAGE
(1 row)付与したSELECT、USAGE権限を所持していることを確認することができました。
参考情報
・GET_PRIVILEGES_DESCRIPTION
https://www.vertica.com/docs/9.3.x/HTML/Content/Authoring/SQLReferenceManual/Functions/VerticaFunctions/GET_PRIVILEGES_DESCRIPTION.htm
・ユーザやオブジェクトに与えられた権限を確認する方法
https://www.ashisuto.co.jp/cm/analytics-database/grants-object.html
検証バージョン
この記事の内容はVertica 9.3で確認しています。
更新履歴
2020/08/21 本記事を公開