Oracle驗證方式詳解
一、 身份驗證
Oracle驗證過程:
二、身份驗證的方式
Oracle身份驗證的方式通過sqlnet.ora這個檔案來控制
SQLNET.ORA 檔案中常用的兩個引數
------------------------------------------
# 指定啟動一個或多個認證服務
SQLNET.AUTHENTICATION_SERVICES= (NTS/NONE/ALL)
# 指定CLIENT NAME解析方法的次序,預設是NAMES.DIRECTORY_PATH=(tnsnames, onames, hostname)
NAMES.DIRECTORY_PATH= (TNSNAMES, EZCONNECT)
------------------------------------------
SQLNET.AUTHENTICATION_SERVICES= (NTS/NONE/ALL)
NONE:作用是不允許通過 OS 系統使用者登入資料庫,需要提供使用者名稱及密碼;
ALL:作用是允許所有的登入方式;
NTS:此設定值僅用於Windows NT系統,此設定同時支援OS認證和口令檔案認證,只有在設定了(NTS)值之後執行在Windows系統上的Oracle才支援OS認證。
如果不設定此引數,對Linux系統,預設支援OS認證和口令檔案認證。對Windows系統,預設只支援口令檔案認證,不支援OS認證。
NAMES.DIRECTORY_PATH= (TNSNAMES, EZCONNECT)
EZCONNECT連線方式:username/password@hostname:port/service_name 不需要通過tnsname.ora 檔案解析
TNNAMES:可以通過tnsnames.ora檔案解析獲得需要訪問的主機、埠、dbservice 等資訊。
CONNECT username/password [@db_alias] AS [SYSOPER | SYSDBA] ;
ORCL =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 127.0.0.1)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = orcl)
)
)
三、常見幾種身份驗證的登陸方式
1) 使用者名稱/密碼方式驗證
在使用 SQL*Plus 時,通過口令身份驗證進行連線的語法如下:
CONNECT username / password [ @db_alias ]
這是 Oracle 一般使用者使用得最多的一種身份驗證方式。在使用口令身份驗證進行連線時,例項將針對在資料字典中的使用者賬戶儲存的口令。驗證給定的口令。為此,資料庫必須處於開啟狀態;
從邏輯上講,在使用口令身份驗證連線時,不可能發出 STARTUP 命令或者 SHUTDOWN 命令。不允許 SYS 使用者以口令身份驗證的方式進行連線,SYS 只能使用口令檔案、作業系統或LDAP 身份驗證。
2)作業系統驗證
就是說只要使用者登陸了Oracle database的server就無需其他驗證可以直接登陸oracle資料庫,預設遠端作業系統認證是關閉的。如果訪問本地的資料庫的話,使用者是需要被加到作業系統的相應group即可,並且在資料庫中有對應使用 作業系統認證字首的使用者。
比如說,作業系統使用者oracle ==>對應資料庫中如果有 ops$oracle的使用者存在, 那麼此時就可以通過作業系統認證登陸。 只要改使用者登陸了作業系統,就無需使用使用者名稱密碼登陸資料庫。
Operating System GroupUNIX User GroupWindows User Group
OSDBA dba ORA_DBA
OSOPER oper ORA_OPER
下面是作業系統認證的資料庫引數
SYS@kyle>show parameter os_authent
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
os_authent_prefix string ops$
remote_os_authent boolean FALSE
預設情況下,我們只能在伺服器端實現匿名登入,登入之後直接以最高許可權sys的角色出現。 不新增as sysdba登入過程是不允許的。如果需要實現遠端登陸則需要設定 remote_os_authent=TRUE
Oracle的OS層面驗證,最直接的關聯引數就是os_authent_prefix,預設取值為ops$。這種技術是建立在作業系統使用者名稱與資料庫使用者名稱之間的對映規則上。如果嘗試連線資料庫的作業系統使用者名稱在資料庫中對應有一個 新增引數os_authent_prefix作為字首的資料庫使用者那麼就可以實現OS驗證配置。
注意:這個規則是在伺服器端成立的。
比如:如果當前連線的作業系統名為oracle,os_authent_prefix為ops$,如果此時資料庫中包括一個為ops$oracle的使用者,是可以在伺服器端進行匿名登入的。
下面進行測試,當前Linux伺服器端OS使用者名稱為oracle,也是oinstall和dba組成員。
SYS@kyle>create user ops$oracle identified by oracle;
User created.
SYS@kyle>grant connect,resource,create session to ops$oracle;
Grant succeeded.
[oracle@test admin]$ sqlplus /
SQL*Plus: Release 11.2.0.4.0 Production on Wed Apr 5 18:42:01 2017
Copyright (c) 1982, 2013, Oracle. All rights reserved.
Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
With the Partitioning, Oracle Label Security, OLAP, Data Mining,
Oracle Database Vault and Real Application Testing options
OPS$ORACLE@kyle>
當開啟遠端os登陸驗證以後,原理是一樣的,但是使用者的作業系統驗證不是通過oracle dbserver,而是使用者自己的作業系統使用者。比如說Windows 管理使用者為admin ,這時只要資料庫中有opt$admin使用者存在,就可以通過遠端os身份驗證登陸而無需輸入資料庫使用者密碼。
注意,remote_os_authent 這個引數目前已被Oracle棄用
3)口令檔案驗證
Oracle的口令檔案的作用是存放所有以sysdba或者sysoper許可權連線資料庫的使用者的口令,如果想以sysdba許可權遠端連線資料庫,必須使用口令檔案,否則不能連上。
由於sys使用者在連線資料庫時必須以sysdba or sysoper方式,也就是說sys使用者要想連線資料庫必須使用口令檔案。使用口令檔案的好處是即使資料庫不處於open狀態,依然可以通過口令檔案驗證來連線資料庫。開始安裝完oracle,沒有給普通使用者授予sysdba許可權,口令檔案中只存放了sys的口令,如果之後把sysdba許可權授予了普通使用者,那麼此時會把普通使用者的口令從資料庫中讀到口令檔案中儲存下來,當然這時必須要求資料庫處於open狀態
口令檔案存放路徑一般為:
WINDOWS下:%ORACLE_HOME%\DATABASE\PWD.ora
UNIX/LINUX 下:$ORACLE_HOME/dbsdbs/orapw
如何建立口令檔案
orapwd file=orapw password=*** entries= N
如何開啟口令檔案身份驗證
3.1)檢視哪些使用者可以登陸口令檔案登陸
SYS@kyle>select * from v$pwfile_users;
USERNAME SYSDB SYSOP SYSAS
------------------------------ ----- ----- -----
SYS TRUE TRUE FALSE
預設只有sys使用者
3.2)給需要開啟口令檔案身份驗證的使用者賦予sysdba or sysoper的許可權
SYS@kyle>grant sysdba to kyle;
3.3)再次檢視
SYS@enmo>select * from v$pwfile_users;
USERNAME SYSDB SYSOP SYSAS
------------------------------ ----- ----- -----
SYS TRUE TRUE FALSE
KYLE TRUE FALSE FALSE
3.4)測試使用者登陸
sqlplus kyle/*** as sysdba@testdb
口令檔案驗證的相關引數
Remote_login_passwordfile 引數一共有三個值含義如下:
None: 不使用口令檔案驗證,如果不使用口令檔案驗證時,沒有使用者在ora_dba組中,那麼就沒有任何使用者可以作為sysdba進入資料庫了。Oracle資料庫不允許遠 程SYSDBA/SYSOPER身份登入
Exclusive: 表示例項獨佔使用口令檔案,也就是各自例項使用單獨的口令檔案
Shared 表示多個例項共享一個口令檔案
Shared說明
當remote_login_passwordfile=shared時候,
在$ORACLE_HOME/network/admin目錄下仍然生成pwd+sid.ora檔案。每個資料庫例項使用自己的sys使用者和對應的密碼,但是不能再加入新的有sysdba許可權的使用者
如果remote_login_passwordfile=exclusive 而且os中有ora_dba組。那麼使用者如果作為ora_dba組登陸的話。仍然可以使用os的驗證
4)其他方式驗證
還有其他一些驗證方式,由於不常用就不過度解釋,比如說ldap驗證。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/26723566/viewspace-2137055/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- ORACLE登入驗證方式的詳解Oracle
- Oracle的驗證方式Oracle
- oracle驗證方式簡介Oracle
- Oracle 密碼驗證方式Oracle密碼
- sqlnet.ora 驗證oracle 登陸方式SQLOracle
- jQuery表單驗證效果詳解jQuery
- 郵箱格式驗證程式碼詳解
- SSL證書是如何驗證的?驗證方式推薦
- MySQL登入驗證方式MySql
- vagrant啟動身份驗證失敗的解決方式
- 使用者連線到oracle的三種驗證方式Oracle
- Oracle OS認證與口令檔案認證詳解Oracle
- 直播商城原始碼,驗證方式之一,滑塊驗證原始碼
- 簡訊驗證實現方式
- Django模型驗證器詳解和原始碼分析Django模型原始碼
- 正則實現二代身份證號碼驗證詳解
- oracle登陸認證方式Oracle
- Solon詳解(六)- 定製業務級別的驗證註解
- Oracle的身份驗證Oracle
- 資料庫的身份驗證方式資料庫
- 詳解Spring Security的HttpBasic登入驗證模式SpringHTTP模式
- JavaScript數字和字母組合驗證碼詳解JavaScript
- Thinkphp框架擴充包使用方式詳細介紹–驗證碼例項(十一)PHP框架
- 身份證號碼的正規表示式及驗證詳解(JavaScript,Regex)JavaScript
- 換種方式使用 Laravel 的 request 驗證Laravel
- jQuery Validate非同步ajax方式驗證jQuery非同步
- jQuery Validate驗證觸發的方式jQuery
- 註冊驗證流程有哪些方式呢
- PHP表單提交驗證各種方式PHP
- ASP.NET七大身份驗證方式及解決方案ASP.NET
- oracle常見身份驗證Oracle
- 直播系統原始碼,選擇驗證方式時選擇郵箱驗證原始碼
- oracle兩種登陸認證方式Oracle
- koa2,koa-jwt中token驗證實戰詳解JWT
- 使用JAVA進行ad域身份驗證常用屬性詳解Java
- 解決oracle10g EM主機驗證問題Oracle
- ORACLE 密碼驗證函式Oracle密碼函式
- oracle安裝shell(未驗證)Oracle