ORACLE/ROLE編

オラクルちょこっとリファレンス

HOME > CREATE ROLE編

ROLE(ロール)

ロールとは権限を一つのオブジェクトにまとめたものです。

権限にはかなりの種類があり、それを一つ一つユーザに割り当てるのは大変です。
そうした場合にロールを使用するととても容易に権限を管理することができます。

権限については、権限編をご覧ください。

ロールの作成

ロールの作成には、CREATE ROLE句を使用します。

CREATE ROLE構文
CREATE ROLE ロール名
  [NOT IDENTIFIED | IDENTIFIED BY パスワード];

パラメータ 説明
NOT IDENTIFIED パスワードを設定しない場合
IDENTIFIED BY ロールを使用可能にする時のパスワードを設定する

ロールを作成するためには、「CREATE ROLE」システム権限が必要です。

ロールに権限や他のロールを与える

作成したロールに権限を与える事で、機能するロールになります。

構文(ロールに権限を与える)
GRANT システム権限 TO ロール名; ※権限を付与したロールを他のロールに付与する事もできます。 GRANT ロール名 TO ロール名;

【参考】ロールではなく、ユーザーに直接権限を与えることもできます。

構文(ユーザにロールを付与する)
GRANT ロール名 TO [ユーザ名 | PUBLIC]
  [WITH ADMIN OPTION];

パラメータ 説明
ユーザ名 | PUBLIC ユーザ名:指定したユーザに対してロールを付与する
PUBLIC:全てのユーザにロールを付与する
WITH ADMIN OPTION 他のユーザへのロールの付与・取消の権限も与える場合に指定する
ROLEの作成から付与までの例文
--(例)ロールを作成してCREATE SESSION権限と -- SELECT ANY TABLE権限をセットして、ユーザ「taro」に付与する。 CREATE ROLE select_role; GRANT CREATE SESSION, SELECT ANY TABLE TO select_role; GRANT select_role TO taro;

ロールから権限や付与したロールを剥奪する

ロールからロール/権限を剥奪したい時は、REVOKE句を使用します。

構文(ロールから権限を剥奪する)
REVOKE {システム権限 | ロール名} [, ...] FROM ロール名;

ROLEから権限を剥奪する例文
--(例)ロール(ロール名:test_role)から「DROP ANY TABLE」と --「DROP ANY INDEX」システム権限を剥奪する。 REVOKE DROP ANY TABLE, DROP ANY INDEX FROM test_role;

ロールの削除

ロールの削除には DROP ROLE句を使用します。

DROP ROLE構文
DROP ROLE <ロール名>;

ROLE削除の例文
--(例)ロール(ロール名:test_role)を削除する。 DROP ROLE test_role;

ロールの情報を表示する

ロールの情報を表示するには DBA_ROLESデータディクショナリビューを検索します。

ロールの情報を表示する
SELECT * FROM DBA_ROLES;

【DBA_ROLESの主要カラム】
カラム内容
ROLEロール名
AUTHENTICATION_TYPEロールの認証方式(NONE/EXTERNAL/GLOBAL/APPLICATION/PASSWORD)
COMMONロールが共通かどうか
(YES:共通 NO:共通でない)
ORACLE_MAINTAINEDオラクルが提供したスクリプトによって作成されたロールか否か (Y/N)
ToTop