65.9K
CodeProject 正在变化。 阅读更多。
Home

安全地以系统帐户运行 ASP.NET 工作进程

starIconstarIcon
emptyStarIcon
starIcon
emptyStarIconemptyStarIcon

2.67/5 (6投票s)

2004年1月28日

2分钟阅读

viewsIcon

65013

描述了正确配置服务器以安全地以系统帐户运行 ASP.NET 工作进程的方法。

引言

已经存在一些关于安全地将aspnet_wp.exe作为ASPNET用户或在machine.config文件的<processModel>部分中指定的任何其他自定义用户运行的文章。但是,当我尝试将 ASP.NET 工作进程作为“machine”或任何其他具有必要权限的用户运行时,我无法做到。在花费无数个小时创建用户、授予权限并遵循 Microsoft 在其模式和实践文档中规定的步骤之后,我发现我们的 Active Directory 组策略中的有效设置正在覆盖我在机器上设置的本地策略。虽然我确信他们的指示对于传统设置来说很好,但他们没有涵盖有关在 Active Directory 中以及本地用户权限设置后会发生什么的内容。

但是,这种困境有一个解决方法。在machine.config文件的<processModel>元素中,将用户名设置为“system”,密码设置为“AutoGenerate”。在您的机器上创建一个本地用户。该用户需要访问所有必要资源(GAC、Temporary ASP.NET Files 目录等)的权限。可以在MSDN上找到必要权限的列表。此外,如果您在注册表中存储任何用户名/密码信息,或者如果需要访问服务器上单独位置中的任何旧 COM 对象,则该用户将需要具有必要的权限。

现在,在machine.config文件中,找到<identity>元素。<identity>元素的默认设置为

<identity impersonate="false" userName="" password=""/>

如果将身份模拟设置为 true,但不指定用户名和密码,则工作进程会尝试以IUSR_machinename帐户的身份访问文件。现在,在<identity>元素中指定用户名和密码,例如

<identity impersonate="true" userName="myLocalUser" password="myUserPassword"/>

在这种设置中,ASP.NET 工作进程确实仍然以系统身份运行,但是当工作进程尝试访问服务器上的文件(无论是虚拟目录中,还是用于即时编译的 Temporary ASP.NET Files 目录中)时,它会以<identity>元素中指定的用户身份执行,而不是以系统用户身份执行。

© . All rights reserved.