目前有个需求,需要限制个别账号(或者其他权限较高的账号)的登录IP,降低访问的风险。
假设这里的需求是:限制 test账号,只能通过本机和几个固定的个IP登录MSSQL
0、使用sa账号登录
1、创建test登录账号
CREATE LOGIN test WITH PASSWORD = 'Abcd@1234'
GO
2、创建登录触发器
drop TRIGGER [tr_limit_ip] ON ALL SERVER ;
CREATE TRIGGER [tr_limit_ip]
ON ALL SERVER WITH EXECUTE AS 'sa'
FOR LOGON
AS
BEGIN
IF ORIGINAL_LOGIN()= 'test'
AND
(SELECT EVENTDATA().value('(/EVENT_INSTANCE/ClientHost)[1]', 'NVARCHAR(15)'))
NOT IN('<local machine>','192.168.31.181','192.168.31.17')
ROLLBACK;
END;
如果test账号在其他IP尝试登录mssql,则会出现如下报错:
在未做限制前,test登录后,可以用sa账号查看到如下登录明细:
SELECT
a.[session_id],a.[login_time],a.[host_name],
a.[original_login_name],b.[client_net_address]
FROM MASTER.sys.dm_exec_sessions a
INNER JOIN MASTER.sys.dm_exec_connections b
ON a.session_id=b.session_id;
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。