为什么networking服务帐户可以在不授予权限的情况下selectSQL Server 2005数据库中的行

我们有一些在IIS 6中运行的Web应用程序。它们在标识为Network Service的Default AppPool中运行。

应用程序连接到本地SQL Server 2005 Express实例(SP2)并使用可信连接。 SQL Server也以networking服务标识运行。

没有授予明确的权限,我们的web应用程序能够查询数据库。

这怎么可能发生,我们的应用程序有哪些权限?

有些想法:

  • SQL Server Express实例服务是否在networking服务下运行,因此具有系统pipe理员权限?
  • 是在本地pipe理员组中的networking服务,所以有系统pipe理员权限?
  • networking服务帐户是否作为login添加到SQL Server?

这再一次强化了不使用NETWORKSERVICE帐户来运行SQL Server的情况,因为您不知道您要与其共享帐户的其他服务。

如果您将SQL Serverconfiguration为在某个其他帐户下运行,那将是最好的。 SQL Server服务的特殊本地帐户效果最好 – 然后可以使用它为SQL Server授予额外的权限,以防万一需要。

如果将SQL Serverconfiguration为在不同的帐户下运行并从login中删除NETWORK SERVICE,则仍然可以从IIS连接,然后在从IIS连接的同时运行此查询:

select * from sys.login_token 

然后查找在principal_id列中具有非零值的WINDOWS GROUPS和WINDOWS LOGIN。 该组或login是您的IIS如何连接到SQL Sever。

也许权限被授予SQL Server上的IIS_WPG组? 默认情况下,networking服务帐户(NTAUTHORITY \ NETWORK SERVICE)是此组的成员。