Oracle 身份驗證方式


  Oracle 身份驗證方式有如下幾種:

  • 操作系統身份驗證
  • 口令文件驗證
  • 口令身份驗證
  • 外部身份驗證
  • 全局身份驗證

  前兩項技術僅供管理員使用,最后一項技術要求使用 LDAP 目錄服務器。LDAP 目錄服務器是 Oracle Internet Directory(OID),作為 Oracle 應用服務器的一部分發布。

  1. 操作系統和口令文件身份驗證

      要為賬戶啟用操作系統和口令身份驗證(二者是相配的),必須為用戶授予 SYSDBA 或者 SYSOPER 權限:

      GRANT [ sysdba  | sysoper ]  TO username ;

      如果向用戶授予這些權限之一或者所有權限,則會將用戶口令從數據字典復制到外部口令文件中,此時,即使數據庫未處於打開狀態,實例也可以讀取口令。

      要使用口令文件身份驗證,用戶可以在使用 SQL*Plus 時通過以下語法連接:

      CONNECT username / password [ @db_alias ] AS [ SYSOPER | SYSDBA ] ;

      注意,可使用口令文件身份驗證,通過 Oracle Net 連接到遠程數據庫。

      要使用操作系統身份驗證,用戶必須被確認為有權限訪問 Oracle 二進制文件的操作系統用戶之后,且在使用 SQL*Plus 時通過以下語法連接之前首先登陸到數據庫服務器:

      CONNECT / AS [ SYSOPER | SYSDBA ] ;

      與 SYSDBA 和 SYSOPER 以同一種方式運行的第三種權限是 SYSSAM,此權限僅適用於 ASM 實例。

  2. 口令身份驗證

      在使用 SQL*Plus 時,通過口令身份驗證進行連接的語法如下:

      CONNECT username / password@db_alias ]

      這是 Oracle 一般用戶使用得最多的一種身份驗證方式。在使用口令身份驗證進行連接時,實例將針對在數據字典中的用戶賬戶存儲的口令。驗證給定的口令。為此,數據庫必須處於打開狀態;從邏輯上講,在使用口令身份驗證連接時,不可能發出 STARTUP 命令或者 SHUTDOWN 命令。不允許 SYS 用戶以口令身份驗證的方式進行連接,SYS 只能使用口令文件、操作系統或LDAP 身份驗證。

  3. 外部身份驗證 

      如果使用外部身份驗證創建用戶賬戶,Oracle 會將身份驗證委托給外部服務。它不會提示輸入口令。如果為啟用 Advaned Security 選項,則唯一可以使用得外部身份驗證方形式是操作系統身份驗證。如前所述,這是 SYSDBA 和 SYSOPER 賬戶的要求,但也可以用於普通用戶。此技術使用與操作系統用戶賬戶同樣的名稱創建 Oracle 用戶賬戶,但在前面加料OS_AUTHENT_PREFIX 實例參數指定的字符串。此參數默認為 OPS$ 字符串。可以用下列語句查詢:

 

SQL> show parameter os_authent_prefix

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
os_authent_prefix                    string      ops$
SQL> 

或者:
SQL> select value from v$parameter where name='os_authent_prefix'
  2  /

VALUE
--------------------------------------------------------------------------------
ops$

 

      創建外部操作系統身份驗證的用戶很簡單,假如有一個操作系統用戶名為 dragon,則:      

對於 LINUX 系統:
   create user ops$dragon identified externally;
對於 WINDOWS 系統,假如登陸 ID 是 Dragon,域名是 MIS:
   create user "OPS$MIS\DRAGON" identified externally;

 

      創建好用戶后,以 dragon 身份登錄到操作系統,然后在直接輸入:sqlplus / 進行登錄並連接到數據庫。  

  4. 全局身份驗證

      一個用於管理身份的新興標准時使用 LDAP 服務器。Oracle Internet Directory(OID) 就是 Oracle 符合 LDAP 標准的一個產品,全局用戶就是在 LDAP 目錄中定義的用戶。

  5. 跟身份驗證相關的幾個參數和配置

      查看是否允許遠程登錄使用口令文件進行身份驗證,有三個取值: SHARED/EXCLUSIVE/NONE,為 NONE 的話表示不允許遠程使用口令文件驗證,如遠程用SYS賬號連接 Oracle 將會報錯,如下面。

SQL> show parameter remote_login_passwordfile NAME TYPE VALUE ------------------------------------ ----------- ------------------------------
remote_login_passwordfile string EXCLUSIVE SQL> 

 

SQL> alter system set remote_login_passwordfile='NONE' scope=spfile
 2  /

System altered.

SQL> startup force

進行遠程連接,報錯,實際是參數值被更改:

SQL> conn sys / ora10g @byisdb.rac1 as sysdba
ERROR:
ORA-01017: invalid username/password; logon denied

      查看使用口令文件進行身份驗證的用戶列表:

 

SQL> select * from v$pwfile_users
  2  /

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

 

      $ORACLE_HOME/network/admin/sqlnet.ora 配置文件中 SQLNET.AUTHENTICATION_SERVICES 參數,有三個取值:

  • NONE:作用是不允許通過 OS 系統用戶登錄數據庫,需要提供用戶名及密碼;
  • ALL:作用是允許所有的登錄方式;
  • NTS:作用是允許本地操作系統用戶認證;

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM