【问题标题】:SQL Server 2008: should I be using Windows auth or SQL Server auth?SQL Server 2008:我应该使用 Windows 身份验证还是 SQL Server 身份验证?
【发布时间】:2023-03-19 10:58:01
【问题描述】:

我有一个 MS-Access 2007 前端。我将有多个用户。他们都将在网络公司域上。我应该使用 Windows 身份验证还是 SQL Server 身份验证来通过 ODBC 连接到 SQL Server 2008?

【问题讨论】:

    标签: sql sql-server sql-server-2008 ms-access odbc


    【解决方案1】:

    Windows 身份验证将允许更无缝的身份验证过程,单点登录!

    来自以下文章:

    SQL Server 身份验证的缺点

    • 如果用户是 Windows 域用户 谁有登录名和密码 窗户,他仍然必须提供 另一个(SQL Server)登录和 连接密码。跟踪 多个名称和密码是 对许多用户来说很难。不得不 每次提供 SQL Server 凭据 一个人连接到 数据库可能很烦人。
    • SQL Server 身份验证无法使用 Kerberos 安全协议。
    • Windows 提供附加密码 不适用的政策 SQL Server 登录。

    SQL Server 身份验证的优势

    • 允许 SQL Server 支持旧版本 应用程序和应用程序 由第三方提供 需要 SQL Server 身份验证。
    • 允许 SQL Server 支持 混合操作环境 系统,其中所有用户都不是 由 Windows 域进行身份验证。
    • 允许用户从未知连接 或不受信任的域。例如, 建立的应用程序 客户使用指定的 SQL 连接 服务器登录以接收状态 他们的订单。
    • 允许 SQL Server 支持 用户所在的基于 Web 的应用程序 创建自己的身份。
    • 允许软件开发人员 通过分发他们的应用程序 使用复杂的权限层次结构 基于已知的预设 SQL Server 登录。

    这里有一篇很好的文章,介绍了每个人的优缺点。 http://technet.microsoft.com/en-us/library/ms144284.aspx

    【讨论】:

    • 这是我们应用程序中的一个可切换选项。大型组织中的 IT 人员往往喜欢单点登录以获得支持,而用户则喜欢它的简单性。
    • "•Windows 提供了对 SQL Server 登录不可用的其他密码策略。"当您单击“强制密码策略”选项时,密码策略适用于 sql server 登录。
    【解决方案2】:

    达斯汀列出了一份很好的利弊清单。我知道没有人愿意为您做出这样的决定,但要根据您的标准(多个用户,都在公司域上);我想不出使用 SQL Server 身份验证而不是 Windows 身份验证的单一理由。它主要是为这样的场景设计的。

    【讨论】:

    • 如果我使用windows authent,那么我不必将每个用户都加入用户列表吗?
    • @i_am_a_girl 我相信默认的 SQL 服务器安装将允许与服务器位于同一域中的任何人进行连接,而无需显式添加它们
    • 服务器在不同的域中
    • @i_am_a_girl 我相信这仍然可以工作,但是您必须通过运行runas /netonly /user:domainName\userName path 以该域上的用户身份启动您的应用程序以进行网络请求
    • 您可以将域用户组添加到数据库的适当安全角色。我不喜欢这样做——我倾向于创建特定于特定数据库的安全组,然后将用户(或用户组)分配给这些组。但是,我在使用的 SQL Server 上始终拥有域管理权限。
    【解决方案3】:

    如果您有一个域和 Active Directory,那么您不应该甚至想到 Windows 身份验证以外的其他东西......一秒钟都不要!

    【讨论】:

    • 感谢您的建议。问题是有时同一个用户从不同的位置访问数据库
    • 同一网络\域上的不同位置?然后他只需要使用他的\她的凭据登录?
    • 如果数据库是从另一个域访问的,使用其他凭据,你将不得不管理一个叫做“域信任”的东西(我认为这是正确的表达方式)
    • 看来我是对的 sql server 身份验证是最好的
    • 我不明白。什么情况迫使你使用 sql server 身份验证?一旦你这样做了,你就放弃了拥有一个集成和集中的安全管理系统的能力,你肯定会后悔的!
    【解决方案4】:

    与安全实施的许多事情一样,您应该做什么取决于您的目标。

    我不确定您是否打算将每个用户的凭据传递给 SQL Server,或者您是否计划使用 Windows 身份验证或 SQL Server 身份验证进行单次登录。如果您选择后面的选项 SQL Server 身份验证可能是要走的路,因为它限制了网络帐户。如果您选择以前的 Windows 身份验证可能更适合您的用户,因为它提供单点登录。

    顺便说一句,我个人的偏好是让每个应用程序使用自己的一组凭据进行数据库交互。这将用户限制为仅具有应用程序提供给他们的权限。通过这种方式,您的用户无需担心对数据库的身份验证,因为您的应用程序会为他们处理这些问题。

    【讨论】:

      【解决方案5】:

      看到你有一个直接连接到数据库的桌面前端......你最好的选择是使用 windows auth。请记住,通过这样做,用户可以绕过前端并直接访问数据库。您需要授予他们所需的最低数据库权限。此外,您需要使用 AD 安全组,而不是添加每个用户。

      Sql auth 最适合您控制配置文件...例如 Web 应用程序。

      【讨论】:

      • 正确。授予用户权限时必须小心。但无论身份验证模式如何,这都是正确的。有多少数据库正在运行,数百名用户被授予 dbo 权限,仅仅因为安装数据库和软件的人没有在乎安全性?我公司里也有一个!
      • 他的名字不是菲利普,是吗? ;)
      • @Philippe Grondier 对于直接访问数据库的桌面应用程序来说确实如此。您确实需要另一层来安全地访问数据库...无论是存储过程、Web 服务等...
      • @大卫:呵呵!菲利普和大卫都不是!受尽折磨我也不会说话!
      • 在我的工作中,我一直在追赶这个大约 10 年前的白痴。他的名字是大卫·W·芬顿。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-01-26
      • 1970-01-01
      • 1970-01-01
      • 2019-03-06
      • 1970-01-01
      相关资源
      最近更新 更多