Sql-Server

為什麼網路服務帳戶可以選擇 SQL Server 2005 數據庫中的行而不授予權限

  • July 22, 2009

我們有一些在 IIS 6 中執行的 Web 應用程序。它們在預設 AppPool 中執行,其身份是網路服務。

這些應用程序連接到本地 SQL Server 2005 Express 實例 (SP2) 並使用受信任的連接。SQL Server 也使用網路服務標識執行。

在不授予顯式權限的情況下,我們的 Web 應用程序能夠查詢數據庫。

這怎麼會發生?我們的應用程序實際上擁有哪些權限?

有人想:

  • SQL Server Express 實例服務是否在網路服務下執行,是否具有系統管理員權限?
  • 網路服務在本地管理員組中,所以有系統管理員權限嗎?
  • 網路服務帳戶是否作為登錄名添加到 SQL Server?

這再次強化了不使用 NETWORK SERVICE 帳戶來執行 SQL Server 的情況,因為您不知道您正在與哪些其他服務共享該帳戶。

最好將 SQL Server 配置為在其他帳戶下執行。SQL Server 服務的特殊本地帳戶效果最好 - 然後您可以使用它向 SQL Server 授予額外的權限,以備不時之需。

如果在將 SQL Server 配置為在不同帳戶下執行並從登錄名中刪除 NETWORK SERVICE 之後,您仍然可以從 IIS 連接,則在從 IIS 連接時執行此查詢:

select * from sys.login_token

然後在 principal_id 列中查找具有非零值的 WINDOWS GROUPS 和 WINDOWS LOGIN。該組或登錄名是 IIS 連接到 SQL Sever 的方式。

引用自:https://serverfault.com/questions/22413