oracle安全配置参数,两个和安全相关的Oracle参数演进

上次分享中介绍了两个和Oracle安全相关的参数,一个是o7_dictionary_accessibility,一个是remote_os_authent,比较小众的知识点,了解即可。

1.o7_dictionary_accessibility

从字面意思上,可能有朋友会猜到o7的含义,没错,这个参数主要是为了向下兼容Oracle 7版本的特性,官方手册中对其的描述,

作用大致有两个:

(1) 会阻止具有SELECT ANY TABLE系统权限的用户访问数据字典的基表。

(2) 确保了SYS用户只能以SYSDBA身份登录。

要是还觉得晦涩的话,我们用实验来说明他的作用,o7_dictionary_accessibility默认值是false,

68bfdf3476ef0c6acd06a67b23f67ce1.gif

(1) 首先使用SYS账户,为BISAL用户授予SELECT ANY TABLE系统权限,此时使用BISAL用户是无法查询数据字典表信息的,会提示ORA-00942错误。

68bfdf3476ef0c6acd06a67b23f67ce1.gif

(2) 使用sys账户但未使用SYSDBA角色登陆,会提示ORA-28009错误,要求sys用户必须使用SYSDBA或SYSOPER角色,

68bfdf3476ef0c6acd06a67b23f67ce1.gif

接下来我们修改o7_dictionary_accessibility的值,由于其只能使用spfile修改,因此需要重启实例生效,

68bfdf3476ef0c6acd06a67b23f67ce1.gif

(1) 此时使用BISAL用户就可以查询数据字典表信息了,

68bfdf3476ef0c6acd06a67b23f67ce1.gif

(2) 使用sys但不用SYSDBA角色登陆,此时是可以,

68bfdf3476ef0c6acd06a67b23f67ce1.gif

但由于不是SYSDBA管理员,因此不能执行停库启库等操作。

说明:

(1) 11g下o7_dictionary_accessibility默认值是false,说明了Oracle在安全性上的要求更加严格了,sys用户必须使用SYSDBA或SYSOPER角色登陆。

(2) 数据字典表属于系统表,即使有了SELECT ANY TABLE这个权限,对于普通用户来说还是只能访问其他用户的用户表,如果需要普通用户访问数据字典表,还是可以使用SELECT ANY DICTIONARY或SELECT_CATAOG_ROLE授权来做。

2.remote_os_authent

官方对于这个参数的描述,这是一个deprecated的参数,jdk的api中经常会看见这个词deprecated,表示这是一个过时废弃的参数,仅仅为了向下兼容使用,含义是是否允许和OS_AUTHENT_PREFIX参数一起来授权远程客户端的访问。

68bfdf3476ef0c6acd06a67b23f67ce1.gif

他提到了另一个参数OS_AUTHENT_PREFIX,默认值是OPS$,

68bfdf3476ef0c6acd06a67b23f67ce1.gif

查看默认值,

68bfdf3476ef0c6acd06a67b23f67ce1.gif

乍一看可能不太好理解,实验一看就能明白了,首先改为TRUE,重启,

68bfdf3476ef0c6acd06a67b23f67ce1.gif

注意这启动的时候提示ORA-32004错误,包括alert中也会有,但这只是一个warning信息,就是因为此时使用了一个已经废弃了的参数,原则上是不应该使用的,但即使使用了也不会阻止,只会提醒。

远程客户端服务器上创建一个名为oracle的操作系统用户,数据库中创建一个”OS_AUTHENT_PREFIX+操作系统用户名”的用户,即ops$oracle,并授予create session权限,注意此处create user使用的是identified externally语法,未设置密码,

68bfdf3476ef0c6acd06a67b23f67ce1.gif

配置访问数据库的tns连接串,使用/nolog登陆sqlplus,并用/@remote方式登陆数据库,

68bfdf3476ef0c6acd06a67b23f67ce1.gif

可以看出,我在未输入密码的情况下,就通过系统认证的方法,登陆了数据库,用户就是之前创建的ops$oracle。

说明:

通过设置remote_os_authent,结合操作系统用户名,就可以绕过密码,直接登陆数据库,方便了远程客户端的访问,但增加了系统的不安全性,因此11g下此参数默认值是false,而且属于deprecated类型,符合Oracle日益更严格的安全机制要求。

总结:

系统都是从不成熟到成熟,一点一点演进发展而来的,Oracle亦如此,通过一些参数默认值的取值变化,或者参数是否依旧有效,就可以看出演进过程中关注点的变化,换句话说,任何一处变动都有他的原因,用一个词儿描述就是:“讲究”。

如果您觉得此篇文章对您有帮助,欢迎关注微信公众号:bisal的个人杂货铺,您的支持是对我最大的鼓励!共同学习,共同进步:)

68bfdf3476ef0c6acd06a67b23f67ce1.gif

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值