我们有一个运行 Server 2003、IIS 6 和 SQL Server Express 的部门 Web 服务器。IIS 仅配置为 Windows 身份验证,并且所有应用程序池都配置为使用网络服务帐户。我们运行多个 ASP.NET 应用程序,其中大多数访问 SQL Server DB。在这些应用程序内的 web.config(或其他地方)中,我们有访问 DB 所需的连接字符串。
我最近意识到任何人都可以浏览保存 Web 服务器文件的共享(“经过身份验证的用户”具有读取权限),因为它位于由于各种原因而共享的服务器上的另一个目录之下。
我尝试删除“全员读取”访问权限,但用户无法再运行应用程序(他们无法读取文件共享,这是预期的行为,但这也阻止他们运行应用程序)。我仍然可以运行应用程序,因为我属于管理员组,仍然对应用程序文件夹拥有完全控制权。
我的问题(最后)是:我可以使用哪种 Windows 权限和 IIS 设置组合来满足这些需求:
- 我们需要知道哪些用户正在使用该应用程序,并确定当前用户在每个应用程序中拥有什么角色/权限。
- 我们需要/希望将 DB 连接字符串保存在 web.config 或其他应用程序文件中(将它们全部移动到其他地方的工作量太大)。
- 我们需要阻止用户浏览文件共享并读取应用程序内的连接字符串等内容。(我们不想将应用程序移动到新的共享!)
我已经为此奋斗了一段时间,并希望得到任何建议!
答案1
您需要将这些文件从共享中移出。这是唯一的方法。其他任何事情要么会破坏 Windows Auth,要么会允许这些文件在共享上可读。IIS 和 SMB 都评估相同的 NTFS 权限,因此无法将它们应用于其中一个而不应用于另一个。