触发器限制指定IP访问oracle数据库 2021年11月17日 04:18 • 大数据, 开源, 研发管理, 移动开发, 编程笔记 触发器限制指定IP访问oracle数据库 ———————来自德哥的BLOG,觉着很有用,记录一下——————- 最近有个项目需要限制某些数据库用户的访问来源IP,在PG中比较好实现,但是ORACLE没有比较简便的操作。 如果不管用户的话,仅仅限制来源IP对监听的访问是比较容易实现的,通过配置数据库服务器的sqlnet.ora文件或者修改数据库服务器的IPTABLES等手段实现。 sqlnet.ora范例: tcp.validnode_checking=yes tcp.invited_nodes=(172.16.33.11,172.16.34.89) iptables范例: [root@kefu ~]# cat /etc/sysconfig/iptables # Firewall configuration written by system–config–securitylevel # Manual customization of this file is not recommended. *filter :INPUT ACCEPT [0:0] :FORWARD ACCEPT [0:0] :OUTPUT ACCEPT [0:0] :RH–Firewall–1–INPUT – [0:0] –A INPUT –j RH–Firewall–1–INPUT –A FORWARD –j RH–Firewall–1–INPUT # 允许访问1521的服务器 –A RH–Firewall–1–INPUT –s 172.16.3.68/32 –m state –state NEW -m tcp -p tcp –dport 1521 -j ACCEPT –A RH–Firewall–1–INPUT –i lo –j ACCEPT –A RH–Firewall–1–INPUT –p icmp –icmp-type any -j ACCEPT –A RH–Firewall–1–INPUT –p 50 –j ACCEPT –A RH–Firewall–1–INPUT –p 51 –j ACCEPT –A RH–Firewall–1–INPUT –p udp –dport 5353 -d 224.0.0.251 -j ACCEPT –A RH–Firewall–1–INPUT –p udp –m udp –dport 631 -j ACCEPT –A RH–Firewall–1–INPUT –p tcp –m tcp –dport 631 -j ACCEPT –A RH–Firewall–1–INPUT –m state –state ESTABLISHED,RELATED -j ACCEPT –A RH–Firewall–1–INPUT –m state –state NEW -m tcp -p tcp –dport 22 -j ACCEPT –A RH–Firewall–1–INPUT –j REJECT –reject-with icmp-host-prohibited COMMIT 下面来看看如何限制特定用户和特定IP: 1. 创建ACL表 (本例将ACL表建立在dsm用户下,随便建哪里都可以) create table dsm.tbl_iplimit (logonuser varchar2(32),ip_address varchar2(15),remark varchar2(64),create_time date default sysdate); insert into dsm.tbl_iplimit values (‘DSM’,‘172.16.18.81’,‘digoal’‘s host.’,sysdate); insert into dsm.tbl_iplimit values (‘DSM’,‘local’,‘本地’,sysdate); commit; 这里限制了DSM用户只能从172.16.18.81和ORACLE所在服务器登录.其他用户不受限制. 2. 创建触发器 conn / as sysdba create or replace trigger “logon_audit” after logon on database declare record_num number; userip varchar2(15); isforbidden boolean:=true; begin userip:=nvl(sys_context (‘userenv’,‘ip_address’),‘local’); select count(*) into record_num from dsm.tbl_iplimit where logonuser=user; if (record_num>0) then select count(*) into record_num from dsm.tbl_iplimit where logonuser=user and ip_address=userip; if (record_num=0) then raise_application_error(–20003,‘ip :’||userip||‘ is forbided’); end if; end if; exception when value_error then sys.dbms_output.put_line(‘exception handed’); when others then raise; end logon_audit; / 原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/197444.html 赞 (0) 0 生成海报 某SAP项目进销存报表优化小记 上一篇 2021年11月17日 技术杂谈-再谈软硬SDN(2) 下一篇 2021年11月17日 相关推荐 Spring Boot 2.4 配置文件将加载机制有什么变化 2022年1月8日 Kafka2.8安装详解大数据 2022年1月11日 C# 二维数组(2d Array)解析 2022年7月11日 J2ME中如何使用缓存将屏幕内容存储为Image 2021年12月7日 《HttpClient官方文档》4.8 SPNEGO/Kerberos验证 2021年8月27日 D语言多级继承 2022年6月7日 testlink根据需求定制 2021年11月16日 前端和后端:有什么区别? 2022年9月9日 运营数据分析流程是什么?业务数据分析思路的正确打开方式 2021年9月28日 Python实战采集某宝商品:帮你挑选女朋友最爱的月饼口味 2021年9月5日 发表回复 请登录后评论...登录后才能评论 提交