我们有一些在IIS 6中运行的Web应用程序。它们在标识为Network Service的Default AppPool中运行。
应用程序连接到本地SQL Server 2005 Express实例(SP2)并使用可信连接。 SQL Server也以networking服务标识运行。
没有授予明确的权限,我们的web应用程序能够查询数据库。
这怎么可能发生,我们的应用程序有哪些权限?
有些想法:
这再一次强化了不使用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)是此组的成员。