1. 测试环境:
小机类型:HP RX8640(IA)
操作系统版本:Windows 2003 Server EE
数据库版本:Oracle 9.2.0.8
数据库名称:IATEST
操作系统控制:Windows域
域名称:domain
主机名称:prodoradb.domain.cn
2. 主机配置 – sqlnet.ora文件:
NAMES.DIRECTORY_PATH= (TNSNAMES, ONAMES, HOSTNAME) SQLNET.AUTHENTICATION_SERVICES= (NTS)
3. 主机配置 – 用户组
ORA_DBA组: Administrator (本机管理员) domain\doadmin (域控管理员用户) domain\dba01 (Oracle的DBA用户)
4. 数据库配置
SQL> select name from v$database; NAME --------- IATEST SQL> show parameter remote NAME TYPE VALUE ------------------------------------ ----------- --------- remote_archive_enable string true remote_dependencies_mode string TIMESTAMP remote_listener string remote_login_passwordfile string EXCLUSIVE remote_os_authent boolean FALSE remote_os_roles boolean FALSE
5. 用domain\dba01登陆到主机上,测试OS认证sys用户登陆
C:\>sqlplus /nolog SQL*Plus: Release 9.2.0.8.0 - Production on 星期五 10月 31 13:49:22 2008 Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved. SQL> conn / as sysdba Connected. SQL> select name from v$database; NAME --------- IATEST 可以看到,本机通过OS认证登陆数据库是可行的。
6. 远程客户机配置 – sqlnet.ora文件
SQLNET.AUTHENTICATION_SERVICES = (NTS) NAMES.DIRECTORY_PATH= (TNSNAMES, ONAMES, HOSTNAME)
客户机上和主机上都设置为允许OS认证登陆
7. 远程客户机配置 – tnsnames.ora文件
IATEST = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = 10.241.5.11)(PORT = 1521)) ) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = iatest) ) )
8. 用domain\dba01登陆到远程客户上,测试OS认证sys用户登陆
C:\>sqlplus /nolog SQL*Plus: Release 10.2.0.1.0 - Production on 星期五 10月 31 14:21:58 2008 Copyright (c) 1982, 2005, Oracle. All rights reserved. SQL> conn sys/1@iatest as sysdba 已连接。 SQL> conn sys/2@iatest as sysdba 已连接。 SQL> conn /@iatest as sysdba 已连接。 SQL> show user USER 为 "SYS"
可以看到,在客户机上同样可以通过OS认证登陆到数据库
9. 修改参数remote_login_passwordfile=NONE,重复以上测试,同样成功。
10. 远程客户机修改配置 – sqlnet.ora文件
# SQLNET.AUTHENTICATION_SERVICES = (NTS) NAMES.DIRECTORY_PATH= (TNSNAMES, ONAMES, HOSTNAME)
11. 用domain\dba01再次登陆到远程客户上,测试OS认证sys用户登陆
C:\>sqlplus /nolog SQL*Plus: Release 10.2.0.1.0 - Production on 星期五 10月 31 14:29:57 2008 Copyright (c) 1982, 2005, Oracle. All rights reserved. SQL> conn sys/1@iatest as sysdba ERROR: ORA-01017: invalid username/password; logon denied SQL> conn sys/2@iatest as sysdba ERROR: ORA-01017: invalid username/password; logon denied
12. 同时测试不修改远程客户机的sqlnet.ora,而对主机的sqlnet.ora进行如上修改,测试结果一致。
结论:
1. 在一个Windows域控中的服务器和客户机,只要开启了OS认证的开关,都能通过OS认证登陆,而无视其它参数的设置。
2. 主机关闭OS认证开关,则可以杜绝OS认证登陆;远程机上关闭,则只能杜绝该终端的OS认证登陆。
3. 同时可以推断,Windows域管理的方式,可以欺骗Oracle,让其误认为域用户登陆的远程机为主机。
建议:
1. 对于生产用数据库,尽可能不要使用Windows操作系统。
2. 即使使用Windows操作系统,也尽可能不要将其放入域控中。
3. 如果以上皆不可满足,为了安全起见,一定要在服务器端,关闭OS认证开关。
no comment untill now