Oracle 筆記(二)、安全管理
阿新 • • 發佈:2019-02-15
一、建立使用者
二、使用者授權
三、角色機制
四、配置模版及資源限制
附錄
資料庫安全的作用是控制使用者是否能夠對資料庫及其中的物件執行操作。要連線到 Oracle 資料庫,就需要建立一個使用者帳戶,該使用者可以根據需要授予不同的操作許可權。
一、建立使用者 CREATE/ALTER/DROP USER xxxx [幫助文件]
CREATE USER prod4
IDENTIFIED BY ssss
DEFAULT TABLESPACE users
TEMPORARY TABLESPACE temp;
刪除一個使用者時,會刪除該使用者所擁有的模式物件。DROP USER prod4 CASCADE;
二、使用者授權
許可權(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。
三、角色機制
角色(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 | 查詢資料字典表或檢視 |