为什么网络服务帐户可以在不授予权限的情况下选择 SQL Server 2005 DB 中的行

为什么网络服务帐户可以在不授予权限的情况下选择 SQL Server 2005 DB 中的行

我们在 IIS 6 中运行了一些 Web 应用程序。它们在身份为网络服务的默认应用程序池中运行。

应用程序连接到本地 SQL Server 2005 Express 实例 (SP2) 并使用受信任的连接。SQL Server 也以网络服务身份运行。

无需授予明确的权限,我们的 Web 应用程序就能够查询数据库。

这种情况怎么会发生?我们的应用程序实际上拥有哪些权限?

答案1

一些想法:

  • SQL Server Express实例服务是否在网络服务下运行,那么是否具有sysadmin权限?
  • 网络服务是否在本地管理员组中,因此具有系统管理员权限?
  • 网络服务帐户是否添加到 SQL Server 作为登录名?

答案2

这再次强调了不要使用 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 的方式。

答案3

也许权限被授予了IIS_WPGSQL Server 上的组?默认情况下,网络服务帐户 (NTAUTHORITY\NETWORK SERVICE) 是该组的成员。

相关内容