SQL Server身份validation和Windows身份validation之间有什么区别?

SQL Server身份validation和Windows身份validation有什么区别…有没有使用每个身份validation的具体情况?

SQL Server具有自己的内置系统,用于包含login名和angular色的安全性。 这是与Windows用户和组分开和平行的。 您只能使用SQL安全性,然后所有pipe理都将在SQL Server中进行,并且这些login名与Windows用户之间没有任何关联。 如果你使用混合模式,那么Windows用户就像SQLlogin一样。

每种方法都有一些特点 –

1)如果你想使用连接池,你必须使用SQLlogin,或所有共享相同的Windows用户 – 不是一个好主意。

2)如果你想跟踪一个特定的用户在做什么,那么使用Windows身份validation是有道理的。

3)使用Windows工具来pipe理用户比SQL更强大,但两者之间的联系是微不足道的,例如,如果你删除了一个Windows用户,那么SQL中的相关数据不会被更新。

SQL身份validation

SQL身份validation是用于各种数据库系统的典型身份validation,由用户名和密码组成。 显然,SQL Server的一个实例可以有多个这样的用户帐户(使用SQLauthentication)和不同的用户名和密码。 在不同的用户可以访问不同数据库的共享服务器中,应该使用SQL身份validation。 此外,当客户端(远程计算机)连接到运行客户端的计算机之外的其他计算机上的SQL Server实例时,需要SQL Server身份validation。 即使您没有定义任何SQL Server用户帐户,在安装时,root帐户sa也会添加您提供的密码。 就像任何SQL Server帐户一样,这可以用于本地或远程login,但是如果应用程序是login的应用程序,并且只能访问一个数据库,那么强烈build议您不要使用sa帐户,但创build一个有限访问的新帐户。 总的来说,SQL身份validation是使用的主要身份validation方法,而下面我们回顾一下 – Windows身份validation – 更方便。

Windows身份validation

当您从同一台计算机上访问SQL Server时,不会提示您input用户名和密码。 如果您使用的是Windows身份validation,则不是。 使用Windows身份validation,SQL Server服务已经知道有人使用正确的凭据login到操作系统,并使用这些凭据来允许用户访问其数据库。 当然,只要客户端与SQL Server驻留在同一台计算机上,或者只要连接的客户端与服务器的Windows凭据相匹配,就可以工作。 Windows身份validation通常用作login到SQL Server实例而不input用户名和密码的更方便的方式,但是,当包含更多的用户或正在与SQL Serverbuild立远程连接时,应使用SQL身份validation。

理想情况下,在Intranettypes的环境中工作时必须使用Windows身份validation。

而SQL Server身份validation可以用于所有其他types的情况。

这是一个可能有帮助的链接。

Windows身份validation与SQL Server身份validation

如果您希望通过[由pipe理员创build]来对用户进行身份validation,那么您将在您的应用程序中使用Windows身份validation。

但是,如果您想根据您的应用程序数据库中可用的用户身份validation用户,那么在这种情况下,您将需要进行SQL身份validation。

如果您的应用程序是ASP.NET Web应用程序,那么您可以使用标准的login控件,这些控件依赖于提供程序,如SqlMembershipProvider,SqlProfileProvider。 您可以configuration您的login控件和您的应用程序是否应该针对Windows用户或应用程序数据库用户进行身份validation。 在第一种情况下,它将被称为Windows身份validation,后者将被称为Sql身份validation。

我不知道SQLServer以及其他数据库pipe理系统,但是我认为DB2和Oracle的好处是一样的。 如果您使用Windows身份validation,则只需维护一组已经为您完成的Windows用户和/或密码。

DBMSauthentication意味着具有必须保持的单独的一组用户和/或密码。

此外,Windows密码允许为企业(Active Directory)集中configuration它们,而SQLServer必须为每个DBMS实例维护一组。

当授予用户对数据库的访问权时,在可用性和安全性方面有一些需要考虑的优点和缺点。 这里我们有两个选项来validation和授予用户权限。 首先是给每个人sa(系统pipe理员)帐户访问权限,然后通过保留可根据需要授予或拒绝权限的用户列表来手动限制权限。 这也被称为SQL身份validation方法。 这种方法存在主要的安全缺陷,如下所列。 第二个更好的select是让Active Directory(AD)处理所有必要的身份validation和授权,也称为Windows身份validation。 用户login到其计算机后,应用程序将使用操作系统上的Windowslogin凭据连接到数据库。

