翻译:Stairway to SQL Server Security Level 2: Authentication

该系列


这篇文章是阶梯系列的一部分:SQL Server安全性的阶梯。


SQL Server拥有您需要的一切来保护您的服务器和数据,以抵御当今复杂的攻击。但是在您能够有效地使用这些安全特性之前,您需要了解您所面临的威胁和一些基本的安全概念。这个第一个阶梯级别提供了一个基础,这样您就可以充分利用SQL Server中的安全特性,而不必浪费时间在那些不能保护您的数据的特定威胁的特性上。


身份验证是验证一个委托者,一个用户或进程需要访问SQL Server数据库的过程,是谁或它声称是什么。一个主体需要唯一的标识,以便SQL Server能够确定主体拥有的权限,如果有的话。正确的身份验证是提供对数据库对象的安全访问的第一步。


SQL Server支持两种身份验证路径:Windows集成的身份验证和SQL Server身份验证。您使用的路径依赖于网络环境、访问数据库的应用程序类型以及这些应用程序的用户类型。


² Windows身份验证:当用户登录到Windows时,这种身份验证形式依赖于Windows来执行重启动验证标识。访问SQL Server对象的权限被分配给Windows登录。只有在支持Windows NT或Kerberos身份验证的Windows版本上运行SQL Server时,这种类型的身份验证才可用。
² SQL Server身份验证:SQL Server完全可以自己处理身份验证。在这种情况下,您可以创建独特的用户名——在SQL server和密码中称为登录。用户或应用程序连接到SQL Server并提供这些凭据以供访问。然后将权限分配给该登录,或者直接或通过成员身份登录。


在SQL Server中配置身份验证并不是这两种类型之间的简单选择。您可以通过两种方式配置身份验证。


² 混合模式验证:服务器支持SQL server和Windows身份验证。
² Windows只有模式:服务器只支持Windows身份验证。


微软强烈建议尽可能使用Windows认证。Windows具有强大的身份验证选项,包括密码策略,但Windows身份验证在实际应用程序中并不总是实用的。SQL Server身份验证可以连接到一些Windows身份验证功能,但它并不安全。


 Windows身份验证


如果您将SQL服务器配置为在Windows身份验证模式下运行,那么SQL Server将假定与Windows服务器的信任关系。它假设Windows在登录到Windows时验证了用户的身份。然后,SQL Server检查用户帐户、任何Windows组和任何SQL Server角色,用户可能是决定该用户是否被允许使用各种SQL Server对象的成员。


与SQL Server身份验证相比,Windows身份验证具有几个优势,包括:
² 由用户单独登录,这样她就不必单独登录到SQL Server。
² 审计功能
² 简化登录管理
² 密码策略(在Windows Server 2003及以后)  


Windows身份验证的另一大优点是,对Windows用户和组的任何更改都会自动反映在SQL Server中,因此您不必单独管理它们。但是,如果您在Windows用户连接到SQL Server时对其进行更改,那么这些更改直到用户下一次连接到SQL Server时才会生效。


配置SQL Server安全设置


安装SQL Server时,可以选择服务器实例允许的身份验证模式。稍后,您可以在SQL Server Management Studio中更改服务器属性对话框中的设置。这些设置适用于SQL Server实例中的所有数据库和其他对象。因此,如果需要为任何数据库使用SQL Server身份验证,则必须为服务器设置混合模式。


图2.1显示了管理Studio中选择的Security页面的服务器属性对话框。要打开这个对话框,右键单击对象资源管理器中的服务器实例名,并从弹出菜单中选择Properties,然后进入安全页面。只需单击适当的单选按钮并单击OK提交更改,就可以更改身份验证模式。


 图2(省略)。为SQL服务器实例配置身份验证模式。


添加一个Windows登录


要使用Windows身份验证,用户在访问SQL Server之前需要一个有效的Windows登录帐户。然后,您可以将权限授予Windows组,以连接到SQL Server,如果您不想授予集体权限,则可以向单个Windows用户授予权限。


