SqlServer服務(wù)中利用觸發(fā)器對(duì)指定賬戶進(jìn)行登錄ip限制提升安全性操作
轉(zhuǎn)眼間上次寫文章已經(jīng)是 2022年12月15日的事情啦,本來從2022年7月份開始寫作之后保持著每周一篇,然而從12月15日后斷更了這么久,經(jīng)歷了,隔離、陽、過年、從今天開始繼續(xù)堅(jiān)持寫作,本片文章給大家分享 SqlServer服務(wù)中利用觸發(fā)器對(duì)指定賬戶進(jìn)行登錄ip限制從而提升賬戶的安全性,這樣可以靈活的限制每個(gè)賬戶的允許登錄IP,類似于 PostgreSQL 中 pg_hba.conf 配置文件的功能,MySQL 則是在創(chuàng)建賬戶時(shí)可以配置賬戶允許登錄IP,下面記錄一下 SQLServer 如何實(shí)現(xiàn)。
在MySql數(shù)據(jù)庫中我們?cè)趧?chuàng)建一個(gè)新的用戶時(shí)是可以選擇這個(gè)用戶的可用連接ip的,比如localhost 或者 某個(gè)ip 甚至不做限制直接輸入 % 則表示這個(gè)用戶運(yùn)行任意IP遠(yuǎn)程連接,但是在微軟的MsSqlServer中在創(chuàng)建用戶時(shí)則沒有這樣的設(shè)置,但是有時(shí)候我們處于安全問題,想要限制某個(gè)賬戶只能通過某個(gè)IP訪問,通過防火墻設(shè)置的話會(huì)直接阻斷這個(gè)IP對(duì)所有賬戶的訪問,有點(diǎn)一棍子打死,不是我們想要的,這種情況下可以利用MsSqlServer數(shù)據(jù)庫中的觸發(fā)器來實(shí)現(xiàn)這個(gè)目的,當(dāng)用戶請(qǐng)求連接數(shù)據(jù)庫時(shí)會(huì)觸發(fā)我們提前寫好的規(guī)則進(jìn)行驗(yàn)證是否允許連接。
登陸數(shù)據(jù)庫服務(wù)器之后,新建查詢輸入如下代碼:
請(qǐng)?zhí)鎿Q代碼中的xiaoming為你想要限制的數(shù)據(jù)庫賬戶名稱
CREATE TRIGGER [tr_con_limit_xiaoming]ON ALL SERVER WITH EXECUTE AS "sa"FOR LOGONASBEGIN--限制xiaoming這個(gè)帳號(hào)的連接IF ORIGINAL_LOGIN()= "xiaoming"--允許xiaoming在本機(jī)和下面的IP登錄AND(SELECT EVENTDATA().value("(/EVENT_INSTANCE/ClientHost)[1]", "NVARCHAR(15)"))NOT IN("","192.168.1.2","192.168.1.3") ROLLBACK;END;
執(zhí)行之后就會(huì)創(chuàng)建一個(gè)叫做 tr_con_limit_xiaoming 的觸發(fā)器,如下圖
這樣 xiaoming 這個(gè)賬戶就只允許通過 本地 和 192.168.1.2 和 192.168.1.3 這兩個(gè)IP連接了。
至此關(guān)于 SqlServer服務(wù)中利用觸發(fā)器對(duì)指定賬戶進(jìn)行登錄ip限制提升安全性 就講解完了,有任何不明白的,可以在文章下面評(píng)論或者私信我,歡迎大家積極的討論交流,有興趣的朋友可以關(guān)注我目前在維護(hù)的一個(gè) .NET 基礎(chǔ)框架項(xiàng)目,項(xiàng)目地址如下
https://github.com/berkerdong/NetEngine.git
https://gitee.com/berkerdong/NetEngine.git
到此這篇關(guān)于SqlServer服務(wù)中利用觸發(fā)器對(duì)指定賬戶進(jìn)行登錄ip限制提升安全性的文章就介紹到這了,更多相關(guān)SqlServer服務(wù)登錄ip限制內(nèi)容請(qǐng)搜索以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持!
