Chinaunix首页 | 论坛 | 博客
  • 博客访问: 488090
  • 博文数量: 158
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 904
  • 用 户 组: 普通用户
  • 注册时间: 2016-10-10 11:17
文章分类

全部博文(158)

文章存档

2018年(74)

2017年(84)

我的朋友

分类: 数据库开发技术

2018-07-11 09:53:01

在数据库管理中,会出现限制某个IP或者IP段访问数据库的需求,那么Oracle如何实现针对DB、单个用户来限制/允许IP访问呢?

  1、整个DB层:可设置$ORACLE_HOME/network/admin/sqlnet.ora文件,限制/允许IP访问(不可针对IP段)

  2、单个用户:可通过trigger触发器限制/允许某IP或IP段访问。

      本文转自-学领未来

     配置sqlnet.ora文件限制IP访问Oracle数据库

image001.jpg

测试过程,将192.168.23.20写入到允许列表中

ip:192.168.23.20

image002.jpg

ip:192.168.23.100(没有在tcp.invited_nodes参数内设置所以尝试连接报错)

image003.jpg

测试两个参数都存在时,tcp.invited_nodes优先

image004.jpg

两个参数都把192.168.23.20写进去,还是可以连接到数据库

image005.jpg

注意事项

1)     不支持通配符的使用(如hostname不能写为db0*,IP地址不能写为192.168.23.*

2)      excluded_nodes与invited_nodes为互斥方式,要么使用前者,要么使用后者

3)     如果tcp.invited_nodes与tcp.excluded_nodes都存在,则tcp.invited_nodes优先

4)     要将本地地址,或者Cluster群集其他节点的地址都加入到允许列表,否则监听器可能无法启动

5)     修改之后,一定要重起监听或reload才能生效,而不需要重新启动数据库 

6)     仅提供对TCP/IP协议的支持

     创建trigger限制访问数据库服务器

限制scott用户只能在192.168.23.20 访问数据库服务器

create or replace trigger logon_ip_control 

after logon on database

declare

  ip STRING(30); 

  user STRING(30); 

begin

SELECT SYS_CONTEXT('USERENV','SESSION_USER') into user from dual; 

SELECT SYS_CONTEXT('USERENV','IP_ADDRESS') into ip from dual; 

if user='SCOTT

  THEN

      IF ip not in ('192.168.23.20')   

      THEN raise_application_error(-20001,'User '||user||' is not allowed to connect from '||ip); 

      END IF; 

END IF; 

end; 

/

 

192.168.23.20 上scott用户可以正常登录到数据库服务器

image006.jpg

192.168.23.100 上scott用户无法登录到数据库服务器

 

image007.jpg

192.168.23.100 上其他用户可以正常登录到该数据库服务器

image008.jpg

当然触发器也可以限制某个IP段登录数据库服务器,但只能限制某个用户在某个ip段登录,不能对数据库层面作出限制。

 

限制10.0.2.%网段访问TEST用户

CREATE OR REPLACE TRIGGER DISABLELOGIN 

    AFTER LOGON ON TEST.SCHEMA 

BEGIN                                                                     

   IF ORA_CLIENT_IP_ADDRESS LIKE ('10.0.2.%') THEN   

   RAISE_APPLICATION_ERROR(-20001,'USER '||ORA_LOGIN_USER||' IS NOT ALLOWED TO CONNECT FROM '||ORA_CLIENT_IP_ADDRESS);

   END IF;

END;

/

     总结

限制IP访问是数据库安全加固的事项之一,这对于提升数据库的安全性有很大的帮助,与此同时,这个技术为我们管理和约束数据库访问控制提供了有效的手段。


阅读(1560) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~