目錄數據庫
+ 1.數據庫安全控制策略概述安全
+ 2.用戶管理網絡
+ 3.資源限制與口令管理session
+ 4.權限管理併發
+ 5.角色管理oracle
+ 6.審計ide
1.數據庫安全控制策略概述性能
安全性是評估一個數據庫的重要指標,Oracle數據庫從3個層次上採起安全控制策略:測試
數據庫的安全能夠從如下幾個方面進行管理:加密
數據庫審計。監視和記錄數據庫中的活動,包括審計全部的SQL語句、審計SQL權限、審計模式對象以及審計網絡活動等。
接下來將對數據庫安全管理方法進行一 一討論。
2.用戶管理
用戶是數據庫的使用者和管理者,Oracle經過設置用戶及安全屬性來控制用戶對數據庫的訪問。Oracle的用戶分兩類,一類是建立數據庫時系統預約義的用戶,一類是根據應用由DBA建立的用戶。
2.1 預約義用戶
在oracle建立時建立的用戶,咱們稱爲預約義用戶,預約義用戶根據做用不一樣分爲3類:
此外還有2個特殊的用戶SCOTT和PUBLIC,SCOTT是一個用於測試網絡鏈接的用戶,PUBLIC實際是一個用戶組,數據庫中任何用戶都屬於該用戶組,若是要爲數據庫中的所有用戶授予某種權限,只須要對PUBLIC受權便可。
2.2 用戶屬性
在建立用戶時,必須使用安全屬性對用戶進行限制,用戶的安全屬性主要包括:
能夠經過數據字典dba_users查詢各個用戶的屬性(這裏只截取了前面幾列):
SQL> select * from dba_users;
USERNAME USER_ID PASSWORD ACCOUNT_STATUS LOCK_DATE EXPIRY_DATE DEFAULT_TABLESPACE TEMPORARY_TABLESPACE CREATED
------------ ---------- ---------- ----------------- ----------- ----------- ------------------- ---------------------- -----------
SCOTT 84 OPEN 2017/8/20 0 USERS TEMP 2009/8/15 0
LIJIAMAN 91 OPEN 2017/10/31 USERS TEMP 2017/2/25 1
ORACLE_OCM 21 EXPIRED & LOCKED 2009/8/15 0 2009/8/15 0 USERS TEMP 2009/8/15 0
XS$NULL 2147483638 EXPIRED & LOCKED 2009/8/15 0 2009/8/15 0 USERS TEMP 2009/8/15 0
2.3 建立用戶
建立用戶語法以下:
CREATE USER user_name IDENTIFIED
[BY password] |
[EXTERNALLY [AS ‘certificate_DN’ | ‘kerberos_principal_name'] ] |
[GLOBALLY [AS 'directory_DN'] ]
[DEFAULT TABLESPACE tablespace_name]
[TEMPORARY TABLESPACE tablespace_name | tablespace_group_name]
[QUOTA n K | M | UNLIMITED ON tablespace_name ]
[PROFILE profile_name]
[PASSWORD EXPIRE]
[ACCOUNT LOCK | UNLOCK];
其中:
-user_name:新建立的用戶的名稱;
-IDENTIFIED:指明用戶認證方式;
-BY password:採用數據庫身份認證,password爲用戶密碼;
-EXTERNALLY:指定用戶採用外部認證,其中:①AS ‘certificate_DN’指定用戶採用ssl外部身份認證;②AS ‘kerberos_principal_name’指定用戶採用kerberos外部身份認證;
-GLOBALLY AS ‘directory_DN’:指定用戶採用全局身份認證;
-DEFAULT TABLESPACE tablespace_name:設置用戶的默認表空間;
-TEMPORARY TABLESPACE tablespace_name | tablespace_group_name:設置用戶臨時表空間/表空間組;
-QUOTA n K|M|UNLIMITED ON tablespace_name:指定用戶在特定表空間上的配額;
-PROFILE profile_name:爲用戶指定概要文件;
-PASSWORD EXPIRE:指定用戶密碼到期,用戶首次登錄時系統會要求改密碼;
-ACCOUNT LOCK|UNLOCK:指定用戶爲鎖定/非鎖定狀態,默認不鎖定。
2.4 修改用戶
修改用戶採用ALTER實現,語句與CREATE USER基本相同,惟一不一樣的是多了DEFAULT ROLE選項,用於指定用戶的默認角色:
ALTER USER user_name ... [DEFAULT ROLE [role_list] | [ALL [EXCEPT role_list]] | NONE ] ... ;
其中:
-role_list:指定角色列表;
-ALL:指定所有角色;
-EXCEPT role_list:除了role_list指定的角色以外的角色;
-NONE:不指定角色 .
2.5 鎖定與解鎖用戶
當用戶被鎖定後,就不能登陸數據庫了,可是用戶的全部數據庫對象仍然能夠繼續使用,當用戶解鎖後,用戶就能夠正常鏈接到數據庫。
在Oracle中,當帳戶再也不使用時,就能夠將其鎖定。一般,對於不用的帳戶,能夠進行鎖定,而不是刪除。
例子,鎖定與解鎖scott用戶:
/*使用SYS鎖定SCOTT帳戶,鎖定以後沒法在登陸*/ SQL> show user; USER 爲 "SYS" SQL> ALTER USER SCOTT ACCOUNT LOCK; 用戶已更改。 SQL> conn scott/tiger ERROR: ORA-28000: the account is locked 警告: 您再也不鏈接到 ORACLE。 /*解鎖SCOTT帳戶,解鎖後登陸到數據庫*/ SQL> conn sys as sysdba 輸入口令: 已鏈接。 SQL> ALTER USER SCOTT ACCOUNT UNLOCK; 用戶已更改。 SQL> conn scott/tiger; 已鏈接。
2.6 刪除用戶
使用drop user刪除用戶,基本語法爲:
DROP USER user_name [CASCADE];
若是用戶擁有數據庫對象,則必須使用CASCADE選項,Oracle先刪除用戶的數據庫對象,再刪除該用戶。
2.7 查詢用戶信息
在Oracle中,包含用戶信息的數據字典以下:
視圖名稱 | 說明 |
DBA_USERS | 包含數據庫的全部用戶的詳細信息(15項) |
ALL_USERS | 包含數據庫全部用戶的用戶名、用戶ID和用戶建立時間(3項) |
USER_USERS | 包含當前用戶的詳細信息(10項) |
DBA_TS_QUOTAS | 包含全部用戶的表空間配額信息 |
USER_TS_QUOTAS | 包含當前用戶的表空間配額信息 |
V$SESSION | 包含用戶會話信息 |
V$SESSTAT | 包含用戶會話統計信息 |
3.資源限制與口令管理
在數據庫中,對用戶的資源限制與用戶口令管理是經過數據庫概要文件(PROFILE)實現的,每一個數據庫用戶必須具備一個概要文件,一般DBA將用戶分爲幾種類型,爲每種類型的用戶單首創建一個概要文件。概要文件不是一個具體的文件,而是存儲在SYS模式的幾個表中的信息的集合。
3.1 資源限制
概要文件經過一系列資源管理參數,從會話級和調用級兩個級別對用戶使用資源進行限制。會話資源限制是對用戶在一個會話過程當中所能使用的資源進行限制,調用資源限制是對一條SQL語句在執行過程當中所能使用的資源總量進行限制。資源限制的參數以下:
下面是scott用戶的資源限制信息:
3.2 口令管理
oracle概要文件用於數據庫口令管理的主要參數以下:
下圖是scott用戶的口令管理參數設置信息:
3.3 查詢概要文件信息
在Oracle 11g中,包含概要信息的數據字典以下:
視圖名稱 | 說明 |
DBA_USERS | 包含數據庫中全部用戶屬性信息,包括使用的概要文件(profile) |
DBA_PROFILES | 包含數據庫中全部的概要文件及其資源設置、口令管理設置等信息 |
USER_PASSWORD_LIMITS | 包含當前用戶的概要文件的口令限制參數設置信息 |
USER_RESOURCE_LIMITS | 包含當前用戶的概要文件的資源限制參數設置信息 |
RESOURCE_COST | 每一個會話使用資源的統計信息 |
4.權限管理
在Oracle數據庫中,用戶權限主要分爲系統權限與對象權限兩類。系統權限是指在數據庫基本執行某些操做的權限,或針對某一類對象進行操做的權限,對象權限主要是針對數據庫對象執行某些操做的權限,如對錶的增刪(刪除數據)查改等。
4.1 系統權限
(4.1.1)系統權限概述
在Oracle 11g中,一共有200多項系統權限,可經過數據字典system_privilege_map得到全部的系統權限。
SQL> select * from system_privilege_map;
PRIVILEGE NAME PROPERTY
---------- ---------------------------------------- ----------
-3 ALTER SYSTEM 0
-4 AUDIT SYSTEM 0
-5 CREATE SESSION 0
-6 ALTER SESSION 0
... ... ...
208 rows selected
(4.1.2)系統權限的授予
授予用戶系統權限的SQL語法爲:
GRANT system_privilege_list | [ALL PRIVILEGES] TO user_name_list | role_list | PUBLIC [WITH ADMIN OPTION];
其中:
-system_privilege_list:系統權限列表,以逗號分隔;
-ALL PRIVILEGES:全部系統權限;
-user_name_list:用戶列表,以逗號分隔;
-role_list:角色列表,以逗號分隔;
-PUBLIC:給數據庫中全部用戶受權;
-WITH ADMIN OPTION:容許系統權限接收者再將權限授予其它用戶
在授予用戶系統權限時,須要注意:
(4.1.3)系統權限的回收
回收用戶系統權限的SQL語法以下:
REVOKE system_privilege_list | [ALL PRIVILEGES] FROM user_name_list | role_list | PUBLIC
回收用戶系統權限須要注意如下3點:
4.2 對象權限
對象權限是指對某個特定模式對象的操做權限。數據庫模式對象全部者擁有該對象的全部對象權限,對象權限的管理其實是對象全部者對其餘用戶操做該對象的權限管理。在Oracle數據庫中,不一樣類型的對象具備不一樣的對象權限,而有的對象並無對象權限,只能經過系統權限進行管理,如簇、索引、觸發器、數據庫連接等。
(1)對象權限的授予
在Oracle數據庫中,用戶能夠直接訪問同名Schema下的數據庫對象,若是須要訪問其它Schema下的數據庫對象,就須要具備相應的對象權限。對象權限授予的SQL語法爲:
GRANT object_privilege_list | ALL [PRIVILEGES] [ (column,...) ] ON [schema.]object TO user_name_list | role_list | PUBLIC [WITH GRANT OPTION];
其中:
-object_privilege_list:對象權限列表,以逗號分隔;
-ALL PRIVILEGES:所有權限;
-[schema.]object:待受權的對象;
-user_name_list:用戶列表,以逗號分隔;
-role_list:角色列表,以逗號分隔;
-PUBLIC:全部用戶
(2)對象權限的回收
回收對象權限的SQL語法爲:
REVOKE object_privilege_list | ALL [PRIVILEGES] ON [schema.]object FROM user_name_list | role_list | PUBLIC [CASCADE CONSTRAINTS] | [FORCE];
其中:
-CASCADE CONSTRAINTS:當回收REFERENCE對象權限或回收ALL PRIVILEGES,刪除利用REFERENCES對象權限建立的外鍵約束;
-FORCE:當回收在表中被使用的用戶自定義對象類型的EXECUTE權限時,必須指定FORCE關鍵字。
回收對象權限須要注意如下3點:
4.3 查詢權限信息
視圖名稱 | 說明 |
DBA_SYS_PRIVS | 包含全部用戶和角色得到的系統權限信息 |
ALL_SYS_PRIVS | 包含當前用戶可見的所有用戶和角色得到的系統權限信息 |
USER_SYS_PRIVS | 當前用戶得到的系統權限信息 |
DBA_TAB_PRIVS | 包含全部用戶和角色得到的對象權限信息 |
ALL_TAB_PRIVS | 包含當前用戶可見的所有用戶和角色得到的對象權限信息 |
USER_TAB_PRIVS | 當前用戶得到的對象權限信息 |
DBA_COL_PRIVS | 包含數據庫中全部列對象的權限信息 |
ALL_COL_PRIVS | 包含當前用戶可見的全部列對象的權限信息 |
USER_COL_PRIVS | 當前用戶擁有的或授予其它用戶的全部列對象的權限信息 |
SESSION_PRIVS | 當前會話可使用的全部權限信息 |
5.角色管理
假如咱們直接給每個用戶賦予權限,這將是一個巨大又麻煩的工做,同時也不方便DBA進行管理。經過採用角色,使得:
圖. 用戶、角色、權限關係圖
因爲我的接觸的數據庫用戶較少,沒有單首創建角色,故角色的建立、修改、刪除、激活、禁用、授予、回收再也不一一講述,只要知道如何查詢角色信息便可。
在Oracle中,包含角色的數據字典以下:
視圖名稱 | 說明 |
DBA_ROLE_PRIVS | 包含數據庫中全部用戶擁有的角色信息 |
USER_ROLE_PRIVS | 包含當前用戶擁有的角色信息 |
ROLE_ROLE_PRIVS | 角色擁有的角色信息 |
ROLE_SYS_PRIVS | 角色擁有的系統權限信息 |
ROLE_TAB_PRIVS | 角色擁有的對象權限信息 |
DBA_ROLES | 當前數據庫中全部角色及其描述信息 |
SESSION_ROLES | 當前會話所具備的角色信息 |
6.審計
審計相關見另外2篇文章:
1.Audit(一)--認識Audit
2.Audit(二)--清理Audit數據