0
点赞
收藏
分享

微信扫一扫

Oracle数据库的用户安全审核的几种策略以及实际生产中的应用


                                                 Oracle数据库的用户安全审核的几种策略以及实际生产中的应用

Oracle数据库 是一个重型的大型的关系型数据库,它的用户系统是该数据库重而大的一个体现。首先,用户的种类繁多,其次,用户的权限十分细化,再次,用户的登录审核策略和方式也是多种多样,本文的探讨范围是用户的登录安全审核策略,说人话就是,Oracle数据库的用户登录安全审计相关问题。清楚的,理解用户的种类,根据用户的权限和生产中的实际需求,制定适当的用户安全审核策略是十分必要的。

根据Oracle数据库用户的权限,大致可以分为两种用户,即,超级权限用户,普通权限用户。而权限是可以通过角色继承的,也就是说普通用户也可以通过提权操作转化成超级权限用户。

Oracle数据库一般通过密码来验证用户连接,用户通过输入密码连接到数据库进行操作。当然也能通过数据库外部方法来验证用户,如操作系统、kerberos或者radius。使用这些方法时,用户无需输入密码即可登陆数据库。

 

 

sqlnet.authentication_services=(NTS),在$ORACLE_HOME/network/admin/sqlnet.ora这个文件中

NTS特指的是windows系统,或者设为all,这两种情况都允许操作系统认证。如果在unix下如果没有设置sqlnet.authentication_services,默认就是操作系统认证!或者设为all也允许操作系统认证。参数SQLNET.AUTHENTICATION_SERVICES= (NONE,NTS)表明用户连接Oracle服务器时使用哪种验证方式,此时,是两种验证方式混用。

NONE表示Oracle数据库身份验证,NTS表示操作系统身份验证,两种方式可以并用。

 

 

数据库用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”

能登录

Oracle REMOTE_LOGIN_PASSWORDFILE 参数设置初始化参数 REMOTE_LOGIN_PASSWORDFILE :

在 Oracle 数据库实例的初始化参数文件中,此参数控制着密码文件的使用及其状态。它可以有以下几个选项:

1、NONE :指示 Oracle 系统不使用密码文件,特权用户的登录通过操作系统进行身份验证;

2、EXCLUSIVE :指示只有一个数据库实例可以使用此密码文件。只有在此设置下的密码文件可以包含有除 SYS 以外的用户信息,即允许将系统权限 SYSOPER /SYSDBA 授予除 SYS 以外的其他用户。此设置oracle 9i中为缺省值。有朋友说是shared,其实不然.

3、SHARED :指示可有多个数据库实例可以使用此密码文件。在此设置下只有 SYS 帐号能被密码文件识别,即使文件中存有其他用户的信息,也不允许他们以 SYSOPER /SYSDBA 的权限登录。---- 在 REMOTE_LOGIN_PASSWORDFILE 参数设置为 EXCLUSIVE 、 SHARED 情况下, Oracle 系统搜索密码文件的次序为:在系统注册库中查找 ORA_SID_PWFILE 参数值(它为密码文件的全路径名);若未找到,则查找 ORA_PWFILE 参数值;若仍未找到,则使用缺省值 ORACLE_HOME/DATABASE/PWDSID.ORA ;其中的 SID 代表相应的 Oracle 数据库系统标识符。

 总结$ORACLE_HOME/network/admin/sqlnet.ora中的AUTHENTICATION_SERVICES参数:

1、在windows下,SQLNET.AUTHENTICATION_SERVICES必须设置为NTS或者ALL才能使用OS认证;不设置或者设置为其他任何值都不能使用OS认证。

2、在linux下,在SQLNET.AUTHENTICATION_SERVICES的值设置为ALL,或者不设置的情况下,OS验证才能成功;设置为其他任何值都不能使用OS认证。

spfile中的REMOTE_LOGIN_PASSWORDFILE参数:

1、值为exclusive时,远程能作为sysdba身份登录

2、值为none时,以sysdba身份无法登录

 

 

 

举报

相关推荐

0 条评论