使用管理Studio来管理安全性的优点之一是,您可以同时设置登录和提供数据库访问。要启用Windows登录访问SQL Server和AdventureWorks2012数据库,请使用以下步骤,该步骤假定本地机器已经定义了JoeStairway登录。


1.打开SQL Server管理Studio,确保对象资源管理器窗口可见,并连接到一个SQL服务器实例。
2.展开服务器对象的树视图,然后展开安全性部分。您将看到几个子节点,如图2.2所示。
3.右键单击Logins节点并从弹出菜单中选择New Login以打开Login - New对话框。
4.确保选中了Windows身份验证单选按钮。
5.您可以通过两种方式选择Windows登录。第一种方法是直接输入域或机器名,然后是反斜杠和用户的Windows登录名。第二种方法,通常更简单的方法是单击Search按钮打开“选择用户”或“组”对话框。键入用户名并单击Check name按钮以查找准确的名称。如果找到该用户,将会出现完整的名称,如图2.3所示。单击OK选择该用户。
6.回到Login - New对话框,将AdventureWorks2012数据库设置为登录的默认数据库。这是当用户连接到服务器并没有指定数据库时使用的数据库。它不限制用户只访问该数据库。图2.4显示了在名为Marathon的机器上的Windows JoeStairway用户的结果登录,并将默认数据库设置为示例AdventureWorks2012数据库。
提示:
永远不要将默认数据库设置为主数据库。我从痛苦的经验中说:连接到服务器和忘记更改数据库太容易了。如果您运行一个在主数据库中创建数百个数据库对象的脚本,那么您将会有一个非常繁琐的工作:手动删除这些对象,以清理主数据库。
7.接下来,让用户访问数据库。从对话框左侧的列表中选择User Mapping页面。通过检查数据库名称旁边的复选框,授予用户访问AdventureWorks2012数据库的权限。SQL Server自动将用户映射到数据库中具有相同名称的用户,正如您可以在表的第三列中看到的那样,尽管您可以更改用户名。在数据库中指定Sales作为用户的默认模式,或者通过在默认的模式列中键入它,或者单击省略号(…)按钮从列表中选择它。对话框应该如图2.5所示。
提示:
设置一个登录和授予访问数据库的默认数据库之间是有区别的。默认数据库仅仅意味着SQL Server尝试在用户登录而不指定数据库时将上下文更改为该数据库。但这并没有授予任何权限来在数据库中执行任何操作,甚至不允许访问数据库。这意味着可以为用户分配一个无法访问的默认数据库。对于用户在访问数据库时做任何有用的事情,您需要显式地授予用户权限。
8.默认情况下,新的Windows登录可以访问服务器。但是,如果您想要显式地拒绝对服务器的登录访问,请从login - New对话框左侧的页面列表中选择Status,并选择deny单选按钮。您还可以通过选择禁用按钮来临时禁用登录。图2.6显示了这些选项。
9.单击OK以创建用户。


您还可以以同样的方式向SQL Server添加一个Windows组。在这种情况下,组中的任何成员都可以访问数据库服务器,无论您将该组提供给数据库中的对象。


SQL Server身份验证


当您使用SQL Server登录进行身份验证时,客户机应用程序必须提供有效的用户名和密码才能连接到数据库。这些SQL Server登录在SQL Server中保存,而不涉及Windows。当登录时,如果没有帐户匹配用户名和密码,SQL Server会引发错误,用户无法访问SQL Server。


即使Windows身份验证更加安全,您也可以选择在某些情况下使用SQL Server登录。对于没有广泛安全需求的简单应用程序,SQL Server身份验证更容易管理,而且它允许您避免与Windows安全性纠缠在一起。如果客户端运行的是旧版本的Windows(基本上,任何比Windows 2000更老的版本)或非Windows操作系统,就必须使用SQL Server登录。


要创建一个SQL Server登录,请使用与Windows登录相同的登录新对话框。但是,不要选择Windows登录,输入一个没有域或机器名的唯一登录名,并提供一个密码。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值