客戶端以sysdba身份登錄服務器的設置方法

近的時間,在搞數據庫的安全加固問題,關於數據庫中關於sysdba權限的登陸,經過最近的一些實踐和測試,在這裏記錄一下:
數據庫用sysdba登陸的驗證有兩種方式,一種是經過os認證,一種是經過密碼文件驗證;登陸方式有兩種,一種是在數據庫主機直接登陸(用os認證的方式),一種是經過網絡遠程登陸;須要設置的參數有兩個,一個是SQLNET.AUTHENTICATION_SERVICES,一個是REMOTE_LOGIN_PASSWORDFILE。
os認證:若是啓用了os認證,以sysdba登陸,那麼咱們只要用oracle軟件的安裝用戶就能登陸:sqlplus 「/ as sysdba」。若是咱們要禁用os認證,只利用密碼文件登陸,咱們首先要有一個密碼文件:
orapwd file=C:\oracle\product\10.2.0\db_1\database\PWDoralocal.ora password=maximo entries=10;
而後咱們要把$ORACLE_HOME/network/admin/sqlnet.ora中設置:
SQLNET.AUTHENTICATION_SERVICES= none
注意一下,密碼文件只在數據庫啓動的時候加載進去,一旦加載進去,密碼文件就脫離了oracle管理,因此咱們用orapwd新建密碼文件後,裏面指定的密碼要在數據重啓後才能生效:
至此,咱們已經實現不用os認證(sqlplus 「/ as sysdba」的方式登陸不了)。那麼咱們怎麼限制網絡方面利用sysdba遠程登陸呢?咱們能夠設置初始化文件中的REMOTE_LOGIN_PASSWORDFILE=none。
注意,當REMOTE_LOGIN_PASSWORDFILE=none時,這個參數生效須要重啓數據庫,而且,一旦啓用這個參數,將使用操做系統認證,不使用口令文件。所以若是REMOTE_LOGIN_PASSWORDFILE=none且SQLNET.AUTHENTICATION_SERVICES= none這個時候數據庫是沒法登陸的。
alter system set REMOTE_LOGIN_PASSWORDFILE=none scope=spfile;
(1)REMOTE_LOGIN_PASSWORDFILE=none且SQLNET.AUTHENTICATION_SERVICES= none:
oracle安裝用戶本地sqlplus 「/ as sysdba」沒法登陸
非oracle安裝用戶本機sqlplus 「sys/change_on_install as sysdba」沒法登陸
非oracle安裝用戶遠程sqlplus 「/ as sysdba_on_install@sid as sysdba」沒法登陸
(2)REMOTE_LOGIN_PASSWORDFILE=exclusive且SQLNET.AUTHENTICATION_SERVICES= none:
oracle安裝用戶本地sqlplus 「/ as sysdba」沒法登陸
非oracle安裝用戶本機sqlplus 「sys/change_on_install as sysdba」能登陸
非oracle安裝用戶遠程sqlplus 「/ as sysdba_on_install@sid as sysdba」能登陸
(3)REMOTE_LOGIN_PASSWORDFILE=none且SQLNET.AUTHENTICATION_SERVICES= (NTS):
oracle安裝用戶本地sqlplus 「/ as sysdba」能登陸
非oracle安裝用戶本機sqlplus 「sys/change_on_install as sysdba」沒法登陸
非oracle安裝用戶遠程sqlplus 「/ as sysdba_on_install@sid as sysdba」沒法登陸
(4)REMOTE_LOGIN_PASSWORDFILE=exclusive且SQLNET.AUTHENTICATION_SERVICES= (NTS):
oracle安裝用戶本地sqlplus 「/ as sysdba」能登陸
非oracle安裝用戶本機sqlplus 「sys/change_on_install as sysdba」能登陸
非oracle安裝用戶遠程sqlplus 「/ as sysdba_on_install@sid as sysdba」能登陸
相關文章
相關標籤/搜索