9章 ロール
データベース管理システムが必要な理由
本章ではロールについて学んでいきます。
ロールを使用し複数の権限をグループ化することで管理を簡単にしていきましょう。
ロールは権限の入れ物のような機能です。ロールに複数の権限を付与し、
ユーザに付与することでロールに付与された複数の権限を使用することができます。
ロールの特徴は以下の通りです。
・ロールに対し複数の権限を付与できる
・ロールに対しロールを付与できる
・1つのロールを複数のユーザに付与できる
ロールは多くの権限を多くのユーザに付与したい場合に便利な機能です。
また1つのロールでまとめて権限を付与できるので管理が楽になります。
事前定義のロール
データベースを作成すると自動的に作成される事前定義ロールがあります。
CONNECTロール |
CREATE SESSIONが付与されたロール |
RESOURCEロール |
CREATE TABLE権限などのCREATE系の 権限が付与されたロール |
DBAロール |
WITH ADMIN OPTION付きのすべての 権限が付与されたロール |
上記以外のロールも多くありますので、詳しい内容はマニュアルを参照してください。
「Oracle Databaseセキュリティ・ガイド 12cリリース1 (12.1)」
ではロールの作成方法です。
[構文] ロールの作成
CREATE ROLE ロール名;
上記構文でロールを作成後、ユーザに権限を付与するのと
同じように権限をロールに付与していきます。
SQL> CREATE ROLE TEST_ROLE;
Role created.
SQL> GRANT CREATE SESSION TO TEST_ROLE;
Grant succeeded.
SQL> GRANT SELECT ON test_user.test_tbl TO TEST_ROLE;
Grant succeeded.
TEST_ROLEという名前のロールを作成し、
その後、CREATE SESSIONとSELECT権限を付与しました。
では前回作成したTOMユーザにTEST_ROLEを付与してみましょう。
SQL> GRANT test_role TO tom;
Grant succeeded.
TOMユーザはtest_roleを付与されたので、CREATE SESSIONと
test_userユーザのtest_tblテーブルのSELECT権限を使用できます。
セキュアロール
ロールは付与されたら、そのロールの権限を使用することができます。
便利な反面、セキュリティとしては問題があります。
そこでロール使用時にパスワードを入力することで
セキュリティを高めることができます。
[構文] セキュアロールの作成
CREATE ROLE ロール名 IDENTIFIED BY パスワード;
セキュアロールはロール作成時にパスワードを設定する
IDENTIFIED BY句を使用します。
それではTOMユーザにセキュアロールを付与してみます。
SQL> CREATE ROLE delete_test_tbl IDENTIFIED BY test;
Role created.
SQL> GRANT delete ON test_user.test_tbl TO delete_test_tbl;
Grant succeeded.
SQL> GRANT delete_test_tbl TO tom;
Grant succeeded.
SQL> conn tom/tom
Connected.
SQL> DELETE FROM test_user.test_tbl;
delete from test.test
*
ERROR at line 1:
ORA-01031: insufficient privileges
SQL> SET ROLE delete_test_tbl IDENTIFIED BY test;
Role set.
SQL> DELETE FROM test_user.test_tbl;
1 row deleted.
上記例の様にロールはSET ROLEコマンドを使用しパスワードを入力することで、
そのロールの権限を有効化することができます。
ロールの削除
最後にロールの削除方法です。
[構文] ロールの削除
DROP ROLE ロール名;
すでにDB接続しているユーザのロールも削除可能です。
削除されたロールに付与された権限は即座に使用できなくなります。
本章は以上となります。今回はロールの管理について学んでいきました。