ORACLE用户验证的机制关系到ORACLE数据库的安全,下面就为您详细介绍ORACLE用户验证机制,如果您对此感兴趣的话,不妨一看。
系统安全一直是各个系统关注的首要问题,而ORACLE用户验证是其中很重要的一环。一般应用程序习惯性地将用户验证放在数据库中,通过比对用户的输入与数据库记录来验证用户,但数据库自身如何来验证呢?ORACLE用户可以分为SYS用户和普通用户,他们的验证方式有所区别
一、SYS用户验证
SYS用户拥有数据库的完全控制权,对其验证显得至关重要。由于进行验证时数据库还不可用,ORACLE采用两种方式来验证SYSDBA用户:操作系统验证和口令文件验证。
1. 操作系统验证
对于在安装Oracle的本机上使用Oracle的情况,Oracle可以将用户验证交给操作系统,只要登录操作系统的用户在DBA组里,就有SYS用户的权限,可以修改 $ORACLE_HOME/dbs/sqlnet.ora,加入如下行:
SQLNET.AUTHENTICATION_SERVICES= (NTS)
操作系统验证具有***优先级,当设置为他时,口令文件验证不起作用
2. 口令文件验证
要使用口令文件验证,首先得禁用操作系统验证,修改 $ORACLE_HOME/network/admin/sqlnet.ora,加入如下行(这里将$ORACLE_HOME转化为绝对路径):
SQLNET.AUTHENTICATION_SERVICES= (NONE)
其次是设置口令验证配置参数:remote_login_passwordfile,他可以有几个值,其含义如下
-- none 不使用口令验证
-- exclusive 仅允许一个实例使用该口令文件
--shared 多个实例可以共用一个口令文件
这里将参数设置为独占:
alter system set remote_login_passwordfile=exclusive scope=spfile;
shutdown immediate
使用口令实用程序生成口令文件
orapwd file= $ORACLE_HOME/database/pwdora10g.ora password=oracle
此时尝试以不同方式登录数据库
sqlplus / as sysdba-----------------权限不足
sqlplus sys/oracle as sysdba---------------使用口令验证方式,登录成功
二、普通ORACLE用户验证
之前讲了SYS用户的验证,那么普通用户如何验证?
SYS用户是在数据库还没启动时登录数据库进行启动操作,而普通用户是在数据库启动后操作不同方案下的对象。
所以普通用户采用的是数据字典的验证方式:
select username,password from dba_users;
可以看到所有用户和密码
【编辑推荐】