打对了

宇宙和生命从哪里来?又要到哪里去呢?

 

Oracle外部身份认证研究

一、服务器上使用操作系统验证
1.配置SQLNET.ORA文件
参数NAMES.DIRECTORY_PATH= (TNSNAMES, ONAMES, HOSTNAME)
表明解析客户端连接时所用的主机字符串的方式
TNSNAMES表示采用TNSNAMES.ORA文件来解析
ONAMES表示Oracle使用自己的名称服务器(Oracle Name Server)来解析,目前Oracle建议使用轻量目录访问协议LDAP来取代ONAMES
HOSTNAME表示使用host文件,DNS,NIS等来解析

参数SQLNET.AUTHENTICATION_SERVICES= (NONE,NTS)
表明用户连接Oracle服务器时使用哪种验证方式
NONE表示Oracle数据库身份验证,NTS表示操作系统身份验证,两种方式可以并用


2.建立相应的操作系统组及用户加入该组
ORA_DBA组中的域用户和本地用户不需要Oracle用户名和密码就可以登录Oracle
而且该组的用户登录数据库后都具有SYSDBA权限
(多个实例时,可以建立类似这样的组ORA_SID_DBA,其中SID指实例名)
同理:ORA_OPER组中的成员具有SYSOPER角色的权限。


3.登录方式
C:\>sqlplus “/ as sysdba”
或者C:\>sqlplus nolog,然后SQL>connect / as sysdba


4.init.ora中的Remote_Login_Passwordfile对身份验证的影响
三个可选值:
NONE:默认值,指示Oracle系统不使用密码文件,通过操作系统进行身份验证的特权用户拥有SYSORA和SYSOPER权限
EXCLUSIVE:
1.表示只有一个数据库实例可以使用密码文件
2.允许将SYSORA和SYSOPER权限赋值给SYS以外的其它用户
SHARED:
1.表示可以有多个数据库实例可以使用密码文件
2.不允许将SYSORA和SYSOPER权限赋值给SYS以外的其它用户
所以,如果要以操作系统身份登录,Remote_Login_Passwordfile应该设置为NONE


5.当登录用户不是ORA_DBA组和ORA_OPER组成员时,登录数据库
需要在Oracle中创建当前操作系统用户相同的用户名,如果当前用户是域用户,则名称为:domainname\yourname,
如果是本地计算机用户,则名称为:computername\yourname
创建方法:
create "domainname\yourname" identified externally;
grant connect to "domainname\yourname";

Windows操作系统,修改注册表HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\HOME0下面添加OSAUTH_PREFIX_DOMAIN,值设为FALSE,在创建Oracle用户时可以忽略掉域名

这种方式下,init.ora中有一个参数将影响数据库如何匹配一个windows用户和Oracle用户
os_authent_prefix = ""
缺省为空,Oracle8i以前,无该参数,而使用OPS$作为用户名前缀.(Oracle用户名最大长度限制为30个字符)


--------------------------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------------

二、远程客户端使用操作系统验证

首先需要在init.ora文件中设置如下参数:
REMOTE_OS_AUTHENT=TRUE

Oracle不推荐在远程客户端上使用操作系统验证,因为客户端验证时不是通过服务器上的操作系统用户来验证,而是使用客户端自己怕操作系统来进行windows验证,这样,客户端可以采用建立对应的windows机器名和用户名的方式来欺骗Oracle的操作系统验证.
例如:
创建了如下Oracle用户
create "zl\zyk" identified externally;
grant connect to "zl\zyk";
如果有一台名为ZL的机器,创建了一个名为zyk的用户,并以此登录连接Oracle服务器(连接时使用\@OracleSTR),无需用户名和密码
造成此问题的原因是,Oracle使用客户端操作系统进行验证,它无法区别zl是域名还是机器名.


Windows &.net杂志2004第7期(http://www.winnetmag.com/Windows/Articles/ArticleID/42280/pg/1/1.html)
作者在文章中强调(第三页最后一段):
Oracle数据库服务器上的windows身份认证很容易实施,并且使已登录的用户访问数据库很方便
但是,这种验证模型并不适合远程客户端,因为安全隐患太大。


--------------------------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------------

三、Oracle 9i对操作系统身份认证支持的增强
Oracle 9i可以与活动目录集成,通过Oracle Enterprise Security Manager 管理用户权限
Enterprise user authentication做为一种新的外部集中认证模式
(也叫 global user authentication,Oracle 9i以前的External user authentication仅仅采用了客户端操作系统本地认证)

Oracle9i运行在一个win2000及以上的域中,注册表HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\HOMEID,参数OSAUTH_X509_NAME设置为true
(默认为false,如果该参数不存在,则新增为REG_EXPAND_SZ类型)

注意:Windows NT 4.0 domain 不支持这种方式


参考:
http://www.utexas.edu/its/unix/reference/oracledocs/v92/B10501_01/win.920/a95492/enterpri.htm
http://www.utexas.edu/its/unix/reference/oracledocs/v92/B10501_01/win.920/a95492/authen.htm
http://www.utexas.edu/its/unix/reference/oracledocs/v92/B10501_01/network.920/a96573/asoauth.htm

posted on 2004-11-09 09:33 知道得越多知道的越少 阅读(2232) 评论(1) 编辑 收藏

评论

#1楼 2006-01-16 11:33 猜猜[未注册用户]

好文章,支持多发,谢谢  回复 引用   

导航

统计

公告

对你说打错了 我不是你那个什么
你想找的那个 就算我跟她同名同姓又如何
都说你打错了 我要欺骗你干什么
你们多久没见连 我跟她的声音你都不认得
你怎么样过 什么样的生活 是否难耐寂寞
你到底是谁 总是阴差阳错 擦过我的耳朵
第几次打错了 这是注定还是巧合
谁是玛格列特 她知道你的着急一定很快乐
你们发生什么 还是你欠了她什么
有什么舍不得 她不住这里你却非找她不可
你怎么样过 什么样的生活 是否难耐寂寞
你到底是谁 总是阴差阳错 擦过我的耳朵
你怎么样过 什么样的生活 是否难耐寂寞
你到底是谁 总是阴差阳错 擦过我的耳朵
你们会讲什么口气会不会软软的
你紧张得想哭 多年后想起今天值得不值得
昵称:知道得越多知道的越少
园龄:7年4个月
粉丝:2
关注:0

搜索

 
 

常用链接

我的标签

随笔分类

随笔档案

文章分类

文章档案

音乐

有价值的blog

最新评论

阅读排行榜

评论排行榜

推荐排行榜