Active directory 服务器维护应在何时影响实施说明?

Active directory 服务器维护应在何时影响实施说明?,active-directory,system-administration,Active Directory,System Administration,这是我的情况 我正在为大量需要单一登录过程的web应用程序编写.Net/C#安全系统(授权和身份验证)。我使用Active Directory作为数据存储,并编写了一个非常好的原型,通过LDAP与AD进行通信。此组件检索有关已登录用户的信息,这些信息存储在AD中,然后用于在.Net窗体身份验证中设置其安全角色 1) 一切都很好 作为一名系统管理员或网络工程师,我不熟悉设置广告实例所涉及的系统管理量。我不知道对于每个域,我都需要一个单独的服务器和域控制器。事实证明,我的团队需要为我们将要访问的所有

这是我的情况

我正在为大量需要单一登录过程的web应用程序编写.Net/C#安全系统(授权和身份验证)。我使用Active Directory作为数据存储,并编写了一个非常好的原型,通过LDAP与AD进行通信。此组件检索有关已登录用户的信息,这些信息存储在AD中,然后用于在.Net窗体身份验证中设置其安全角色

1) 一切都很好

作为一名系统管理员或网络工程师,我不熟悉设置广告实例所涉及的系统管理量。我不知道对于每个域,我都需要一个单独的服务器和域控制器。事实证明,我的团队需要为我们将要访问的所有不同环境设置9个不同的域

  • env1.dev.mycompany.com
  • env1.qa.mycompany.com
  • env1.stage.mycompany.com
  • env2.dev.mycompany.com
…因此,现在我让自己有点管理上的头疼,因为我将不得不维护所有这些机器(或VM),这是我不一定想做的事情

2) 一切都不好

原型非常可靠,AD为解决方案提供了一个非常好的数据库,但现在我想知道我是否应该放弃代码,转而编写SQL Server数据提供程序(我知道.Net已经提供了一个,但它并不单独满足我的业务授权要求)

总之,我正试图从一个高层次的角度来思考这个问题。一般来说,我总是被这样一个事实绊倒:仅仅因为服务器维护,我就会抛出一个非常好的解决方案?我想知道这里是否有人经历过这样的情况,你到底决定做什么


也不必特定于AD,只是需要在一个好的软件解决方案和它的服务器维护约束之间进行评估。

如果为Windows系统设置单点登录系统,我非常愿意使用AD作为系统管理员。我尝试遵循单一数据源策略。AD已经保存了我的许多Windows用户/安全数据。我宁愿把所有的都放在那里,而不是第二个系统

在设置dev/test/prod环境时,我试图确保与prod环境紧密匹配,尤其是在正在工作的领域(开发工作正在进行的地方,等等)。所以,若设置系统来开发与AD的接口,我可能会有多个AD服务器

哪些选项可以简化管理?

您能否拥有一台以标准方式维护的主服务器,并使用类似VMware复制过程的方式来维护所有或大部分其他服务器?除了为支持开发/测试所做的更改外,不要对9台服务器做任何操作,而是将其他8台作为镜像主机的副本

您可以从1个AD服务器运行多个开发或测试域吗

你会写动作脚本吗


您能否减少环境的数量,尤其是在测试的高端?例如,在单个测试环境中提供多个开发环境和角色升级版本?

为什么不在测试时使用OU而不是单独的域?也就是说,只有一个域,但指定特定版本的用户必须在该域内的特定OU中找到。您要做的是在查找用户的搜索函数中,指定特定的OU作为搜索根,而不是域的根。在每个OU中,您都可以拥有包含环境以保持其唯一性的ID,例如,
user\u env1\u dev
user\u env2\u dev
user\u env1\u qa


我经常在应用程序中使用广告,从不为开发/测试设置单独的域。

一般来说,产品的可用性是人们在它和类似产品之间进行选择的原因。如果产品的可用性很差,用户就不会关心它的代码质量有多高——对他们来说,重要的是它的使用有多容易和有效,以及它能满足他们的需求

维护可以被认为是可用性的一个方面。我会把拥有一个易于维护的产品放在首位。从长远来看,这将节省管理员的许多工作时间

考虑这一点的一种方法是,首先从最终用户/管理员的角度设计最有用的解决方案,然后将其作为实际实施该最佳解决方案的智力挑战。这可能需要程序员付出更多的努力,但最终结果会更好

例如,有一款产品的维护工作做得很好(尽管我没有亲自使用过)。在设计文件系统时,我们花了大量精力使其易于使用ZFS的命令行工具管理文件系统,而这些设计决策会影响ZFS的所有级别(例如存储池)


作为另一个例子,我最近一直在计划如何在我的未来项目中进行维护——一个分布式数据库和应用服务器。思考典型的管理任务将如何发生(安装/升级应用程序、在群集中添加/删除服务器、解决硬件故障等),有助于我整理一些设计决策。它们中的一些深入研究了系统的体系结构(例如,在运行时如何加载应用程序和扩展,以及服务器如何找到集群中的其他服务器)。

使用提供程序模式并抽象数据源调用

然后您可以将其配置为动态使用AD或SQL

public abstract SSODataProvider {
     public bool AuthenticateUser(string u, string p);
}

public ADSSODataProvider : SSODataProvider {
    public override AutheticateUser(string u, string p) {
       //do auth here
    }
}

public SQLSSODataProvider : SSODataProvider {
    public override AuthenticateUser(String u, string p) {
      //call DB
    }
}

public static SSODataProvider dataProvider;

if (ConfigurationSettings.AppSettings["SSODataProvider"] == "SQL")
   dataProvider = new SQLSSODataProvider();
else
   dataProvider = new ADSSODataProvider();

....

dataProvider.AuthenticateUser("sss","sss");

>您可以从1个AD服务器运行多个开发或测试域吗?我认为你不能,卡尔。这是我想做的,但我已经读了好几天关于这个和我的c