SQLServer2012⾝份验证(Authentication)
在保密你的服务器和数据,防备当前复杂的攻击,SQL Server有你需要的⼀切。但在你能有效使⽤这些安全功能前,你需要理解你⾯对的威胁和⼀些基本的安全概念。这篇⽂章提供了基础,因此你可以对SQL Server⾥的安全功能充分利⽤,不⽤在⾯对特定威胁,不能保护你数据的功能上浪费时间。
⾝份验证是验证主体(需要访问SQL Server数据库的⽤户或进程,是声称是的⼈或物)的过程。主体需要唯⼀的⾝份,这样的话SQL Server可以决定主体有哪个许可。在提供安全访问数据库对象中,正确的⾝份验证是必须的第⼀步。
SQL Server⽀持⾝份验证的两个途径:Windows集成⾝份验证和SQL Server⾝份验证。你使⽤的途径取决于⽹络环境,应⽤程序访问数据库的类型和这些应⽤程序的⽤户类型。
1. Windows⾝份验证:这个⾝份验证⽅式依赖于Windows来担当重任——当⽤户登录到Windows是验证⾝份。访问SQL
Server对象的许可然后会分配给Windows登录。只有当SQL Server运⾏在⽀持Windows NT或Kerberos⾝份验证的Windows版本上才可以使⽤,这个⾃Windows 2000起已经⼏乎是标准。
2. SQL Server⾝份验证:SQL Server可以完全⾃主完成⾝份验证。在这个情况下,你可以创建唯⼀的⽤
户名——在SQL
Server调⽤登录——和密码。连接到SQL Server的⽤户或应⽤程序提供这些凭证来访问。许可然后直接分配到那个登录或通过⾓⾊⾥的资格。
在SQL Server⾥在这2个类型之间配置⾝份验证不是⼀个⾮此即彼的选择(可以混合使⽤)。你可以在任何两个⽅式⾥配置⾝份验证:
1. 混合⾝份验证模式:服务器同时⽀持SQL Server和Windows⾝份验证。
2. Windows⾝份验证模式:服务器只⽀持Windows⾝份验证。
只要可能的话,微软强烈推荐使⽤Windows⾝份验证。Windows拥有可靠的验证选项,包括密码策略,但正真正的应⽤程序⾥,Windows⾝份验证并不总是可⾏的。SQL Server⾝份验证可以嵌⼊Windows验证的⼀些功能,但它不太安全。
Windows⾝份验证
如果你配置你的SQL Server在Windows⾝份验证⾥操作,SQL Server认为与Windows服务器有信任关系。当它们登录到Windows⾥时,SQL Server认为Windows已经验证⽤户。然后SQL Server检查⽤户
账号,任何Windows组和任何SQL Server ⾓⾊,看⽤户是否是其成员之⼀来决定⽤户是否允许与各个SQL Server对象打交道。
与SQL Server⾝份验证⽐,Windows⾝份验证有很多优势,包括:
⽤户⼀次登录即可,因此她不需要单独登录到SQL Server审计功能简单化登录管理密码策略(在Windows Server 2003及后续版本)
Winows⾝份验证的另⼀个⼤优势是你对Windows⽤户和组的任何修改会⾃动在SQL Server⾥⽣效,因此你不需要单独管理它们。然后,如果你对Windows⽤户做出的修改,它们此时刚好连接到SQL Server,这些修改不会⽣效,直到下次⽤户连接到SQL Server才会⽣效。
配置SQL Server安全设置
当你安装SQL Server时,你可以选择SQL实例允许的验证模式。安装完成后你可以在SSMS⾥的服务器属性对话框⾥修改这个设置。这些设置适⽤于SQL Server实例⾥的所有数据库和其它对象。因此如果你需要为任何数据库使⽤SQL Server⾝份验证,你需要为服务器设置为混合模式。
插图2.1显⽰了在SSMS⾥选择了【安全性】页的【服务器属性】对话框。为了打开这个对话框,在对象浏览器⾥右击服务器实例名,从弹出的菜单⾥选择【属性】,然后点击【安全性】页。通过点击对应的
单选框和点击【确定】提交修改,就可以修改验证模式。
插图2.1:为SQL Server实例配置验证模式
添加⼀个Windows登录
使⽤Windows⾝份验证,你的⽤户在能访问SQL Server前需要验证Windows登录账号。然后你可以授予⼀个Windows组连接到SQL Server,或者你可以授予许可给单独的Windows⽤户,如果你不想授予集体许可。
使⽤SSMS管理安全的⼀个好处是你可以同时配置登录和数据库访问。启⽤Windows登录到访问SQL Server
和AdventureWorks2012数据库。使⽤下列步骤,并假定本地机器已经定义了woodytu⽤户。
1.打开SSMS,确保对象浏览器窗体可见,并且你已经连接到SQL Server实例
2.展开服务器对象的树状视图,然后展开【安全性】节点。你会看到如插图2.2所⽰的多个⼦节点。
插图2.2:服务器对象浏览器的安全性部分,你定义的登录的地⽅
3.右击【登录名】节点,从弹出的菜单⾥选择【新建登录名】来打开【登录名】——新的对话框
4.确保【Windows⾝份验证】单选框已经选择
如何安装sql server 2000
5.你可以⽤任何2种⽅式选择Windows登录。第⼀种⽅式是直接输⼊域名或机器名,然后⼀个\和所使⽤的Windows登录名。第⼆个⽅式,通常更简单的⽅式点击【搜索】按钮来打开【选择⽤户或组】对话框。输⼊⽤户名,点击【检查名称】来查具体的名称。如果到⽤户,完整的名字在对话框⾥出现,如插图2.3⾥所⽰。点击【确定】选择那个⽤户。
插图2.3:到⼀个Window登录来添加到SQL Server
6.回到【登录名-新建】对话框,设置AdventureWorks2012数据库作为登录的默认数据库。当⽤户连接到服务器且不指定数据库时,这是⽤户使⽤的数据库。这不限制⽤户只访问那个数据库。插图2.4展⽰对于在WIN10的机器上Windows的登录⽤户woodytu,设置默认数据库为⽰例数据库AdventureWorks2012的登录配置。
插图2.4:【登录名—新建】对话框启⽤Windows登录到访问SQL Server实例。
提⽰:
绝不保持默认数据库为master数据库。这个是惨痛的教训:连接到服务器,太容易忘记修改数据库了。到时候如果你运⾏脚本在master数据库上创建上百个数据库对象,你会花⼤量的精⼒来⼈为删除这些对象,清理master数据库。
7.接下来,给⽤户访问⼀个数据库。从对话框的左边清单⾥选择【⽤户映射】页。通过选择数据库名旁的选择框授予⽤户访问AdventureWorks2012数据库。SQL Server⾃动映射⽤户⽤同样的⽤户名到数据库⾥的⽤户,如你在表⾥的第3列所见,如果你想要的话,可以修改⽤户名。分配Sales作为⽤户在数据库⾥默认的架构,可以在【默认架构】列⾥输⼊,或者点击【...】按钮从列表⾥选择。对话框应该如插图2.5所⽰。
插图2.5:授予Windows登录访问AdventureWorks2012数据库
提⽰:
为登录设置默认数据库和授予访问到数据库之间是有区别的。当⽤户登录没有指定数据库时,默认数据库指的是SQL Server 尝试修改上下⽂到那个数据库。但这不授予在数据库⾥做任何事的任何许可,或者甚⾄允许访问到数据库。这就是说分配⽤户完全不能访问的数据库是可能的。⼀旦数据库被访问了,为了让⽤户可以进⾏⼀些操作,你需要授权⽤户许可。
8.默认情况下,新的Windows登录可以访问到服务器。但是如果你想禁⽌登录访问服务器,从【登录名—新建】的左边列表选择【状态】,勾选【拒绝】单选框。你也可以通过选择【禁⽌】按钮临时禁⽤登录。插图2.6显⽰了这些选项。
插图2.6:授予和拒绝连接到数据库和临时禁⽤登录账号选项点击【确定】创建⽤户。
你也可以在同样的⽅式⾥添加Windows组到SQL Server,组的任何成员也可以访问数据库服务器,包括你给组的数据库⾥的任何对象。
SQL Server⾝份验证
当你使⽤SQL Server登录作为验证时,客户端应⽤程序需要提供有效的⽤户名和密码来连接到数据库。这些SQL Server登录在SQL Server⾥保存,与Windows⽆关。当在登录时,如果没有匹配的⽤户名和密码,SQL Server抛出错误,⽤户不能访问数据库。
尽管Windows⾝份验证更加安全,在⼀些情况或许你只能选择SQL Server登录来代替。对于简单没有⼴泛安全需求的应⽤程序,SQL Server⾝份验证更容易管理,它允许你避免Windows安全的复杂。⽽且如果客户端运⾏在更⽼版本的Windows(⽐Windows 2000还⽼)或⾮Windows的操作系统,你必须使⽤SQL Server登录。
创建SQL Server登录,使⽤和Windows登录同样的【登录名-新建】对话框。但不是选择Windows登录,输⼊没有域名或机器名的⽤户名,并提供密码。例如,插图2.7显⽰了如何创建⼀个新的SQL Server登录user,把AdventureWorks2012作为他的默认数据库。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论