SQL DCL:ユーザー、ロール、権限
ユーザーとは?
Oracleデータベースへログインするアカウント
・ ユーザ名
・ パスワード
・ 表領域
・ 表領域サイズ
・ プロファイル
を設定できる。
作成
オブジェクト作成先表領域
[ DEFAULT TABLESPACE (デフォルト表領域名) ]
※省略した場合、SYSTEM表領域に作成される
使用する一時表領域
[ TEMPORARY TABLESPACE (一時表領域名) ]
※省略した場合、SYSTEM表領域が使用される
表領域割当制限
[ QUOTA (サイズ) ON (表領域名) ]
※省略した場合、割り当てサイズ=0=ユーザはオブジェクトを作成できない
[ PROFILE (プロファイル名) ]
※省略した場合、DEFAULT プロファイルが割り当てられる
;
デフォルトで作成されるユーザー
「Oracle DBCA使用方法/デフォルトで作成されるユーザー一覧」参照
削除
ログイン中のユーザーは削除できない
ユーザーが所有している(=スキーマ内の)オブジェクトも削除される
権限
オブジェクト権限
他スキーマの所有者が、別スキーマユーザーに対して付与
オブジェクト権限名 | 表 | ビュー | 順序 | プロシージャ | 内容 |
---|---|---|---|---|---|
SELECT | ○ | ○ | ○ | ||
INSERT | ○ | ○ | |||
UPDATE | ○ | ○ | |||
DELETE | ○ | ○ | |||
ALTER | ○ | ○ | |||
INDEX | ○ | ||||
REFERENCES | ○ | 参照整合性制約を作成 | |||
EXECUTE | ○ | PL/SQLプログラムを実行 | |||
READ WRITE |
ディレクトリオブジェクト |
GRANT (権限名) ON (オブジェクト名) TO ユーザー名/ロール名
SQL> Grant Select, Insert, Update, Delete On tbl_test To user_test;
※ユーザー:user_testに対して、テーブル:tbl_testに関するSELECT~の権限を付与
SQL> Grant Execute On func_test To user_test;
※ユーザー:user_testに対して、関数:func_testに関する実行権限を付与
オブジェクト(表やビュー)作成(CREATE)時はそのオブジェクトの権限が全て付与される
システム権限
DBAがユーザーに権限を付与する
システム権限名 | CREATE | ALTER | DROP | 他 | 説明 |
---|---|---|---|---|---|
ANY INDEX | ○ | ○ | ○ | 任意のスキーマ内の索引 | |
ANY PROCEDURE | ○ | 任意のスキーマ内のプロシージャ | |||
ANY SEQUENCE | ○ | 任意のスキーマ内の順序 | |||
ANY SYNONYM | ○ | 任意のスキーマ内の別名 | |||
ANY TABLE | ○ | 任意のスキーマの表 | |||
ANY TRIGGER | ○ | 任意のスキーマ内のトリガー | |||
ANY VIEW | ○ | 任意のスキーマのビュー | |||
CLUSTER | ○ | ○ | ○ | 任意のスキーマ内のクラスタ | |
DATABASE LINK | ○ | プライベートデータベースリンク | |||
PROCEDURE | ○ | ○ | ○ | EXECUTE | 自スキーマ内のプロシージャ |
PROFILE | ○ | ○ | ○ | プロファイル | |
PUBLIC SYNONYM | ○ | パブリックシノニム | |||
ROLE | ○ | ○ | ○ | ロール | |
SEQUENCE | ○ | ○ | ○ | SELECT | 自スキーマ内の順序 |
SYNONYM | ○ | ○ | 自スキーマ内の別名 | ||
PUBLIC SYNONYM | ○ | パブリックシノニム | |||
TABLE | ○ | ○ | ○ | SELECT INSERT UPDATE DELETE LOCK COMMENT | 自スキーマの表 SELECT~DELETE はVIEWにも有効 |
VIEW | ○ | ○ | 自スキーマのビュー | ||
TABLESPACE | ○ | ○ | ○ | 表領域 | |
TRIGGER | ○ | ○ | 自スキーマのトリガー | ||
USER | ○ | ○ | ○ | ユーザ | |
SESSION | ○ | セッションのパラメータ | |||
ANALYZE ANY | 表・索引を分析する権限 | ||||
AUDIT ANY | スキーマオブジェクトを監査する権限 | ||||
管理ユーザー | |||||
SYSDBA | SYSOPER + オブジェクトの作成など何でも出来る権限 | ||||
SYSOPER | DBの起動・停止。データディクショナリへはアクセス不可 |
・INSERT ANY/SELECT ANY/UPDATE ANY/DELETE ANY
・CREATE/CREATE ANY/DROP
・ROCK
・SYSDBA/SYSOPER データベースの起動/停止
GRANT (権限名) TO ユーザー名/ロール名
SQL> Grant Select Any Table To user_test;
※ユーザー:user_testに対して、全テーブルに関するSELECT権限を付与
SQL> Grant Execute Any Procedure To user_test;
※ユーザー:user_testに対して、全関数の実行権限を付与
権限削除
SQL> Revoke Select, Insert, Update, Delete On tbl_test To user_test;
※ユーザー:user_testに対して、テーブル:tbl_testに関するSELECT~の権限を削除
フラッシュバック表実行権限
or
・FLASHBACK ANY TABLEシステム権限
・対照の表へのSELECT、ALTER、INSERT、DELETEオブジェクト権限
役割
権限をグループ化したもの
ロールに割り当てた権限はPL/SQL実行時には適用されない
ROLE
ユーザーに対して権限の集合を付与
OSのアカウントグループ
ユーザーの集合に対して権限を付与
定義済みロール
ロール名 | 説明 | 権限 |
---|---|---|
CONNECT | 一般ユーザ用 DB接続、表やビューの作成等 |
・CREATE SESSION |
RESOURCE | 開発者用 プロシージャやトリガの作成等 CONNECTロールも別途必要 |
・CREATE CLUSTER ・CRETAE INDEX TYPE ・CREATE SEQUENCE ・CREATE PROCEDURE ・CREATE TRIGGER ・CREATE TABLE |
DBA | 管理者用 ADMIN OPTION付きの全てのシステム権限 |
|
EXP_FULL_DATABASE | 全データベースエクスポート実行権限 | |
IMP_FULL_DATABASE | 全データベースインポート実行権限 | |
RECOVERY_CATALOG_OWNER | リカバリカタログのメンテナンスができる権限 CONNECT、RESOURCEロールも別途必要 |
|
MGMT_USER | EM利用 |
定義
Create Role role_test;
※ロール:role_test作成(権限無し)
Grant Select, Insert, Update, Delete On tbl_test To role_test;
※ロール:role_testに対して、テーブル:tbl_testに関するSELECT~の権限を付与
Grant role_test To user_test;
※ユーザー:user_testに対して、ロール:role_testの権限を付与
Grant (権限) To (ユーザー/ロール) WITH GRANT OPTION
オブジェクト権限の付与
付与された権限を付与できる権限の付与
Grant (権限) To (ユーザー/ロール) WITH ADMIN OPTION
システム権限の付与
付与された権限を付与できる権限の付与