MsSqlServer中利用触发器对指定账户进行登录ip限制

发布于:2018年01月18日    浏览:480 次    属于:服务器运维 > 环境配置 原创作者:张晓栋

 

在MySql数据库中我们在创建一个新的用户时是可以选择这个用户的可用连接ip的,比如localhost 或者 某个ip 甚至不做限制直接输入 % 则表示这个用户运行任意IP远程连接,但是在微软的MsSqlServer中在创建用户时则没有这样的设置,但是有时候我们处于安全问题,想要限制某个账户只能通过某个IP访问,通过防火墙设置的话会直接阻断这个IP对所有账户的访问,有点一棍子打死,不是我们想要的,这种情况下可以利用MsSqlServer数据库中的触发器来实现这个目的,当用户请求连接数据库时会触发我们提前写好的规则进行验证是否允许连接。


登陆数据库服务器之后,新建查询输入如下代码:

请替换代码中的xiaoming为你想要限制的数据库账户名称


CREATE TRIGGER [tr_con_limit_xiaoming]
ON ALL SERVER WITH EXECUTE AS 'sa'
FOR LOGON
AS
BEGIN

--限制xiaoming这个帐号的连接
IF ORIGINAL_LOGIN()= 'xiaoming'
--允许xiaoming在本机和下面的IP登录
AND
(SELECT EVENTDATA().value('(/EVENT_INSTANCE/ClientHost)[1]', 'NVARCHAR(15)'))
NOT IN('','192.168.1.2','192.168.1.3')
     ROLLBACK;
END;


执行之后就会创建一个叫做 tr_con_limit_xiaoming 的触发器,如下图


这样 xiaoming 这个账户就只允许通过 本地和 192.168.1.2 和 192.168.1.3 这两个IP连接了