(已经问过类似问题的问题before,但问题和接受的答案都没有提供我正在寻找的细节
打算在专用域帐户下运行asmx网络服务 使用方案 和/或 优缺点 使用具有域帐户身份的应用程序池与模拟?
我们有3个小型内部Web服务,它们在相对较低的负载下运行,我们希望将它们切换到在自己的域帐户下运行(为了与SQL Server等集成安全性)。我似乎可以选择为每个应用程序创建专用的应用程序池,或者为所有应用程序创建一个应用程序池,并在每个应用程序中使用模拟。
我理解应用程序池提供了工作进程隔离,并且在使用模拟时需要考虑性能,但除了那些除了正确选项之外还有什么呢?
答案 0 :(得分:10)
通常,您将为工作进程选择不同的标识(或执行ASP.NET模拟),因为需要访问需要特定权限的本地/网络资源。明显的不利之处在于,您的应用程序代码可能在可能需要的更多权限下运行,从而增加了针对恶意攻击的漏洞。
ASP.NET模拟会产生更多开销,因为需要为每个请求切换用户上下文。我建议采用单独的应用程序池方法 - 只有应用程序池方法的缺点是你有每个进程的进程,因此每个进程都会有开销(从操作系统的角度来看)。如果您的应用程序较小且没有强大的内存需求,那么这应该不是问题,
答案 1 :(得分:4)
如果您希望Web服务通过Windows身份验证连接到SQL,您几乎肯定希望使用专用的应用程序池选项设置每个应用程序。这需要最少的设置和管理。
如果您采用模拟路线,则需要考虑“两跳”问题。当用户调用正在使用模拟的Web服务时,Web服务可以以该用户身份访问本地资源。但是,如果Web服务尝试连接到非本地资源(例如,在单独的服务器上运行的数据库),则结果将是身份验证错误。原因是NTLM阻止您的凭据进行多次“跳”。要解决此问题,您需要使用Kerberos委派。委派并不难设置,但它确实需要域管理员权限,这可能会使某些公司环境变得困难。
此外,使用模拟意味着您需要为可能访问您的Web服务的每个用户管理数据库权限。数据库角色和AD组的组合将在很大程度上简化这一过程,但这是您可能不希望执行的额外管理步骤。这也是一种可能的安全风险,因为某些用户最终可能拥有比您的Web服务预期更高的权限。
答案 2 :(得分:2)
当您需要与基于Windows安全性的其他Windows服务相同的最终用户体验时,模拟非常有用。
例如,Microsoft SharePoint服务器使用模拟,因为您可以使用标准Windows共享UI(基于{{3连接/断开连接到网络共享)使用Web浏览器和访问SharePoint文档库}} 协议)。为确保两者之间的安全性保持一致,在这种情况下,您需要模仿。
除了这种情况之外,模仿大部分时间都没有用(但在可扩展性方面可能会花费很多)
答案 3 :(得分:2)
应用程序池专业人员:
您无需成为.Net程序员即可了解正在发生的事情。
安全方面离开程序员的领域并且属于基础架构的范围
通过适当的安全检查轻松更改IIS,在设置应用程序池时用户名是正确的。即它不会让您输入错误的用户名。
假冒职业选手:
假冒缺点:
不确定我能想到更多其他事情。
我的直觉是说每个网站都有不同的应用程序池,但这是你的派对。
答案 4 :(得分:0)
我建议您查看以下页面以获取安全性详细信息......
https://www.attosol.com/sample-aspx-page-to-show-security-details-in-asp-net/
完成此操作后,您将“精确地”看到模仿如何改变身份。