梦幻之旅

DEBUG - 天道酬勤

   :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理 ::
  671 随笔 :: 6 文章 :: 256 评论 :: 0 Trackbacks
限制访问Oracle客户端IP方法总结
在itpub上有一个帖子讨论了一个话题,就是关于限定访问Oracle客户端IP的方法问题的讨论,我印象中似乎这样的问题在论坛上已经讨论了比较多了,今天就总结一下。

http://www.itpub.net/743725,1.html

  这里讨论的在Oracle数据库层面上限制IP的方法,当然还有可以在网络层面上限制IP,例如防火墙软件等方式。应用层,例如:WebLogic设置访问数据库的IP。

  在Oracle数据库中由于版本的差异,可以通过不同的方式来解决这些问题。

有几种方式来实现这样的功能:

1、 修改SQLNET.ora文件限制访问数据库的IP。
2、 使用触发器实现。

sqlnet.ora文件的功能:

1. Specify the client domain to append to unqualified names

2. Prioritize naming methods

3. Enable logging and tracing features

4. Route connections through specific processes

5. Configure parameters for external naming

6. Configure Oracle Advanced Security

7. Use protocol-specific parameters to restrict access to the database


这里使用的就是sqlnet.ora文件的第七项功能限制访问数据库的连接。

适用版本:oracle 9i以上版本
在9i提供了几个参数:
TCP.EXCLUDED_NODES
设置禁止访问数据库的IP地址列表。
TCP.INVITED_NODES
设置允许访问数据库的IP地址列表,当这个参数和TCP.EXCLUDED_NODES设置的地址相同的时候将覆盖TCP.EXCLUDED_NODES设置。
TCP.VALIDNODE_CHECKING
检测上述参数的设置。

例如:
 
tcp.validnode_checking=yes #允许访问的ip tcp.invited_nodes =(ip1,ip2,……) #不允许访问的ip tcp.excluded_nodes=(ip1,ip2,……)
 


通过这样的设置就可以根据自己的需要更改,

需要注意的问题:
1、 需要设置参数为YES,这样才能激活。
2、 建议设置允许访问的IP,因为IP地址有可能被随意修改,就不能起到自己的目的。
3、 TCP当参数TCP.INVITED_NODES和TCP.EXCLUDED_NODES设置的地址相同的时候将覆盖TCP.EXCLUDED_NODES设置。
4、 需要重启监听器才能生效。
5、 这个方式只是适合TCP协议。
6、 这个配置适用于9i以上版本。在9i之前的版本使用文件protocol.ora。
7、 在服务器上直接连接数据库不受影响。
8、 这种限制方式事通过监听器来限制的。 
 9、 这个限制只是针对IP检测,对于用户名检测事不支持的。
10、使用触发器

 
create or replace trigger stop_52_connect after logon on scott2.schema declare ipinfo VARCHAR2(30); begin select sys_context('userenv','ip_address') into ipinfo from dual; if ipinfo='172.16.0.52' then raise_application_error('-20001','you can not logon by scott2'); end if; end stop_52_connect;
posted on 2010-07-19 18:13 HUIKK 阅读(2516) 评论(0)  编辑  收藏 所属分类: DataBase

只有注册用户登录后才能发表评论。


网站导航: