role_sys_privs テーブルから取得する

Oracleアカウント毎に、個別に権限を付与して運用する方法は効率的ではない。
オブジェクト権限、システム権限はロールでの一括管理が有効だ。

ロールに付与されている権限を確認するにはデータディクショナリの
role_sys_privs テーブルを参照する。

テーブル定義

SQL> desc role_sys_privs

 名前           NULL?    型
 ------------ -------- ------------
 ROLE         NOT NULL VARCHAR2(30)
 PRIVILEGE    NOT NULL VARCHAR2(40)
 ADMIN_OPTION          VARCHAR2(3)

 

RESOURCE ロールの確認例

SQL> select * from role_sys_privs where role = 'RESOURCE';

ROLE     PRIVILEGE        ADMIN_
-------- ---------------- ------
RESOURCE CREATE TRIGGER   NO
RESOURCE CREATE SEQUENCE  NO
RESOURCE CREATE CLUSTER   NO
RESOURCE CREATE TYPE      NO
RESOURCE CREATE PROCEDURE NO
RESOURCE CREATE TABLE     NO
RESOURCE CREATE INDEXTYPE NO
RESOURCE CREATE OPERATOR  NO

8行が選択されました。

Oracle標準の開発者向けのロールなので、各種オブジェクトに対しての
作成権限が含まれていることがわかる。(ADMIN OPTION は無し)

ロール作成時の注意事項

オリジナルのロールを作成する場合は、対象となるユーザが管理者なのか、開発者なのか、運用者なのか。どのようなオブジェクト権限、システム権限が必要なのか。

ふわっとした権限設定は、セキュリティリスクやオペレーションリスクを増やす要因になる。
ユーザ種別を踏まえた上で、「必要最低限」の権限セットをロールに定義することが重要。

関連記事