4、匿名登录与安全
随着我们日常生活信息化,越来越多的系统出现在我们身边,记住各种系统的用户名密码开始成为生活工作的负担。所以,类似于单点登录的技术会有很大的发展前景。但是,对于数据库而言,OS匿名登录还是存在很大的风险。
Oracle数据库连接验证包括几个要素:服务器IP地址、服务名、连接端口和用户名密码信息。从信息公开角度看,服务器IP地址、服务名和连接端口是没有什么秘密而言的。真正能够起到数据保护的,也就是用户名和密码信息。如果普遍采用OS匿名登录,特别是客户端普遍使用,只要操作系统创建一个特定的用户,就可以直接登录,显然是危险的。
回到我们重启数据库过程中,报错过期参数使用的情况。我们打开生成的pfile文件,可以看到设置的remote_os_authent参数。
[oracle@localhost dbs]$ cat initsicspcdb.ora
sicspcdb.__db_cache_size=9193914368
*.processes=1000
*.remote_login_passwordfile='EXCLUSIVE'
*.remote_os_authent=TRUE
*.sessions=1105
*.undo_tablespace='UNDOTBS1'
使用这个pfile启动数据库,可以报错更加清晰。
SQL> startup pfile=initsicspcdb.ora
ORA-32006: REMOTE_OS_AUTHENT initialization parameter has been deprecated
Remote_os_authent已经被认为过期,Oracle甚至不推荐我们再使用这个参数了。在pfile中删除参数,重新启动数据库。
*.remote_login_passwordfile='EXCLUSIVE'
*.remote_os_authent=FALSE
*.sessions=1105
*.undo_tablespace='UNDOTBS1'
--剔除之后
Database dismounted.
ORACLE instance shut down.
SQL> startup pfile=initsicspcdb.ora
ORACLE instance started.
Total System Global Area 2.0911E+10 bytes
Fixed Size 2262368 bytes
Variable Size 1.1677E+10 bytes
Database Buffers 9193914368 bytes
从这个现象,我们可以猜测:Oracle也不推荐使用OS验证。
5、结论
OS匿名验证这个特性出现的很早,是早期Oracle发展的一个方向。近些年的版本中,这个特性没有过多的发展,说明Oracle在这个方面已经不再过多延伸了。在笔者之前的文章中,也介绍过借助Oracle客户端wallet特性实现的匿名登录,两者原理不同,安全性差异也有千差万别。