一.資料庫使用者管理
1.使用者與安全
oracle資料庫的安全性組件括在對象級控制資料庫訪問和使用的機制,這是通過資料庫使用者實現的。資料庫使用者是定義在資料庫中的
一個名稱,它是存取資料庫中資訊的通道,是oracle資料庫的基本訪問機制。
要訪問資料庫,使用者必須制定有效資料庫使用者帳號,而且還要根據賬戶的要求通過驗證。每個資料庫使用者都有自己的資料庫
賬戶。
每個資料庫使用者有一系列安全屬性
a.唯一的使用者名稱:不超過30個字元,不能包含特殊字元,必須以字母開頭
b.驗證方法:最常見的驗證方法是口令,oracle10g支援其他多種驗證方法,如生物統計學驗證,標記驗證和認證驗證
c.預設資料表空間:如果使用者未指定其他資料表空間,則可在這個資料表空間中建立對象。else:具有預設資料表空間不代表使用者具有使用者在該資料表空間
中建立對象的許可權,也不意味這使用者具有該資料表空間的空間限額,這兩項需要另外單獨授權。
d.暫存資料表資料表空間:使用者可在其中建立臨時對象(排序和暫存資料表)
e.使用者概要檔案:分配給使用者的一組資源和口令的限制
f.使用者組:由資源管理員使用
g:資料表空間配額:致命使用者在某個資料表空間中所能使用的儲存空間的大小 2.預定義賬戶sys和system
a.sys賬戶
-授予了DBA角色
-具有admin option的所有許可權
-具有啟動、關閉和某些維護命令時需要的賬戶
-擁有資料字典
-擁有自動工作量資料檔案庫(AWR)
-使用as sysdba字句串連(任何具有SYSDBA許可權的使用者均可通過使用as sysdba串連到sys賬戶)
b.system賬戶
-授予了DBA角色
c.sys和system賬戶不在理性程式操作中使用
d.只有授予了sysdba和sysoper許可權的授權使用者才可以啟動或關閉資料庫
e.sys和system賬戶是資料庫中必須存在的戰鼓,不能將其刪除 3.驗證使用者
驗證指的是對要使用資料,資源或應用程式的使用者,裝置或其他實體的身份進行驗證,通過
對該身份的驗證建立一種信任關係,從而可以進一步執行互動。 a.外部驗證
又稱作業系統驗證。使用者在不指定使用者名稱或口令的情況下串連到oracle資料庫。使用外部驗證時,
資料庫依賴於基礎作業系統或網路驗證服務來限制對資料庫賬戶的訪問,而不涉及到資料庫口令。
由參數OS_AUTHENT_PREFIX定義的首碼控制,oracle在每個使用者的作業系統賬戶名之前添加此首碼。
預設為OPS$。當使用者嘗試串連時,oracle會將帶首碼的使用者名稱與資料庫中的oracle username進行比較。
案例:
sys@ORCL> show parameter os_authent
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
os_authent_prefix string ops$
remote_os_authent boolean FALSE
[root@redhat5 ~]# useradd gmk;
[root@redhat5 ~]# passwd gmk
Changing password for user gmk.
New UNIX password:
BAD PASSWORD: it is based on a dictionary word
Retype new UNIX password:
passwd: all authentication tokens updated successfully.
sys@ORCL> create user OPS$GMK identified externally;
User created.
sys@ORCL> grant connect to ops$gmk;
Grant succeeded.
sys@ORCL> select * from dba_users where username='OPS$GMK';
[gmk@redhat5 ~]$ vi .bash_profile
編輯完畢後使環境變數生效
source .bash_profile
[test@redhat5 ~]$ sqlplus / 即可成功使用作業系統登入
b.口令驗證
又稱為oracle資料庫驗證
如
[oracle@redhat5 ~]$ sqlplus scott/oracle
scott@ORCL> conn test/oracle
Connected.
test@ORCL> connect scott/oracle
口令驗證時oracle使用最多的身分識別驗證方式。在使用口令身分識別驗證進行串連時,執行個體將針對在資料字典中的使用者賬戶
儲存的口令驗證給定的口令所以,資料庫必須處於開啟狀態,從邏輯上講,使用口令驗證串連時,不可能發出startup
或者shutdown命令。else:不允許sys使用者以口令身分識別驗證的方式進行串連,sys只能使用口令檔案,作業系統或LDAP
身分識別驗證。
資料庫驗證的優點
-使用者賬戶及其驗證資訊全部儲存在資料庫中,驗證由oracle server完成,而不需要藉助資料庫外的任何控制。
-使用資料庫驗證時,oracle提供了嚴格的口令管理特徵以加強口令的安全性,如賬戶鎖定,口令有效期間以及口令長度,
複雜度。
-易於管理
二.管理員驗證
資料庫管理員能夠執行普通使用者不能執行的操作(如啟動和關閉資料庫),oracle為資料庫管理員提供個更為安全的身分識別驗證方式 1. 作業系統安全性
在Linux,unix中,預設情況下DBA屬於install作業系統組,改組具有建立和刪除資料庫檔案所需的許可權。
-DBA必須具有建立和刪除檔案的作業系統許可權。
-普通使用者不應具有建立和刪除檔案的許可權。 2. 資料庫管理員驗證的兩種方式,作業系統認證和口令檔案認證。如果使用口令檔案驗證,則使用使用者名稱記錄串連,如果使用作業系統驗證,表示這是一個conenct/串連,不記錄具體使用者。
Else:作業系統認證優先於口令檔案驗證。特別對於作業系統中OSDBA和OSOPER組的成員,而且以SYSDBA或SYSOPER身份進行串連,則會使用關聯的系統管理權限進行串連而不管使用者名稱和口令是什麼。
Else2:要為使用者啟用作業系統和口令驗證,必須為使用者授予SYSDBA或SYSOPER的許可權,授予許可權之後將會把使用者口令從資料字典複製到外部口令檔案中,所以,此時即使未開啟執行個體,也可讀取口令進行驗證。
Case1:口令驗證
Case2:作業系統驗證
另外:
SYSOPER具有的許可權:startup,shutdown,alterdatabase open/mount,alter database backup,alter database archivelog以及recovery命令,並具備restrictedsession許可權。
SYSDBA:具有所有系統許可權,以及許可權的adminoption選項,包括SYSOPER所具有的許可權,此外,能夠執行create database命令,以及基於時間的恢複(time-based recovery)。 三.身分識別驗證的參數
1. remote_login_passwordfile:是否允許遠程登入使用口令檔案進行驗證。
sys@ORCL> show parameter remote_login
NAME TYPE VALUE
------------------------------------ -----------------------------------------
remote_login_passwordfile string EXCLUSIVE
a: shared:一個或多個資料庫可以使用口令檔案,可以包含SYS或非SYS的口令檔案
b: exclusive: 新版本oracle與shared功能一致
c.none: 不允許遠程使用口令檔案驗證
else:查看口令檔案進行驗證的使用者
sys@ORCL> select * from v$pwfile_users;
USERNAME SYSDB SYSOP SYSAS
------------------------------ ----- ----------
SYS TRUE TRUE FALSE
2. SQLNET.AUTHENTICATION_SERVICES:$ORACLE_HOME/network/admin/sqlnet.ora設定檔中
a.NONE:不允許通過作業系統使用者登入
b.ALL:允許所有的登入方式
c.NTS:允許本次作業系統使用者認證 四.資料庫模式對象(schema) schema模式是一系列對象的集合。 一個模式只能被一個資料庫使用者擁有,並且模式的名稱與這個使用者的名稱相同。oracle每個使用者都擁有一個模式, 他所建立的模式對象都儲存在這個shcema中。模式對象的類型有表,索引,簇,觸發器,plsql,序列,同義字, 視圖,預存程序,函數等。並不是所有的oracle對象都是模式對象,比如資料表空間,使用者,角色,會滾蛋,概要檔案等。