ここではORACLEデータベースで、ロールを作成・変更・削除するSQLを紹介しています。
ロールの一覧を確認する方法は↓で紹介しています。
>>【ORACLE】ロールの一覧を確認するSQL
ロールとは
ロールとは複数の権限をグループにまとめたものです。
ロールには、システム権限やオブジェクト権限、さらにロールもまとめることが出来ます。
ユーザーに権限を割り当てる際、複数の権限を1つ1つ付与するのは大変ですが、ロールを使うことで、グループ化された権限を1度で付与することが出来ます。
権限には非常にたくさんの種類があります。オブジェクト権限やシステム権限については↓で紹介していますのでぜひ参考にしてください。
>>【ORACLE】オブジェクト権限を付与・取消するSQL
>>【ORACLE】システム権限の一覧
ロールを作成するSQL
ロールの作成はCREATE SEQUENCE文を使います。
ロールの作成や変更、削除には↓の権限が必要です。
作成:CREATE ROLE
変更:ALTER ANY ROLE
削除:DROP ANY ROLE
付与:GRANT ANY ROLE
システム権限の付与の方法については↓で紹介していますので参考にしてください。
>>【ORACLE】システム権限を付与・取消するSQL
CREATE ROLE文の基本構文
CREATE SEQUENCEの基本構文は次の通りです。
CREATE ROLE ロール名
[NOT IDENTIFIED | IDENTIFIED BY パスワード];
・[NOT IDENTIFIED]を指定することでパスワードを入力しなくてもロールを使用可能に出来ます。
・[IDENTIFIED BY パスワード]を指定することで、ロールを使用するときに入力するパスワードを登録します。
CREATE ROLE文のSQLサンプル
CREATE ROLE文のサンプルです。
次のSQLでは、1行目でTEST_ROLE1ロールを作成しています。2行目でSELECT ANE TABLE権限を付与しています。
CREATE CREATE test_role1;
GRANT SELECT ANY TABLE TO test_role1;
ロールは作成した時点では一切権限が付与されていないので、GRANT文を使って権限を付与する必要があります。
ロールに権限を付与する方法は↓で詳しく紹介していますのでぜひ参考にしてください。
>>【ORACLE】ロールを付与・取消するSQL
ロールを変更するSQL
ALTER文を使うことで、ロールを使用するための認可を変更することが出来ます。
ALTER ROLE ロール名
[NOT IDENTIFIED | IDENTIFIED BY パスワード];
ロールを削除するSQL
ロールを削除するときはDROP文を使います。
DROP ROLE test_role1;
ORACLEで定義されたデフォルトロール
ロール名 | 説明 |
CONNECT | ・一般ユーザ用のシステム権限をまとめたロール ・CREATE SESSIONシステム権限が付与されています。 |
RESOURCE | ・開発者用のシステム権限をまとめたロール ・テーブルやクラスタ、プロシージャ、シーケンス PROCEDURE、トリガーなどを作成する権限が付与されています。 |
DBA | ・データベース管理者用のシステム権限をまとめたロール ・ADMINオプション付きのた全てのシステム権限が付与されています。 |
EXP_FULL_DATABASE | データベースのエクスポートと増分エクスポート実行用のロール |
IMP_FULL_DATABASE | エクスポートされたオブジェクトのインポート実行用のロール |
SELECT_CATALOG_ROLE | データ・ディクショナリ内のオブジェクトに対するSELECT権限 |
EXECUTE_CATALOG_ROLE | データ・ディクショナリ内のオブジェクトに対するEXECUTE権限 |
DELETE_CATALOG_ROLE | システム監査表(AUD$)に対するDELETE権限 |
RECOVERY_CATALOG_OWNER | リカバリ・カタログの所有者の権限 |
まとめ
ロールの作成はCREATE ROLE、変更はALTER文、削除はDROP文を使います。
ロールの作成や変更、削除には↓の権限が必要です。
作成:CREATE ROLE
変更:ALTER ANY ROLE
削除:DROP ANY ROLE
付与:GRANT ANY ROLE
システム権限の付与の方法については↓で紹介していますので参考にしてください。
>>【ORACLE】システム権限を付与・取消するSQL