■
「ロールと権限」〜
ロールとは、システム権限、オブジェクト権限、他のロールをグループ化して名前をつけたものである。
ロールを管理することで、管理者はロール単位でユーザに権限の付与・削除を行え、、ユーザの権限管理を楽に行える。■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権限を持たないが、データ・ディクショナリのビューおよび表にアクセスする必要のあるユーザに付与する。
[ロールの作成]
CREATE ROLE ロール名; [ユーザにロールを与える構文]
GRANT ロール名, [ロール名] TO ユーザ名, [ユーザ名]; [Hint & Memo]
■ロール付与の手順
- ロールを作る
CREATE ROLE ロール名; - ロールにシステム権限やオブジェクト権限を付与する
GRANT システム権限 TO ロール名;
GRANT オブジェクト権限 ON オブジェクト名 TO ロール名;- ユーザにロールを付与する
GRANT ロール名 TO ユーザ名; [補足]
- ロールで与えた権限を、ユーザ個別に削除することはできない。
- ロール作成後に権限を追加で付与した場合、そのロールを与えられているユーザは、ロールの再割り当て無しにその権限を使うことができる。
- SESSION_ROLES
- 現行のセッションで使用できるすべてのロールを表示
- DBA_ROLE_PRIVS
- ユーザと他のロールに対して付与されているすべてのロールを表示
- DBA_SYS_PRIVS
- ユーザとロールに対して付与されているすべてのシステム権限を表示
- USER_ROLE_PRIVS
- 自分(ユーザ)に付与されているすべてのロールを表示
[ユーザからロールを削除する構文]
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
ロールに関する以下の説明で、正しいものはどれか
- 表領域内にどれだけのデータを格納できるかの権限
- データベース管理者に与えられる特別な権限
- データのバックアップを行う際に必要な権限
- データベースを作成するためにOSユーザから与えられる権限
- システム権限とオブジェクト権限を集めてセットにしたもの
問題2
Oracleデータベースにあらかじめ用意されているロール名を選べ。
- DBA
- CREATE
- PRIVS
- RESOURCE
- CONNECT
- GRANT
- 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が使えるシステム権限は次のどれか答えよ。
- CREATE USER
- CREATE TABLE
- ALTER SESSION
- 権限は付与されていない
設問b ユーザscottに与えられているシステム権限は次のどれか答えよ。
- CREATE USER
- CREATE TABLE
- ALTER SESSION
- 権限は付与されていない