文章目錄
- 一、簡介
- 二、OS認證
- 三、口令認證
- 四、remote_login_passwordfile 詳解
一、簡介
在數據庫管理中,登錄認證是確保數據庫安全性的重要環節。Oracle數據庫提供 了兩種認證方式,一種是“操作系統認證”,一種是“口令文件認證,以滿足不同場景下的安全需求。
二、OS認證
OS認證(Operating System Authentication)是Oracle數據庫中的一種登錄認證方式,也稱為操作系統認證。
該認證方式依賴于操作系統級別的身份驗證機制,用戶通過操作系統的身份驗證后,可以直接登錄到Oracle數據庫,無需提供額外的數據庫用戶名和密碼。
使用OS認證,用戶可以使用其本地操作系統賬戶名和密碼登陸Oracle數據庫。
OS認證的優點是,用戶不需要再記憶額外的用戶名和密碼,能夠快速登陸數據庫,
且管理員可通過將用戶添加到系統組來控制其數據庫訪問權限。
驗證命令:
1.sqlplus/as sysdba
除系統用戶外,其他用戶依舊需要使用口令進行認證:
sqlplus hr/hr(前面的hr是用戶名,后面的hr是密碼)
2.sqlnet.ora文件中加入,文件位置在 $ORACLE_HOME/network/admin目錄下
SQLNET.AUTHENTICATION_SERVICES=(NTS)
這一種模式只支持WINDOWS NT系統
LINUX下默認是支持OS認證和口令(密碼)認證的所以不需要修改sqlnet.ora
案列:
在安裝Oracle數據庫時創建了一個新的Oracle用戶(通常是名為"oracle"的用戶),在安裝過程中可以選擇將該用戶添加到dba組中。
該組是Oracle數據庫的特權組,擁有sysdba角色的權限。因此,當通過該用戶登錄數據庫時,系統會自動識別該用戶屬于dba組,并授予其sysdba角色的特權,所以啟用OS認證的時候oracle用戶可以直接利用 sqlplus / as sysdba登錄數據庫
取消OS認證
1.修改sqlnet.ora(如果沒有新創建即可)
路徑:
$ORACLE_HOME/network/admin
添加以下內容:
vim sqlnet.ora
SQLNET.AUTHENTICATION_SERVICES=(NONE)
2.重新使用sqlplus / as sysdba登錄 這時需要輸入用戶名和密碼并且以sysdba的身份登錄
三、口令認證
Oracle的口令文件的作用是存放所有以sysdba或者sysoper權限連接數據庫的用戶的口令,如果想以sysdba權限遠程連接數據庫,必須使用口令文件,否則不能連上。
1、使用口令文件驗證
如果當前沒有使用口令文件驗證。可以采用如下方法開啟口令文件驗證。
修改salnet.ora里的參數,取消OS認證,打開口令認證方式
SQLNET. AUTHENTICATION_SERVICES = (NONE)
2.建立口令文件(口令文件丟失或者口令文件損壞,無法使用口令登錄時重建)
默認格式
$ORACLE_HOME/bin/orapwd file=$ORACLE_HOME/dbs/orapworcl password=oracle force=y format=12 (實例名orcl為例)
force=y 為覆蓋老密碼文件 format=12(使用12C以前的版本生成,可以避免因為輸入的密碼過短報錯的問題)
$ORACLE_HOME/bin/orapwd file=$ORACLE_HOME/dbs/orapworcl password=oracle force=y format=12
實驗一,使用口令文件驗證方式,登錄sys用戶
1.確保口令密碼文件存在
2.使用 sqlplus sys/oracle as sysdba 登錄數據庫
結果:登錄成功
實驗二、刪除口令密碼文件,使用口令文件驗證方式,登錄sys用戶
1.刪除口令密碼文件
rm -rf $ORACLE_HOME/dbs/orapworcl
2.使用 sqlplus sys/oracle as sysdba 登錄數據庫
結果:登錄失敗
結論:使用口令認證方式,必須要有口令密碼文件
四、remote_login_passwordfile 詳解
在某種情況下使用remote_login_passwordfile參數可以增強系統的安全性,所謂提高安全性就是指禁止以SYSDBA或者SYSOPER特權用戶從客戶端登錄到數據庫系統中。
查看當前參數的值
show parameter remote_login_passwordfile
參數解釋:
當取值為 EXCLUSIVE 時,允許客戶端以SYSDBA或者SYSOPER特權用戶從客戶端登錄到數據庫系統中,完成對數據庫的管理操作。允許授權和回收SYSDBA和SYSOPER權限,允許你在sys用戶下修改sys用戶的密碼。
當取值為 NONE時, 禁止客戶端以SYSDBA或者SYSOPER特權用戶從客戶端登錄到數據庫系統中,完成對數據庫的管理操作。禁止授權和回收SYSDBA和SYSOPER權限。
當取值為 SHARED 時,允許客戶端以SYSDBA或者SYSOPER特權用戶從客戶端登錄到數據庫系統中,完成對數據庫的管理操作,禁止授權和回收SYSDBA和SYSOPER權限。
remote_login_passwordfile參數的修改
alter system set remote_login_passwordfile =shared scope=spfile;
由于修改spfile文件修改,需要重啟數據庫才能生效
shutdown immediate
startup
查看是remote_login_passwordfile參數否修改成功
show parameter remote_login_passwordfile