Sql-Server

拒絕來自特定主機名的 Sql Server 使用者

  • January 2, 2020

是否可以阻止 sql server 使用者不從特定主機名(客戶端)執行 DDL 和 DML 操作?

我有一個 CRM 網路應用程序。該應用程序使用 sql server auth 使用者連接到我的數據庫。有幾個不同的開發人員在開發該 CRM Web 應用程序。他們從他們開發的 web 配置文件中知道使用者名和密碼。他們中的一些人可以使用該使用者連接到我的數據庫並執行一些 DDL 和 DML 命令,我想通過他們的客戶端主機名阻止它們。如果開發人員使用應用程序使用者憑據從他/她的機器連接到 db,我想阻止他們。

並且,有幾個不同的開發人員開發了該 CRM Web 應用程序。他們從他們開發的 web 配置文件中知道使用者名和密碼。其中一些可以使用該使用者連接到我的數據庫並執行一些 DDL 和 DML 命令。我想通過他們的客戶端主機名阻止他們。如果開發人員使用使用者憑據從他/她的機器連接到 db,我想阻止他們。

我認為您不應該嘗試以這種方式解決它。

電腦名稱和 IP 都可以隨意更改,如果需要/需要,甚至可以更改靜態 IP。這意味著您必須始終保持最新列表。

作為開發人員,如果你真的想做某事,遠端到另一個虛擬機,就在那裡執行。

我的意思是,如果他們真的想做某事,他們可能會發現很多安全漏洞。

找到一個解決方案來做你想做的事,可能只會給他們帶來麻煩,但不是萬無一失的。

我認為您最好嘗試為此找到安全解決方案。如果其中一個開發人員不應該能夠執行 DML 語句,請不要給他們一個可以訪問它的登錄名。配置中的使用者真的需要它現在擁有的所有權限嗎?也許您可以給該使用者較少的權限,並在需要更多權限的人自己登錄時給他們一個額外的角色。

一旦使用者打開連接,他就擁有配置為伺服器角色以及數據庫內部的權限。

從技術角度來看,這可以使用觸發器來解決,但僅僅因為它可以,並不意味著它應該。(不應該!!)觸發器的工作方式是在每個 DDL / DML 語句之前檢查目前語句是否從“黑名單”主機名執行。這是為每個語句執行的一個附加查詢。

引用自:https://dba.stackexchange.com/questions/256574