|  | 
 
| 
目前有个需求,需要限制个别账号(或者其他权限较高的账号)的登录IP,降低访问的风险。
x
我要入营,结交更多好友,开启更多功能,轻松玩转服务器大本营!您需要 登录 才可以下载或查看,没有账号?我要入营 
  
 假设这里的需求是:限制 test账号,只能通过本机和几个固定的个IP登录MSSQL
 
 1、使用sa账号登录
 
 2、创建test登录账号
 
 复制代码CREATE LOGIN test WITH PASSWORD = 'Abcd@1234'
GO
3、创建登录触发器
 
 如果test账号在其他IP尝试登录mssql,则会出现如下报错:复制代码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;
 
 SQL Server中使用登录触发器限制用户的访问地址   
 在未做限制前,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;
 SQL Server中使用登录触发器限制用户的访问地址   
 感谢您的阅读,服务器大本营-技术文章内容集合站,助您成为更专业的服务器管理员!
 | 
 |