关于数据库中对用户访问数据库的IP限制

本文介绍了一种通过数据库触发器来限制用户从特定IP地址登录的方法,并提供了针对不同权限用户的解决方案。

这个是限制所有除DBA权限的用户从指定的IP登录

通过数据库级的trigger能够限制用户从某个IP登录到数据库.
但是这个trigger却有一定的限制如拥用dba权限能绕过这个限制等等.
CREATE OR REPLACE TRIGGER SYS.USER_LOGON AFTER LOGON ON DATABASE
DECLARE
VAR_USER_IP VARCHAR(30);
BEGIN
select SYS_CONTEXT('USERENV','IP_ADDRESS') INTO VAR_USER_IP FROM DUAL;
IF VAR_USER_IP='192.168.0.1' THEN
RAISE_APPLICATION_ERROR(-20000, 'this ip cant logon');
END IF ;
END;



下面这个是可以对具体某个用户从指定的IP登录:
需要在数据库下建表SYSUSER$IP,我建在了SYS方案下
表结构只要USERNAME和IP字段就可以了。
CREATE OR REPLACE TRIGGER SYS.USER_LOGON AFTER LOGON ON DATABASE
DECLARE
VAR_USER_IP VARCHAR(30);
VAR_USER VARCHAR(30);
USERIP VARCHAR(30);
BEGIN
select SYS_CONTEXT('USERENV','IP_ADDRESS') INTO VAR_USER_IP FROM DUAL;
select user INTO VAR_USER FROM DUAL;
select IP INTO USERIP  FROM SYS.SYSUSER$IP WHERE USERNAME=VAR_USER;
IF (VAR_USER_IP != USERIP) THEN
RAISE_APPLICATION_ERROR(-20000, 'this ip cant logon');
END IF ;
END;

 

还有别的需要就自己扩展一下。 

跟大家分享一下!

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值