第5章 ロール(補足)

1.ロールとは?

「ロールと権限」〜
ロールとは、システム権限、オブジェクト権限、他のロールをグループ化して名前をつけたものである。
ロールを管理することで、管理者はロール単位でユーザに権限の付与・削除を行え、、ユーザの権限管理を楽に行える。

■Oracleにはあらかじめシステム権限のいくつかをまとめた3つのロールが用意されている。

CONNECT
エンドユーザ向けのシステム権限セット。
「接続するための権限(CREATE SESSION)」「表を作成する権限(CREATE TABLE)」「ビューを作成する権限(CREATE VIEW)」など。
RESOURCE
開発者向けのシステム権限セット。
CONNECTロールと共に与える。
「トリガーを作成する権限(CREATE TRIGGER)」「プロシージャを作成する権限(CREATE PROCEDURE)」など。
DBA
データベース管理者用。
すべてのシステム権限およびWITH ADMIN OPTION。
EXP_FULL_DATABASE
データベースをエクスポートする権限
エクスポート・ユーティリティを使用するユーザに付与する
IMP_FULL_DATABASE
データベースをインポートする権限
インポート・ユーティリティを使用するユーザに付与する

[DBA豆知識]

 CONNECTロール、RESOURCEロールはOracle7の時に考えられた権限セットで、Oracle8ではこのロールを使うことを推奨していない。Oracle8以降でデータベースを構築する場合、CONNECTロール、RESOURCEロールを使わずに、用途別のロールを作成するべきである。
(CONNECTロール、RESOURCEロールは下位互換性のために提供されている)また、Oracle8 8.0以降では、次のロールが追加されている。

DELETE_CATALOG_ROLE
データ・ディクショナリ表のDELETE権限。
EXECUTE_CATALOG_ROLE
データ・ディクショナリ・パッケージのEXECUTE権限。
SELECT_CATALOG_ROLE
データ・ディクショナリ表のSELECT権限。

これらのロールは、DBA権限を持たないが、データ・ディクショナリのビューおよび表にアクセスする必要のあるユーザに付与する。

2.ロールの付与

[ロールの作成]

CREATE ROLE ロール名;

[ユーザにロールを与える構文]

GRANT ロール名, [ロール名] TO ユーザ名, [ユーザ名];

[Hint & Memo]

■ロール付与の手順

  1. ロールを作る
    CREATE ROLE ロール名;
  2. ロールにシステム権限やオブジェクト権限を付与する
    GRANT システム権限 TO ロール名;
    GRANT オブジェクト権限 ON オブジェクト名 TO ロール名;
  3. ユーザにロールを付与する
    GRANT ロール名 TO ユーザ名;

[補足]

3.ロールの確認

SESSION_ROLES
現行のセッションで使用できるすべてのロールを表示
DBA_ROLE_PRIVS
ユーザと他のロールに対して付与されているすべてのロールを表示
DBA_SYS_PRIVS
ユーザとロールに対して付与されているすべてのシステム権限を表示
USER_ROLE_PRIVS
自分(ユーザ)に付与されているすべてのロールを表示

4.ロールの取り消し

[ユーザからロールを削除する構文]

REVOKE ロール名, [ロール名] FROM ユーザ名, [ユーザ名];

[ロールの削除]

DROP ROLE ロール名;

[補足]

補足 権限を確認するデータ・ディクショナリ

ユーザに与えられているシステム権限SESSION_PRIVS
ユーザに与えられたオブジェクト権限USER_TAB_PRIVS_RECD
ユーザが与えたオブジェクト権限USER_TAB_PRIVS_MADE
ユーザに与えられているロール名SESSION_ROLES
ロールに含まれているシステム権限名ROLE_SYS_PRIVS
ロールに含まれているオブジェクト権限名ROLE_TAB_PRIVS
ロールに含まれているロール名ROLE_ROLE_PRIVS

練習問題

問題1

ロールに関する以下の説明で、正しいものはどれか

  1. 表領域内にどれだけのデータを格納できるかの権限
  2. データベース管理者に与えられる特別な権限
  3. データのバックアップを行う際に必要な権限
  4. データベースを作成するためにOSユーザから与えられる権限
  5. システム権限とオブジェクト権限を集めてセットにしたもの

問題2

Oracleデータベースにあらかじめ用意されているロール名を選べ。

  1. DBA
  2. CREATE
  3. PRIVS
  4. RESOURCE
  5. CONNECT
  6. GRANT
  7. ADMIN

問題3

DBA権限を持つユーザで、以下のコマンドを実行した。

CREATE ROLE R1;
GRANT CREATE TABLE, ALTER SESSION TO R1;
GRANT R1 TO scott;
GRANT CREATE USER, CREATE TABLE TO PUBLIC;
REVOKE CREATE TABLE FROM scott;

設問a ユーザscottが使えるシステム権限は次のどれか答えよ。

  1. CREATE USER
  2. CREATE TABLE
  3. ALTER SESSION
  4. 権限は付与されていない

設問b ユーザscottに与えられているシステム権限は次のどれか答えよ。

  1. CREATE USER
  2. CREATE TABLE
  3. ALTER SESSION
  4. 権限は付与されていない

[ TOP ]