資料庫管理員許可權認證&&密碼檔案的建立和管理

to_be_Dba發表於2013-07-15

資料庫管理員許可權認證&&密碼檔案的建立和管理

一、資料庫管理員許可權認證

oracle最常用的賬戶認證方式是資料字典認證方式,從11gR1開始,密碼是大小寫敏感的了。可以通過將sec_case_sensitive_logon引數設定為false來禁用該特性。
除資料字典方式認證外,還包括密碼檔案認證、作業系統許可權認證以及基於網路的認證伺服器,比如oracle internet directory。
這些方法代替了以前的內部認證方式“connect internal”。
作業系統認證發生在密碼檔案認證之前。如果符合作業系統認證要求了,就是使用密碼檔案,也還是會選擇作業系統認證的方式。


認證方式的選擇應該考慮到連線是否安全。
如果在遠端進行資料庫管理時,使用的是安全的連線協議,就可以使用作業系統認證方式。但對於比較流行的協議,如TCP/IP、DECnet,都是不安全的。

對於不安全的遠端連線方式,必須使用密碼檔案認證方式。這時,資料庫在密碼檔案中保留了已經授予sysdba或sysoper許可權的資料庫使用者的使用者名稱。

對於本地連線和安全的遠端連線,用有許可權的使用者直接登入:
如果有密碼檔案,並且你已經被賦予sysdba或sysoper許可權,可以通過密碼檔案連線和認證;
如果伺服器未使用密碼檔案或者由於沒有被授予sysdba、sysoper許可權而不再密碼檔案中,可以使用作業系統認證方式。

在大多數系統中,dba許可權認證包括將dba放到特定的組中,通常是OSDBA組。該組中的使用者被授予了sysdba許可權。類似地OSOPER組是給使用者授予了sysoper的組。

1.使用作業系統認證方式

OSDBA和OSOPER組中的成員可以使dba通過作業系統認證,而不需要使用者名稱和密碼的方式。(作業系統認證方式)
這兩個組是oracle安裝時建立的,預設成員取決於作業系統。在unix系統中分別是組dba、oper,在windows中是ora_dba、ora_oper。

2.使用密碼檔案認證方式

1)在未建立的情況下,可以使用orapwd命令建立密碼檔案:
orapwd file= entries=

注意兩點:
使用dbca建立資料庫時,會自動建立密碼檔案
11gR1開始,密碼大小寫敏感,可以使用在以上命令中使用ignorecase=Y禁用

2)設定remote_login_passwordfile引數為execlusive(預設)

3)以sys或其他管理員許可權使用者連線資料庫

4)如果不存在該使用者,建立並指定密碼


5)授權:grant sysdba to xxxx;


二、密碼檔案的建立和管理

1.用orapwd建立密碼檔案

ORAPWD FILE=filename [ENTRIES=numusers] [FORCE={Y|N}] [IGNORECASE={Y|N}]
其中file是檔案的完整路徑和名稱
entries表示該檔案中允許的最大使用者數量
force=y表示強制重寫已存在的密碼檔案
ignorecase確認是否大小寫敏感

需要注意,在等號兩側不允許有空格。

密碼檔名稱:
unix/linux: ORACLE_HOME/dbs/orapwORACLE_SID
Windows : ORACLE_HOME\database\PWDORACLE_SID.ora

2.密碼檔案的共享號禁用

remote_login_passwordfile引數控制密碼檔案是否可以在多個例項間共享。該引數也可以用於禁用密碼檔案認證。
remote_login_passwordfile的可選值為:
NONE    oracle認為密碼檔案不存在,也就是說不安全的連線不能連線到資料庫。

EXCLUSIVE 預設選項,只能用於一個例項。只有EXCLUSIVE檔案可以被修改。使用該選項,可以增、刪、該使用者,可以用alter user命令修改sys密碼。

SHARED  可以被相同伺服器的多個資料庫共用,或RAC的多個例項共用。不能被修改、增加使用者。
     必須將所有需要sysdba或sysoper作業系統許可權的使用者都加到密碼檔案中,然後將remote_login_passwordfile由exclusive改為shared,並共享該檔案。
     在管理多個資料庫或者RAC時使用該選項。
     
如果remote_login_passwordfile引數設定為exclusive或shared,但密碼檔案丟失,則等價於設定為了NONE。


如果將該引數由none改為shared或exclusive,或者用不同的sys密碼重建了該檔案,就必須確保資料字典中的密碼和sys使用者的密碼相同。
要同步sys密碼,可以使用alter user語句修改sys密碼。alter user語句會將資料字典和密碼檔案的密碼都更新。

