許可權分類
1、系統許可權:系統規定使用者使用資料庫的許可權,即具備該許可權的使用者可在資料庫中執行特定操作(系統許可權是對使用者而言)。
2、對象許可權:對象許可權允許使用者對特定對象(如表、視圖、序列、過程、函數或程式包)執行特定的操作。
系統許可權管理
系統許可權分類:
DBA: 擁有全部特權,是系統最高許可權,只有DBA才可以建立資料庫結構。
RESOURCE:擁有Resource許可權的使用者只可以建立實體,不可以建立資料庫結構。
CONNECT:擁有Connect許可權的使用者只可以登入Oracle,不可以建立實體,不可以建立資料庫結構。
對於普通使用者:授予connect, resource許可權。
對於DBA系統管理使用者:授予connect,resource, dba許可權。
系統許可權授權命令:系統許可權只能由DBA使用者授出:sys, system(最開始只能是這兩個使用者)
授權命令:
SQL> grant connect, resource, dba to 使用者名稱1 [,使用者名稱2]...;
注:普通使用者通過授權可以具有與system相同的使用者權限,但永遠不能達到與sys使用者相同的許可權,system使用者的許可權也可以被回收
系統許可權傳遞:增加WITH ADMIN OPTION選項,則得到的許可權可以傳遞
SQL>grant connect, resource to 使用者名稱 WITH ADMIN OPTION;
系統許可權回收:系統許可權只能由DBA使用者回收
SQL> Revoke connect, resource from user50;
刪除使用者:
SQL> drop user 使用者名稱 cascade; //加上cascade則將使用者連同其建立的東西全部刪除
查自己擁有哪些系統許可權
SQL> select * from session_privs;
說明:
1)如果使用WITH ADMIN OPTION為某個使用者授予系統許可權,那麼對於被這個使用者授予相同許可權的所有使用者來說,取消該使用者的系統許可權並不會級聯取消這些使用者的相同許可權。
2)系統許可權無級聯,即A授予B許可權,B授予C許可權,如果A收回B的許可權,C的許可權不受影響;系統許可權可以跨使用者回收,即A可以直接收回C使用者的許可權。
對象許可權管理
實體許可權分類:
select, update, insert, alter, index, delete, all //all包括所有許可權
execute //執行預存程序許可權
1 user01使用者下:2 3 SQL> grant select, update, insert on product to user02;4 5 SQL> grant all on product to user02;6 7 user02使用者下:8 9 SQL> select * from user01.product;
註:此時user02查user_tables,不包括user01.product這個表,但如果查all_tables則可以查到,因為他可以訪問將表的操作許可權授予全體使用者:
SQL> grant all on product to public; // public表示是所有的使用者,這裡的all許可權不包括drop。
實體許可權資料字典
1 SQL> select owner, table_name from all_tables; // 使用者可以查詢的表2 SQL> select table_name from user_tables; // 使用者建立的表3 SQL> select grantor, table_schema, table_name, privilege from all_tab_privs; // 獲權可以存取的表(被授權的)4 SQL> select grantee, owner, table_name, privilege from user_tab_privs; // 授出許可權的表(授出的許可權)
與許可權安全相關的資料字典表有:
ALL_TAB_PRIVS
ALL_TAB_PRIVS_MADE
ALL_TAB_PRIVS_RECD
DBA_SYS_PRIVS
DBA_ROLES
DBA_ROLE_PRIVS
ROLE_ROLE_PRIVS
ROLE_SYS_PRIVS
ROLE_TAB_PRIVS
SESSION_PRIVS
SESSION_ROLES
USER_SYS_PRIVS
USER_TAB_PRIV
ORACLE的系統和對象許可權列表:
alter any cluster 修改任意簇的許可權
alter any index 修改任意索引的許可權
alter any role 修改任意角色的許可權
alter any sequence 修改任意序列的許可權
alter any snapshot 修改任意快照的許可權
alter any table 修改任意表的許可權
alter any trigger 修改任意觸發器的許可權
alter cluster 修改擁有簇的許可權
alter database 修改資料庫的許可權
alter procedure 修改擁有的預存程序許可權
alter profile 修改資源限制簡表的許可權
alter resource cost 設定佳話資源開銷的許可權
alter rollback segment 修改復原段的許可權
alter sequence 修改擁有的序列許可權
alter session 修改資料庫會話的許可權
alter sytem 修改資料庫伺服器設定的許可權
alter table 修改擁有的表許可權
alter tablespace 修改資料表空間的許可權
alter user 修改使用者的許可權
analyze 使用analyze命令分析資料庫中任意的表、索引和簇
audit any 為任意的資料庫物件設定審計選項
audit system 允許系統Action Trail
backup any table 備份任意表的許可權
become user 切換使用者狀態的許可權
commit any table 提交表的許可權
create any cluster 為任意使用者建立簇的許可權
create any index 為任意使用者建立索引的許可權
create any procedure 為任意使用者建立預存程序的許可權
create any sequence 為任意使用者建立序列的許可權
create any snapshot 為任意使用者建立快照的許可權
create any synonym 為任意使用者建立同義名的許可權
create any table 為任意使用者建立表的許可權
create any trigger 為任意使用者建立觸發器的許可權
create any view 為任意使用者建立視圖的許可權
create cluster 為使用者建立簇的許可權
create database link 為使用者建立的許可權
create procedure 為使用者建立預存程序的許可權
create profile 建立資源限制簡表的許可權
create public database link 建立公用資料庫鏈路的許可權
create public synonym 建立公用同義名的許可權
create role 建立角色的許可權
create rollback segment 建立復原段的許可權
create session 建立會話的許可權
create sequence 為使用者建立序列的許可權
create snapshot 為使用者建立快照的許可權
create synonym 為使用者建立同義名的許可權
create table 為使用者建立表的許可權
create tablespace 建立資料表空間的許可權
create user 建立使用者的許可權
create view 為使用者建立視圖的許可權
delete any table 刪除任意表行的許可權
delete any view 刪除任意視圖行的許可權
delete snapshot 刪除快照中行的許可權
delete table 為使用者刪除表行的許可權
delete view 為使用者刪除視圖行的許可權
drop any cluster 刪除任意簇的許可權
drop any index 刪除任意索引的許可權
drop any procedure 刪除任意預存程序的許可權
drop any role 刪除任意角色的許可權
drop any sequence 刪除任意序列的許可權
drop any snapshot 刪除任意快照的許可權
drop any synonym 刪除任意同義名的許可權
drop any table 刪除任意表的許可權
drop any trigger 刪除任意觸發器的許可權
drop any view 刪除任意視圖的許可權
drop profile 刪除資源限制簡表的許可權
drop public cluster 刪除公用簇的許可權
drop public database link 刪除公用資料鏈路的許可權
drop public synonym 刪除公用同義名的許可權
drop rollback segment 刪除復原段的許可權
drop tablespace 刪除資料表空間的許可權
drop user 刪除使用者的許可權
execute any procedure 執行任意預存程序的許可權
execute function 執行儲存函數的許可權
execute package 執行儲存包的許可權
execute procedure 執行使用者預存程序的許可權
force any transaction 管理未提交的任意事務的輸出許可權
force transaction 管理未提交的使用者事務的輸出許可權
grant any privilege 授予任意系統特權的許可權
grant any role 授予任意角色的許可權
index table 給表加索引的許可權
insert any table 向任意表中插入行的許可權
insert snapshot 向快照中插入行的許可權
insert table 向使用者表中插入行的許可權
insert view 向使用者視圖中插行的許可權
lock any table 給任意表加鎖的許可權
manager tablespace 管理(備份可用性)資料表空間的許可權
references table 參考表的許可權
restricted session 建立有限制的資料庫會話的許可權
select any sequence 使用任意序列的許可權
select any table 使用任意表的許可權
select snapshot 使用快照的許可權
select sequence 使用使用者序列的許可權
select table 使用使用者表的許可權
select view 使用視圖的許可權
unlimited tablespace 對錶空間大小不加限制的許可權
update any table 修改任意表中行的許可權
update snapshot 修改快照中行的許可權
update table 修改使用者表中的行的許可權
update view 修改視圖中行的許可權