【问题标题】:Is it possible to store database connection string information in Active Directory?是否可以在 Active Directory 中存储数据库连接字符串信息?
【发布时间】:2009-10-05 17:38:46
【问题描述】:

假设您的环境中有许多应用程序,所有这些应用程序都将它们与 SQL Server 的连接字符串存储在 Web 配置中。是否可以让应用程序从 Active Directory 中检索这些连接字符串?

我们正在移动一些数据库服务器,并希望有一种方法可以从中心位置读取它们。建议将 Active Directory 作为一种可能性,但我们不知道是否可行。

理论上,这将允许我们逐渐更改我们的应用程序以使用 AD 来读取连接字符串,然后在我们移动数据库服务器时,在 AD 中进行一次更改以更新所有应用程序。

这可能吗?也许你有更好的建议。谢谢!

【问题讨论】:

    标签: sql-server database ldap connection-string


    【解决方案1】:

    从技术上讲,您不能将信息存储在LDAP 中,因为它是一种协议,而不是一种存储机制。但是,没有理由(据我所知)您不能将信息存储在 Active Directory 或其他目录服务类型引擎中,并通过应用程序的查询来检索它们。你只需要想出一些组织方案,我会建议图书馆中的一些通用代码或允许你访问信息的东西。

    我并不是说将其存储在 Active Directory 中是最佳选择,但我相信您应该能够毫无问题地做到这一点。

    【讨论】:

    • 抱歉语义不正确。我所说的 LDAP 确实是指 Active Directory,但我经常忘记它是一种协议。谢谢:)
    • 没问题。我认识很多人可以互换使用它们,但由于某种原因,它让我发疯(短途旅行)哈哈
    • 更新为使用 Active Directory。
    【解决方案2】:

    我们有一个设计来做到这一点。我们的架构允许多个服务器,每个服务器都有多个数据库。我们使用 Active Directory 来管理有关用户的属性,包括他们有权访问的数据库。

    当时这似乎是合乎逻辑的设计,因为我们要么必须这样做,要么有一个“主”数据库来指导。使用 Active Directory,我们不再遇到单点故障。

    不知道结果如何,我离开了那家公司。

    【讨论】:

      【解决方案3】:

      "LDAP 应该用于目录信息"

      这是什么意思?配置信息是存储在 Dit 中的理想选择 - 它是读取密集型、安全、可复制且易于访问的。 Active Directory 中存储的大部分内容是“配置信息”。

      【讨论】:

        【解决方案4】:

        您可以将连接字符串存储在您想要的任何地方。您甚至可以在您的 DSN 服务器上将它们作为 TXT 记录。但是您必须自己构建解析框架。还要记住,连接字符串包含安全信息。 (例如密码)。如果您将这些存储在 LDAP 中(我是指任何基于 ldap 的服务器),您需要确保该属性不是公开的。好处是 LDAP 代理帐户(匿名连接)将无法看到信息。缺点是您必须先进行 LDAP 绑定,然后才能从系统中获取信息。只要您在将要进行数据库调用的客户端/服务器上缓存连接字符串,您就不会看到任何真正的性能问题。但是,如果您必须在每次数据库调用之前查询 LDAP 服务器,您可能会遇到问题。

        自定义对象甚至现有对象的扩展属性可能是最好的。

        Extend AD Schema

        【讨论】:

        • 感谢您的信息。我们尝试使用可信连接连接到我们所有的数据库服务器,并让我们的应用程序池作为特定的 AD 帐户运行,对必要资源的访问权限有限。如果我们的应用程序池帐户可以访问 AD,我认为它会使用应用程序池身份连接到 AD,这将是完美的。
        • 只要您使用的是 SSPI,那么这应该不是问题。我最近没有浏览过 AD,但它们甚至可能是一种非常适合这种用途的对象类型。
        【解决方案5】:

        您可以创建一个非个人用户并将连接字符串作为用户中的一个属性,但是,这将滥用 LDAP,IMO。

        更好的办法是使用依赖注入,只使用连接字符串等公共信息,将其放在一个文件中,然后在应用程序启动时将其读入,或者在重新编译时将其注入。

        例如,您可以使用 Spring 或 Spring.NET,但有无数的 DI 框架可以使用。

        更新:您也可以只创建一个包含此信息的数据库表,并且所有应用程序都可以从数据库中读取以获取其所有配置信息。

        我认为应该使用 LDAP 来解决与目录相关的问题,以及现在的用户管理和帐户信息。

        【讨论】:

        • 我们正在寻找可以由网络管理员之一在应用程序本身之外的某个地方进行更新的东西。我们现在使用 DI 框架来注入这些信息,但我们希望从 LDAP 而不是 web.config 或注册表项中获取它。
        • 您如何判断这是对 LDAP 数据库的误用?该协议的全部意义在于存储您需要能够远程解析的信息。您可以为 LDAP (ldif) 创建新的模式扩展是有原因的。考虑到这一点,您可能会从本地文件中获得比远程 LDAP 查询连接字符串更好的性能。
        • 使用我们的 DI 框架 (StructureMap),连接字符串在应用程序启动时注入,因此对性能的影响可以忽略不计。所以抛开性能方面的考虑,它似乎很适合存储配置信息。
        • @Matthew - 我相信 LDAP 应该用于目录信息。如果您在某处需要配置信息,只需使用数据库即可。 LDAP 专为快速查找目录相关问题而设计。
        猜你喜欢
        • 2010-10-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-04-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多