要同步擁有sysdba或sysoper的非sys使用者的密碼,需要收回並重新授予許可權,如:
SELECT USERNAME FROM V$PWFILE_USERS WHERE USERNAME != 'SYS' AND SYSDBA='TRUE'; (檢視)
REVOKE SYSDBA FROM non-SYS-user;(收回)
GRANT SYSDBA TO non-SYS-user;(授予)

3.增加使用者到密碼檔案

當給某個使用者授予sysdba或sysoper許可權時,使用者名稱和許可權資訊被增加到密碼檔案中。
如果伺服器沒有exclusive的密碼檔案,授權時就會報錯。

由於sysdba和sysoper是非常高的許可權,其grant語句中不建議使用with admin option選項。
只有當前以sysdba登入的使用者才能給其他使用者授予或收回sysdba、sysoper許可權。
該許可權不能授予角色,因為角色是在資料庫啟動後才生效的。

在v$pwfile_users檢視中可以看到sysdba、sysoper或sysasm許可權的使用者資訊。

4.密碼檔案的維護

1)替換密碼檔案
查詢v$pwfile_users找到sysdba、sysoper許可權的使用者
刪除當前的密碼檔案
建立新的密碼檔案,確保entries引數足夠大

2)刪除密碼檔案
直接將密碼檔案物理刪除即可。刪除後,只有能被作業系統識別的sysdba、sysoper許可權使用者能進行相應操作。

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~·

實練:

由於oracle在進行賬戶認證時是先採用作業系統認證方式的,無論使用者名稱和密碼是什麼,都可以sysdba許可權登入。
因此,需要先將作業系統認證方式禁用,再去測試密碼方式才有意義。

禁用的方法比較簡單,將sqlnet.ora中的
SQLNET.AUTHENTICATION_SERVICES= (NTS)
改為
SQLNET.AUTHENTICATION_SERVICES= (NONE)

修改前登入:
D:\Documents and Settings\tian>sqlplus /nolog

SQL*Plus: Release 10.2.0.1.0 - Production on 星期一 7月 15 16:53:13 2013

Copyright (c) 1982, 2005, Oracle.  All rights reserved.

SQL> conn /as sysdba
已連線。


修改後登入:
SQL> conn /as sysdba
ERROR:
ORA-01031: insufficient privileges

 

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~


我的環境中密碼檔案在:
D:\oracle10g\database\PWDtest.ora

將此檔案改名。

然後登入並檢視資料庫:

SQL> conn sys/sys@test as sysdba
Connected to Oracle Database 10g Release 10.2.0.1.0
Connected as SYS

SQL> select * from v$pwfile_users;

USERNAME                       SYSDBA SYSOPER
------------------------------ ------ -------

可以看到,10g中只有sysdb和sysoper兩個屬性列。11g應該還有sysasm。
因為sys是系統能識別的sysdba許可權使用者,即使密碼檔案刪了,依賴可以用它登入。
但如果是以前設定的遠端作業系統使用者,可能就不行了。

下面重建:

SQL> exit
從 Oracle Database 10g Release 10.2.0.1.0 - Production 斷開

D:\Documents and Settings\tian>orapwd file=D:\oracle10g\database\PWDtest.ora pas
sword=tianlei ENTRIES=5 IGNORECASE=Y
Usage: orapwd file= password= entries= force=

  where
    file - name of password file (mand),
    password - password for SYS (mand),
    entries - maximum number of distinct DBA and     force - whether to overwrit
e existing file (opt),
OPERs (opt),
  There are no spaces around the equal-to (=) character.
--以上是由於10g環境沒有ignorecase選項造成的

D:\Documents and Settings\tian>orapwd file=D:\oracle10g\database\PWDtest.ora pas
sword=tianlei ENTRIES=5

--登入後再次查詢:
D:\Documents and Settings\tian>sqlplus /nolog

SQL*Plus: Release 10.2.0.1.0 - Production on 星期一 7月 15 16:12:34 2013

Copyright (c) 1982, 2005, Oracle.  All rights reserved.

SQL> conn /as sysdba
已連線。
SQL> select * from v$pwfile_users;

USERNAME                       SYSDB SYSOP
------------------------------ ----- -----
SYS                            TRUE  TRUE


SQL> grant sysdba to scott;

Grant succeeded

SQL> grant sysoper to  terry ;

Grant succeeded

SQL> select * from v$pwfile_users;

USERNAME                       SYSDBA SYSOPER
------------------------------ ------ -------
SYS                            TRUE   TRUE
SCOTT                          TRUE   FALSE
TERRY                          FALSE  TRUE


 

參見 oracle administrator‘s guide 第一章

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/26451536/viewspace-766312/,如需轉載,請註明出處,否則將追究法律責任。

相關文章