一、建立使用者
二、使用者授權
三、角色機制
四、配置模版及資源限制
附錄
資料庫安全的作用是控制使用者是否能夠對資料庫及其中的對象執行操作。要串連到 Oracle 資料庫,就需要建立一個使用者帳戶,該使用者可以根據需要授予不同的操作許可權。
一、建立使用者 CREATE/ALTER/DROP USER xxxx [協助文檔]
CREATE USER prod4
IDENTIFIED BY ssss
DEFAULT TABLESPACE users
TEMPORARY TABLESPACE temp;
刪除一個使用者時,會刪除該使用者所擁有的模式對象。DROP USER prod4 CASCADE;
二、使用者授權 GRANT/REVOKE [協助文檔]
許可權(privilege)即執行特定類型 SQL 陳述式的權利,若無任何許可權,新建立使用者將無法登陸 Oracle 資料庫。
1、系統許可權
系統許可權(system privilege)允許使用者執行某些資料庫操作。
GRANT CONNECT,RESOURCE,DBA TO prod4
[WITH ADMIN OPTION];
CONNECT,RESOURCE,DBA 三個預定義的角色封裝了大部分系統許可權;
WITH ADMIN OPTION 選項使 被授權的使用者 也可以把該許可權賦予其他使用者。(級聯授權,A->B、B->C)
ps.更多的系統許可權,請參考說明文檔 GRANT - Table 18-1 System Privileges。
2、模式對象許可權
模式對象許可權(schema object privilege)允許使用者對某一特定對象執行特定操作。要授予對象許可權,使用者必須滿足以下條件之一:
● 使用者擁有指定對象;
● 或者使用者已經擁有 GRANT OPTION (級聯授權)的能力。
sys:
GRANT SELECT ON sys.test TO prod
[WITH GRANT OPTION];
prod:
SELECT * FROM sys.test;
ps.更多的模式對象許可權,請參考說明文檔 GRANT - Table 18-3 Object Privileges Available for Particular Objects。
三、角色機制 CREATE/ALTER/DROP ROLE xxx [協助文檔]
角色(role)類似於作業系統中的使用者組,它封裝了多個許可權。使用者可以通過角色繼承許可權,從而簡化許可權的管理與控制。推薦使用基於角色授權,通過角色控制使用者。
角色的使用注意:
● 角色不屬於任何模式(schema)。因此,建立角色的使用者可以被移除而不會對角色有所影響。
● 角色可以被授予其他角色。但是角色不能授予其自身,角色間也不能形成閉環。例如,當角色 B 已經被授予角色 A 時,角色 A 就不能再授予角色 B。
-- 建立角色 myrole 並賦予許可權,然後將該角色賦予使用者 prod(繼承該角色) --
CREATE ROLE myrole;
GRANT SELECT ON sys.test TO myrole;
GRANT SELECT ON sys.test4 TO myrole;
GRANT myrole TO prod;
四、配置模版及資源限制 CREATE/ALTER/DROP PROFILE xxx
每個使用者都對應一套配置模版(profile),其中描述了使用者使用多種系統資源時的限制,具體包括:
● 使用者能夠建立的並發會話(concurrent session)數
● 使用者會話及 SQL 陳述式對 Oracle 進行一次調用時可用的 CPU 處理時間
● 使用者會話及 SQL 陳述式對 Oracle 進行一次調用時可用的邏輯 I/O(logical I/O)量
● 使用者會話的最大空閑時間(idle time)
● 使用者會話的最大連線時間(connect time)
● 密碼限制規則:
多次嘗試登入均失敗時對帳戶加鎖
密碼到期時間(expiration period)及寬限期(grace period)
密碼重用(reuse)及複雜度(complexity)限制規則
附錄
1、模式(schema):模式是指使用者與其擁有對象的邏輯集合。
2、[轉] Oracle 查看使用者權限
ORACLE中資料字典視圖分為3大類,用首碼區別,分別為:USER,ALL 和 DBA,許多資料字典視圖包含相似的資訊。
● USER_*:有關使用者所擁有的對象資訊,即使用者自己建立的對象資訊
● ALL_*:有關使用者可以訪問的對象的資訊,即使用者自己建立的對象的資訊加上其他使用者建立的對象但該使用者有權訪問的資訊
● DBA_*:有關整個資料庫中對象的資訊
(這裡的*可以為TABLES, INDEXES, OBJECTS, USERS等)
1.查看所有使用者:
select * from dba_user;
select * from all_users;
select * from user_users;
2.查看使用者系統許可權:
select * from dba_sys_privs;
select * from all_sys_privs;
select * from user_sys_privs;
3.查看使用者物件許可權:
select * from dba_tab_privs;
select * from all_tab_privs;
select * from user_tab_privs;
4.查看所有角色:
select * from dba_roles;
5.查看使用者所擁有的角色:
select * from dba_role_privs;
select * from user_role_privs;
6.查看目前使用者的預設資料表空間
select username,default_tablespace from user_users;
7.查看某個角色的具體許可權,如grant connect,resource,create session,create view to TEST;
查看RESOURCE具有那些許可權,用SELECT * FROM DBA_SYS_PRIVS WHERE GRANTEE='RESOURCE';
3、[轉] 對象許可權
模式對象/許可權 |
ALTER |
DELETE |
EXECUTE |
INDEX |
INSERT |
READ |
REFERENCE |
SELECT |
UPDATE |
Directory |
|
|
|
|
|
√ |
|
|
|
function |
|
|
√ |
|
|
|
|
|
|
procedure |
|
|
√ |
|
|
|
|
|
|
package |
|
|
√ |
|
|
|
|
|
|
DB Object |
|
|
√ |
|
|
|
|
|
|
Libary |
|
|
√ |
|
|
|
|
|
|
Operation |
|
|
√ |
|
|
|
|
|
|
Sequence |
√ |
|
|
|
|
|
|
|
|
Table |
√ |
√ |
|
√ |
√ |
|
√ |
√ |
√ |
Type |
|
|
√ |
|
|
|
|
|
|
View |
|
√ |
|
|
√ |
|
|
√ |
√ |
對象由不止一個許可權,特殊許可權ALL可以被授予或撤銷。如TABLE的ALL許可權就包括:
SELECT,INSERT,UPDATE和DELETE,還有INDEX,ALTER,和REFERENCE。
4、[轉] Oracle 9i預定義的角色
角色名稱 |
說明 |
CONNECT |
資料庫連接角色,用於串連資料庫,具有建立簇、資料庫連結、序列、同義字、表和視圖,以及修改會話的權利 |
DBA |
資料庫管理員角色,具有所有使用ADMIN選項建立的系統許可權,可以將系統許可權授予其他使用者或角色 |
DELETE_CATALOG_ROLE |
刪除目錄角色,可以刪除或重建資料字典 |
EXECUTE_CATALOG_ROLE |
執行目錄角色,能夠執行所有系統包 |
EXP_FULL_DATABASE |
能夠使用匯出程式執行資料庫的完全和增量匯出 |
IMP_FULL_DATABASE |
能夠使用匯入程式執行資料庫的完全匯入 |
RESOURCE |
可以建立簇、表、序列以及PL/SQL編程用方案對象,包括過程、程式包、觸發器等 |
SELECT_CATALOG_ROLE |
查詢資料字典表或視圖 |
參考文章:
Oracle Concepts 中文版 (10g R2) -- 第 20 章,資料庫安全