ロール

ロール とは役割を意味します。オブジェクト権限システム権限を個別のユーザに与えるのではなく、ロールに与えることができます。 ロールをユーザに与えることによって、ユーザをグループごとに管理できます。 ロールは複数のユーザに与えることができます。また、ユーザは複数のロールを与えられることがあります。

ロールとは

ロールとは、ユーザの役割を示すデータベース・オブジェクトである。システム権限やオブジェクト権限を直接ユーザに付与すると権限管理が煩雑になるため、ロールを介して権限を付与できる。

たとえば、権限をユーザに直接付与したときの関連は次のようになる。

権限をユーザに付与
Figure 1. 権限をユーザに付与

権限をロールに付与して、そのロールをユーザに付与すると次のようになる。

権限をロールに付与
Figure 2. 権限をロールに付与

ロールにロールを付与すると次のようになる。

ロールにロールを付与
Figure 3. ロールにロールを付与

ロールは非スキーマオブジェクトである。

定義済みのロール

Oracleデータベースには、次に示す事前定義済みのロールがある。

CONNECT
エンドユーザー向けのロールです。CREATE SESSIONやCREATE TABLE、CREATE VIEWなどのシステム権限が与えられています。
RESOURCE
開発者向けのロールです。CREATE TRIGGERやCREATE PROCEDUREなどのシステム権限が与えられています。CONNECTロールに含まれているシステム権限は含まれていません。
DBA
データベース管理者向けのロールです。すべてのシステム権限がWITH ADMIN OPTION付きで与えられています。

これらの定義済みのロールは互換性のために残されているだけで、使用は推奨されていません。

データディクショナリビュー

ロールに関するデータ・ディクショナリ・ビューには、次のものがある。

DBA_ROLE_PRIVS
Oracleデータベース内のすべてのユーザーおよびロールに付与されたロール
DBA_ROLES
データベース内のすべてのロール
ROLE_ROLE_PRIVS
別のロールに付与されたロール
USER_ROLE_PRIVS
現在のユーザーに付与されたロール

ALL_ROLES や USER_ROLES という名前のデータ・ディクショナリ・ビューは存在しない。

SQL

ロールに関するSQL文には、次のものがある。

CREATE ROLE
ロールを作成する。
ALTER ROLE
ロールを変更する。
DROP ROLE
ロールを削除する。
GRANT
ロールに権限を付与したり、ユーザにロールを付与する。
REVOKE
ロールから権限を剥奪したり、ユーザからロールを剥奪する。

システム権限

ロールに関するシステム権限には、次のものがある。

CREATE ROLE
自分のスキーマにロールを作成できる。
ALTER ANY ROLE
任意のスキーマにあるロールを変更できる。
DROP ANY ROLE
任意のスキーマにあるロールを削除できる。
GRANT ANY ROLE
任意のロールを付与できる。