服务器大本营

 找回密码
 我要入营

QQ登录

只需一步,快速开始

查看: 208|回复: 0

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

[复制链接]

8万

敬重

881

主题

207

精华

管理员

积分
9412

启航之章进阶之印里程之碑突破之证飞跃之星蜕变之勋卓越之路龙年行大运

QQ
发表于 2025-8-14 14:28:52 | 显示全部楼层 |阅读模式

我要入营,结交更多好友,开启更多功能,轻松玩转服务器大本营!

您需要 登录 才可以下载或查看,没有账号?我要入营

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

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

1、使用sa账号登录

2、创建test登录账号
  1. CREATE LOGIN test WITH PASSWORD = 'Abcd@1234'
  2. GO
复制代码

3、创建登录触发器
  1. drop TRIGGER [tr_limit_ip] ON ALL SERVER ;

  2. CREATE TRIGGER [tr_limit_ip]
  3. ON ALL SERVER WITH EXECUTE AS 'sa'
  4. FOR LOGON
  5. AS
  6. BEGIN


  7. IF ORIGINAL_LOGIN()= 'test'
  8. AND
  9. (SELECT EVENTDATA().value('(/EVENT_INSTANCE/ClientHost)[1]', 'NVARCHAR(15)'))
  10. NOT IN('<local machine>','192.168.31.181','192.168.31.17')
  11.      ROLLBACK;
  12. END;
复制代码
如果test账号在其他IP尝试登录mssql,则会出现如下报错:

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

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


在未做限制前,test登录后,可以用sa账号查看到如下登录明细:
  1. SELECT
  2. a.[session_id],a.[login_time],a.[host_name],
  3. a.[original_login_name],b.[client_net_address]
  4. FROM MASTER.sys.dm_exec_sessions a
  5. INNER JOIN MASTER.sys.dm_exec_connections b
  6. ON a.session_id=b.session_id;
复制代码

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

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


感谢您的阅读,服务器大本营-技术文章内容集合站,助您成为更专业的服务器管理员!
一入IDC深似海,从此你我是良人!
您需要登录后才可以回帖 登录 | 我要入营

本版积分规则

点击直接加入[服务器大本营QQ频道]
滴!摸鱼时间到~
Loading...

QQ|Archiver|手机版|网站地图|服务器大本营 ( 赣ICP备2021009089号 )

GMT+8, 2025-8-31 04:16 , Processed in 0.063975 second(s), 30 queries , Gzip On.

Powered by 服务器大本营

© 2021-2023 联系飞飞

快速回复 返回顶部 返回列表