按IP问题限制登录



我们有一个登录触发器,它限制IP:的访问

IF UPPER(v_username) = 'CDEPROD' THEN
IF SYS_CONTEXT('USERENV', 'IP_ADDRESS') NOT IN
('192.168.170.52',
'192.168.170.40',
'192.168.170.43',
'192.168.170.54',
'192.168.170.53',
'192.168.170.58')
OR SYS_CONTEXT('USERENV', 'IP_ADDRESS') IS NULL THEN
RAISE_APPLICATION_ERROR(-20001, 'Can not log in from this IP address (' || SYS_CONTEXT('USERENV', 'IP_ADDRESS') || ')');
END IF;
END IF;

所以,触发器起作用了。但是,从本地来说,我不能以CDEPROD用户的身份登录,这会引发应用程序错误。我本想试试127.0.0.1,但没用。。。。。。

允许本地登录有什么诀窍吗?

通常,只有在绝对必须的情况下,通过IP地址限制登录最好使用操作系统级防火墙或(如果您有Oracle Enterprise Edition(Oracle Connection Manager而不是登录触发器来处理。请看我去年写的关于这个主题的博客文章:https://pmdba.wordpress.com/2020/02/18/how-to-limit-a-user-connection-to-a-specific-ip-address/

重点是,硬编码IP地址为高开销的维护噩梦打开了一扇门(因为地址很容易更改,有时会频繁更改(,因为IP地址(以及几乎所有其他SYS_CONTEXT参数(对于精明的Java程序员来说相对容易伪造,所以安全性几乎没有好处。我建议你回到绘图板上,你应该先问:";我想解决的问题是什么">

  • 您是否试图确保用户是他们声称的用户?使用SSL(又名TCPS(连接与Oracle钱包和证书对用户进行身份验证。您还可以使用代理身份验证来允许经过强身份验证的用户访问共享的应用程序架构,而不是共享密码或密钥
  • 您是否试图确保用户仅使用批准的(安全的(公司资产连接到数据库?使用主机防火墙或OCM规则来限制到已知网络子网(而不是单个IP(的连接
  • 你是否试图确保这些经过严格认证的合法用户,使用批准和安全的公司计算资产,只在应该做的时候,在数据库中做他们应该做的事情?使用审核、安全应用程序角色以及虚拟专用数据库或数据库保管库之类的功能来强制执行业务规则

最新更新