前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >SQLServer中使用登录触发器限制用户的访问地址

SQLServer中使用登录触发器限制用户的访问地址

原创
作者头像
保持热爱奔赴山海
发布2024-09-24 20:09:33
750
发布2024-09-24 20:09:33
举报
文章被收录于专栏:数据库相关

目前有个需求,需要限制个别账号(或者其他权限较高的账号)的登录IP,降低访问的风险。

假设这里的需求是:限制 test账号,只能通过本机和几个固定的个IP登录MSSQL

代码语言:txt
复制
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账号查看到如下登录明细:

代码语言:txt
复制
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 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
云数据库 SQL Server
腾讯云数据库 SQL Server (TencentDB for SQL Server)是业界最常用的商用数据库之一,对基于 Windows 架构的应用程序具有完美的支持。TencentDB for SQL Server 拥有微软正版授权,可持续为用户提供最新的功能,避免未授权使用软件的风险。具有即开即用、稳定可靠、安全运行、弹性扩缩等特点。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档