放置 Active Directory 服务的理想位置是哪里?
在 Web 层、在应用程序层还是在数据库层?
答案1
我将根据您的措辞做出一些广泛的假设。
这确实取决于您的用途。您这样做只是为了进行身份验证吗?如果是这样,那么请重新考虑您的实施。还有其他集中式身份验证解决方案,它们不需要许可,而且占用空间较小(我想到了 OpenLDAP)。
如果您所说的 Web 层是指前线,那么肯定不是 Web 层。再次回到使用问题,如果您所说的数据库层是指实际使用 Active Directory 架构进行信息检索,那么 OpenLDAP 将更加高效,资源占用更少,实际上,在这一点上,为什么不直接使用合适的数据库呢?
域控制器实际上是极好的应用服务器,但我不建议将其用于非常大型的网站所使用的应用程序。您想在它们内部运行 Sharepoint 吗?那就来吧。您想运行每分钟点击量达 3,000 次的生产网站吗?不要(除非您有硬件,而且即使这样您也需要担心安全问题)。
这是否会将您的内部网客户与实际(付费)客户联系起来?如果是这样,您为什么真的需要使用共享身份验证?正确的实施将外部世界与您的员工隔离开来。如果您想创建一个独立的域以“便于管理”,那么请考虑当您的域出现故障并且无法通过 Active Directory 进行身份验证时您的应用程序会发生什么。您真的想向您的老板解释这一点吗?
答案2
我假设您问的是应该在哪台服务器上运行 Active Directory 服务?
理想情况下,它应该位于其自己的服务器上(即使它是虚拟化的),但如果您必须共享它,那么我会将它放在任何不被公众直接访问的服务器上。
因此,这意味着:不是 Web 服务器,也不是应用服务器。剩下的就是数据库服务器,但这也是坏的将它放到这个位置,因为大多数数据库服务器都承受着压力。
答案3
这个问题无法回答,因为你(本质上)混淆了隐喻。“层”模型是关于在应用程序中分配功能,与如何构建 Active Directory(又名 AD)实现的讨论无关。因此,在你的场景中(为 AD 单独设置硬件),实际答案是没有任何。单独的 AD 域控制器不会位于任何“层级”中。
AD 比看上去要复杂得多。它不仅仅是运行设置。Active Directory 至少需要一个“域控制器”(又称“DC”),它是运行“Active Directory 服务”的服务器。它是强烈建议在 AD 实施中设置多个 DC,这样当一个 DC 发生故障时,登录能力不会丢失。Active Directory 中的其他服务器称为“成员服务器”。此外,还有一些特殊服务(也称为“FSMO 角色”),每个域或位置只能在一个 DC 上激活。它也是强烈出于性能和冗余原因,建议不要在 DC 上运行 Exchange、SQL Server 或任何高流量应用程序。通常还建议不要将 DC 直接暴露在互联网上,因为 DC 上运行着许多服务并且开放了许多端口。此外,AD 要求它是域的主要 DNS。
也就是说,如果 AD 只是要对 Web 应用程序的用户进行身份验证,那么将其放在现有服务器之一上并没有真正的问题。我会选择“应用程序”层服务器,因为出于安全原因,最好不要将其放在面向 Web 的服务器上,出于性能原因,最好不要将其放在 DB 服务器上。
但是,正如其他人所指出的,AD 并不是单独进行身份验证的最佳选择,而且几乎肯定是过度的,特别是对于您来说,因为您不知道如何使用它。如果用户数量很少且变化不大,您可以使用内置于 IIS 中的本地 Windows 身份验证。