轉眼間上次寫文章已經是 2022年12月15日的事情啦,本來從2022年7月份開始寫作之後保持著每周一篇,然而從12月15日後斷更了這麼久,經歷了,隔離、陽、過年、從今天開始繼續堅持寫作,本片文章給大家分享 SqlServer服務中利用觸發器對指定賬戶進行登錄ip限制從而提升賬戶的安全性,這樣可以靈 ...
轉眼間上次寫文章已經是 2022年12月15日的事情啦,本來從2022年7月份開始寫作之後保持著每周一篇,然而從12月15日後斷更了這麼久,經歷了,隔離、陽、過年、從今天開始繼續堅持寫作,本片文章給大家分享 SqlServer服務中利用觸發器對指定賬戶進行登錄ip限制從而提升賬戶的安全性,這樣可以靈活的限制每個賬戶的允許登錄IP,類似於 PostgreSQL 中 pg_hba.conf 配置文件的功能,MySQL 則是在創建賬戶時可以配置賬戶允許登錄IP,下麵記錄一下 SQLServer 如何實現。
新的一年祝大家工作順利,身體健康。
在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連接了。
至此關於 SqlServer服務中利用觸發器對指定賬戶進行登錄ip限制提升安全性 就講解完了,有任何不明白的,可以在文章下麵評論或者私信我,歡迎大家積極的討論交流,有興趣的朋友可以關註我目前在維護的一個 .NET 基礎框架項目,項目地址如下
https://github.com/berkerdong/NetEngine.git
https://gitee.com/berkerdong/NetEngine.git