首页 > 代码库 > SQL Server的安全模型(芮)

SQL Server的安全模型(芮)

下面我们来学习一下SQL Server的安全模型,首先看一张图:  这就是SQLServer的三层安全管理体系,我们打个比方,假设您住在一个防卫森严的小区,您如果希望进入您的房间,当然需要闯三关。第一关:您需要通过小区的门卫检查,进入小区;第二关:到了您所在的单元楼门前,您还需要单元门的钥匙或门铃密码;第三关:进了单元门后,您还需要您自己房间的钥匙。 看一下上面的图,SQLServer的安全管理是不是非常类似小区的三层验证关口?同样的,我们想操作数据库的某张表也要闯三关:第一关:我们需要登录到SQL Server系统,即需要登录帐户;第二关:我们需要访问某个数据库(相当于我们的单元楼),即需要成为该数据库的用户第三关:我们需要访问数据库中的表(相当于打开我们的房间),即需要数据库管理员DBA给您授权,如增添、修改、删除、查询等权限。 咱们都知道,登录验证有两种方式:1.SQL身份验证:适合于非windows平台的用户或Internet用户, 需要提供帐户和密码2.Windows身份验证:适合于windows平台用户,不需要提供密码,和windows集成验证那么,登录帐户相应有两种:SQL 帐户和Windows帐户。 下面我们就一起来看看如何创建登录帐户、如何创建数据库用户以及如何给用户授权。1.创建登录•          添加 Windows登录帐户    EXEC sp_grantlogin   ‘leno/123/*域名/用户名 */  •          添加 SQL登录帐户EXEC sp_addlogin  ‘zhangsan, ‘1234’   /*用户名/密码*/ 2.创建数据库用户创建数据库用户需要调用系统存储过程sp_grantdbaccess,其用法为:EXEC sp_grantdbaccess ‘登录帐户名’,’数据库用户名’         其中,“数据库用户名“为可选参数,默认为登录帐户名,即数据库用户默认和登录帐户同名。USE stuDBGOEXEC sp_grantdbaccess       leno/123, lenoDBUser EXEC sp_grantdbaccess        zhangsan, zhangsanDBUser 其实,系统本身就内置了两个数据库用户:q       dbo  用户q       表示数据库的所有者(DB Owner)q       无法删除 dbo 用户,此用户始终出现在每个数据库中q       guest 用户q       适用于没有数据库用户的登录帐号访问q       每个数据库可有也可删除 dbo用户:表示DataBase Owner即数据库的主人,一般来说,谁创建的数据库,谁就是数据库的主人,但是可以转让,就像房屋产权证转让一样。guest来宾用户:就像你不是某个公司的员工,您进入该公司就是作为一个来宾(guest)身份一样。数据库中的guest用户含义一样:如果登录到SQL Server中了,希望访问某个数据库,但又不是该数据库的用户,那么当你访问时,SQL Server就认为你作为guest用户的身份访问数据库,至于你作为guest来宾用户是否能够访问数据库,那就看管理员的授权了。如果管理员给guest帐户授予了访问的权限,那么你就能访问。那么,什么叫做访问权限呢?打个比方:对于某间房屋来说,房屋的权限就是指房产出售权(房主)、转租(可能是租房人有事不住了,但又没到期)、只能居住(租房人)等。对于数据库来说,访问权限指的就是数据库的增(insert)、删(delete)、改(update)、查(select)权限以及其它执行权限等。 3.给数据库用户授权授权的语法•          GRANT 权限 [ON  表名 ]  TO  数据库用户USE  stuDBGO/*--为zhangsanDBUser分配对表stuInfo的select, insert, update权限--*/GRANT select, insert, update    ON  stuInfo  TO  zhangsanDBUser /*--为lenoDBUser分配建表的权限--*/GRANT  create  table  TO  lenoDBUser 注意授权只能向数据库用户授权,而不是给登录帐户授权。而且数据库的权限仅限于当前数据库,如果希望访问其他数据库,还需要成为其他数据库的用户。所以,现在大家应该清楚了:登陆账号->数据库用户->访问权限,这三道关口就是SQL Server的安全模型。

 

SQL Server的安全模型(芮)