使用SQL选项的主要安全问题是违反了最小权限(POLP)的原则,即只给予用户所需的绝对必要的权限。 通过使用sa账户,您将面临严重的安全漏洞。 POLP被违反,因为当应用程序使用sa帐户时,他们可以访问整个数据库服务器。 另一方面,Windows身份validation遵循POLP,只允许访问服务器上的一个数据库。

第二个问题是,不需要每个应用程序的实例都有pipe理员密码。 这意味着任何应用程序都是整个服务器的潜在攻击点。 Windows只使用Windows凭据login到SQL Server。 Windows密码存储在存储库中,而不是SQL数据库实例本身,并且在Windows内部进行身份validation,而不必在应用程序上存储密码。

使用涉及密码的SQL方法会出现第三个安全问题。 正如Microsoft网站和各种安全论坛上介绍的那样,SQL方法不会“强制执行密码更改或encryption,而是通过networking以明文forms发送。 并且SQL方法在失败尝试后不会locking,因此允许长时间尝试打入。然而,Active Directory使用Kerberos协议来encryption密码,同时也使用密码更改系统并在尝试失败后locking。

还有效率的缺点。 由于您将要求用户在每次访问数据库时都input凭证,因此用户可能会忘记凭证。

如果用户被删除,您将不得不从应用程序的每个实例中删除他的凭据。 如果您必须更新sapipe理员密码,则必须更新SQL Server的每个实例。 这是非常耗时和不安全的,这使得被解雇的用户保留访问SQL Server的可能性。 使用Windows方法不会出现这些问题。 一切都由公元处理和处理。

使用SQL方法的唯一好处在于它的灵活性。 您可以从任何操作系统和networking(甚至远程访问)访问它。 一些较旧的遗留系统以及一些基于networking的应用程序可能只支持sa访问。

AD方法还提供了诸如组的省时工具,以便于添加和删除用户以及用户跟踪能力。

即使你设法纠正SQL方法中的这些安全缺陷,你也将重新发明轮子。 考虑到Windows身份validation提供的安全优势(包括密码策略和POLP后),对于SQL身份validation来说,这是一个更好的select。 因此,强烈build议使用Windows身份validation选项。

我认为主要的区别是安全。

Windows身份validation意味着身份被作为windows handashaking的一部分进行处理,现在密码永远不会被拦截。

SQL身份validation意味着您必须自己存储(或提供)用户名和密码,使其更容易被破坏。 一大堆努力已经使Windowsauthentication非常强大和安全。

我可以build议,如果你使用Windows身份validation使用组和angular色来做到这一点。 Windows中的组和SQL中的angular色。 不得不在SQL中设置大量的用户是一个很大的麻烦,你可以设置组,然后将每个用户添加到组中。 (我认为大多数安全应该这样做)。

authentication是确认用户或计算机身份的过程。 该过程通常由四个步骤组成:用户通常通过提供用户名来声明身份。 例如,我可以通过告诉数据库我的用户名是“mchapple”来做出这个声明。 该系统挑战用户certificate他或她的身份。 最常见的挑战是请求密码。 用户通过提供请求的证据来回应挑战。 在这个例子中,我将为数据库提供密码。系统validation用户是否提供了可接受的证据,例如,根据本地密码数据库或使用集中式validation服务器

SQL Server身份validation模式

SQL Server 2008提供了两种身份validation模式选项

Windows身份validation模式要求用户提供有效的Windows用户名和密码来访问数据库服务器。 在企业环境中,这些凭据通常是Active Directory域凭据。

混合身份validation模式允许使用Windows凭据,但使用pipe理员可以在SQL Server中创build和维护的本地SQL Server用户帐户进行补充。

在可能的情况下,Mssqlauthentication是非常可取的。 它允许您符合已在工作场所使用的现有Windows域,而且您不必知道用户的密码。

但是,在服务器的机器没有对本地工作站的内部网进行authentication的情况下,似乎不可能使用。

如果你使用sqlauthentication,安全将完全取决于你。

如果您使用微软身份validation,安全性基本上为您处理,但您将处理额外的限制。