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

来源:互联网 发布:旅行社计调软件 编辑:程序博客网 时间:2024/05/02 02:50

这个是限制所有除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;

 

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

跟大家分享一下!

 

原创粉丝点击