ロール

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

目次

  1. ロールとは
  2. 定義済みのロール
    1. CONNECT
    2. RESOURCE
    3. DBA
  3. データ・ディクショナリ・ビュー
    1. DBA_ROLE_PRIVS
    2. DBA_ROLES
    3. ROLE_ROLE_PRIVS
    4. USER_ROLE_PRIVS
  4. SQL
    1. CREATE ROLE
    2. ALTER ROLE
    3. DROP ROLE
    4. GRANT
    5. REVOKE
  5. システム権限
    1. CREATE ROLE
    2. ALTER ANY ROLE
    3. DROP ANY ROLE
    4. GRANT ANY ROLE

ロールとは

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

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

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

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

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

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

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

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

定義済みのロール

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

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

CONNECT

CONNECT は、エンドユーザー向けのロールです。CREATE SESSIONやCREATE TABLE、CREATE VIEWなどのシステム権限が与えられています。

RESOURCE

RESOURCE は、開発者向けのロールです。CREATE TRIGGERやCREATE PROCEDUREなどのシステム権限が与えられています。CONNECTロールに含まれているシステム権限は含まれていません。

DBA

DBA は、データベース管理者向けのロールです。すべてのシステム権限がWITH ADMIN OPTION付きで与えられています。

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

ロールに関するデータ・ディクショナリ・ビューを以下に示す。

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

DBA_ROLE_PRIVS

DBA_ROLE_PRIVS は、Oracleデータベース内のすべてのユーザーおよびロールに付与されたロールを示すデータ・ディクショナリ・ビューである。

DBA_ROLES

DBA_ROLES は、データベース内のすべてのロールを示すデータ・ディクショナリ・ビューである。

ROLE_ROLE_PRIVS

ROLE_ROLE_PRIVS は、別のロールに付与されたロールを示すデータ・ディクショナリ・ビューである。

USER_ROLE_PRIVS

USER_ROLE_PRIVS は、現在のユーザーに付与されたロールを示すデータ・ディクショナリ・ビューである。

SQL

ロールに関するSQL文を以下に示す。

CREATE ROLE

CREATE ROLE は、ロールを作成するSQL文である。

ALTER ROLE

ALTER ROLE は、ロールを変更するSQL文である。

DROP ROLE

DROP ROLE は、ロールを削除するSQL文である。

GRANT

GRANT は、ロールに権限を付与したり、ユーザにロールを付与するSQL文である。

REVOKE

REVOKE は、ロールから権限を剥奪したり、ユーザからロールを剥奪するSQL文である。

システム権限

ロールに関するシステム権限を以下に示す。

CREATE ROLE

CREATE ROLE は、自分のスキーマにロールを作成できるシステム権限である。なお、自分のスキーマにあるロールの変更や削除もできる。

ALTER ANY ROLE

ALTER ANY ROLE は、任意のスキーマにあるロールを変更できるシステム権限である。

DROP ANY ROLE

DROP ANY ROLE は、任意のスキーマにあるロールを削除できるシステム権限である。

GRANT ANY ROLE

GRANT ANY ROLE は、任意のロールを付与できるシステム権限である。