Sql-Server
為什麼網路服務帳戶可以選擇 SQL Server 2005 數據庫中的行而不授予權限
我們有一些在 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 的方式。