Oracle数据库的三种验证机制

来源:互联网 发布:南风捏脸数据御姐 编辑:程序博客网 时间:2024/05/29 13:40

在windows操作系统中安装下载版的oracle数据库,只要有操作系统的登陆权限就可以用任意的用户名,密码以sysdba的身份登陆。我想拒绝别人访问,应该怎么解决这个问题?

%oracle_home%/NETWORK/ADMIN
sqlnet.ora中修改
SQLNET.AUTHENTICATION_SERVICES= (NTS)
-->
SQLNET.AUTHENTICATION_SERVICES= (NONE)

 

Oracle数据库的三种验证机制。 <1>操作系统验证 <2>密码文件验证 <3>数据库验证。你的本机通过了第一种验证机制。

 

 

系统安全一直是各个系统关注的首要问题,而用户验证是其中很重要的一环。一般应用程序习惯性地将用户验证放在数据库中,通过比对用户的输入与数据库记录来验证用户,但数据库自身如何来验证呢?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---------------使用口令验证方式,登录成功

 

 

     二、普通用户验证

           之前讲了SYS用户的验证,那么普通用户如何验证?

           SYS用户是在数据库还没启动时登录数据库进行启动操作,而普通用户是在数据库启动后操作不同方案下的对象。

     所以普通用户采用的是数据字典的验证方式:

    

            select username,password from dba_users;

 

     可以看到所有用户和密码

原创粉丝点击