新日期: 2004年04月20日
本页内容
![]() |
目标 |
![]() |
适用范围 |
![]() |
如何使用本章内容 |
![]() |
摘要 |
![]() |
您必须了解的背景知识 |
![]() |
创建一个新的本地帐户 |
![]() |
分配最少的权限 |
![]() |
分配 NTFS 权限 |
![]() |
将 ASP.NET 配置为使用新帐户运行 |
目标
本章的目标是:
• |
创建能够正确运行 ASP.NET 应用程序的权限最少的帐户。 |
• |
将 ASP.NET 配置为使用自定义的最少权限帐户来运行。 |
适用范围
本章适用于以下产品和技术:
• |
Microsoft® Windows® XP 或 Windows 2000 Server (Service Pack 3) 以及更高版本的操作系统 |
• |
Microsoft .NET Framework 版本 1.0 (Service Pack 2) 以及更高版本 |
• |
Internet 信息服务 (IIS) 5.0 或 6.0(仅限使用 IIS 5.0 隔离模式时) |
如何使用本章内容
若要学好本章内容:
• |
您必须具有开发 ASP.NET Web 应用程序的经验,熟悉 machine.config 文件的用途和结构。 |
• |
您必须具有使用 Windows 管理工具来创建和管理独立的或基于域的 Windows 用户帐户的经验。 |
• |
阅读第 8 章 ASP.NET 安全性。此章为您提供了有关以下内容的详细信息:ASP.NET 安全性如何工作、ASP.NET 辅助进程标识对执行应用程序的权限有什么影响、如何使用模拟向 Web 应用程序的用户轻松授予适当级别的权限。 |
摘要
默认情况下,每个 ASP.NET 辅助进程都在名为 ASPNET 的最少权限帐户的上下文中运行。如果您的 ASP.NET 应用程序部署在基于域的服务器上或者需要访问远程服务器上的资源,则可以将 ASP.NET 配置为在另一个帐户的上下文中运行来简化管理。
本章说明如何配置 ASP.NET 以在自定义本地帐户或域帐户的上下文中运行,以及您为了使此帐户正确工作而必须为它分配的权限。
您必须了解的背景知识
在开始学习本章之前,您应该知道:
ASP.NET 辅助进程标识
在安装时为运行 ASP.NET 而创建的默认帐户是最少权限本地帐户,并且在 machine.config 中指定,如下所示:
<processModel enable="true" userName="machine" password="AutoGenerate" />
该帐户在“本地用户和组”下标识为 ASPNET,并且在本地系统机构 (LSA) 中使用强密码保护。
当需要使用 ASP.NET 进程标识来访问网络资源(如数据库)时,您可以执行下列操作之一:
• |
使用域帐户。 |
• |
使用“镜像的”本地帐户(即,在两台计算机上具有相匹配的用户名和密码的帐户)。在以下情况下需要使用这种方法:计算机位于单独的域中,并且域之间没有建立信任关系;或者计算机被防火墙隔开,并且您无法打开进行 NTLM 或 Kerberos 身份验证所需的端口。 最简单的方法是,在 Web 服务器上将 ASPNET 帐户的密码更改为已知值,然后在目标计算机上创建名为 ASPNET 且具有相同密码的帐户。在 Web 服务器上,必须先在“本地用户和组”中更改 ASPNET 帐户密码,然后替换由 machine.config 中的 <processModel> 元素指定的凭据。您不应该在 machine.config 中存储明文密码,而应该使用 aspnet_setreg.exe 在注册表中存储加密的密码。有关详细信息,请参见第 8 章“ASP.NET 安全性”。 <processModel enable="true" userName="registry:HKLM\SOFTWARE\YourSecureApp\processModel\ ASPNET_SETREG,userName" password="registry:HKLM\SOFTWARE\YourSecureApp\processModel\ ASPNET_SETREG,password" . . ./> 您可以使用本章中介绍的步骤来创建具有最少权限的本地帐户。 |
模拟固定标识
您可以通过在 web.config 中使用以下设置来为特定虚拟目录设置固定标识。使用 aspnet_setreg.exe 在注册表中存储加密的凭据。
<identity impersonate="true" userName="registry:HKLM\SOFTWARE\YourSecureApp\ identity\ASPNET_SETREG,userName" password="registry:HKLM\SOFTWARE\YourSecureApp\ identity\ASPNET_SETREG,password" />
这种方法通常用于以下情况:同一个 Web 服务器上有多个 Web 站点,并且需要以不同的标识来运行;例如,在应用程序托管方案中。
本章介绍如何创建具有最少权限的本地帐户。如果您主要关心管理问题,可以使用具有最少权限的限定域帐户和强密码。
考虑用于运行 ASP.NET 的帐户时,请切记以下事项:
• |
默认情况下,ASP.NET 不进行模拟。因此,Web 应用程序进行的任何资源访问均使用 ASP.NET 进程标识。在这种情况下,Windows 资源必须拥有一个访问控制列表 (ACL),它可授予对 ASP.NET 进程帐户的访问权限。 |
• |
如果启用模拟,则应用程序使用原始调用者的安全性上下文来访问资源;如果已针对匿名身份验证配置了 IIS,则应用程序也可以使用匿名 Internet 用户帐户(默认为 IUSR_MACHINE)来访问资源。在这种情况下,资源必须具有基于原始调用者标识(或 IUSR_MACHINE)的 ACL。 |
• |
在创建自定义帐户时始终坚持分配最少权限的原则,即只分配一组必需的权限。 |
• |
避免使用 SYSTEM 帐户运行 ASP.NET。 |
• |
避免向帐户授予“作为操作系统的一部分”的权限。 |
创建一个新的本地帐户
此过程可创建一个新的本地帐户。默认情况下,它将添加到本地“用户”组中。
• |
创建一个新的本地帐户
|
分配最少的权限
此过程可分配运行 ASP.NET 所需的一组最低限度的权限。
• |
分配最少的权限
|
分配 NTFS 权限
此过程向自定义 ASP.NET 帐户授予在本地文件系统中所需的 NTFS 权限。
注意:此过程中的步骤适用于 Web 服务器上的文件系统,但不适用于远程计算机(可以在其中复制帐户以用于网络身份验证)上的文件系统。
• |
分配 NTFS 权限
|
将 ASP.NET 配置为使用新帐户运行
此过程编辑 machine.config,以便将 ASP.NET 配置为使用新帐户运行。
• |
将 ASP.NET 配置为使用新帐户运行
|