您好,欢迎访问三七文档
当前位置:首页 > IT计算机/网络 > 数据库 > 数据库-浅谈SQLServer应用程序角色的应用场景--嘉为科技
释放办公激情,效能触手可及嘉为IT咨询培训培训0浅谈SQLServer应用程序角色的应用场景【摘要】应用程序访问数据库进行增删改查,一般我们都是创建登录名、映射到SQLServer的数据库、再对数据库的用户进行赋予适当的权限来实现的。但是如果我们不希望SQLServer的登录账号不能直接访问相应的数据而又能返回用户需要的数据,那么应用程序角色可以帮助我们实现这样的需求。【正文】一、、引言MicrosoftSQLServer安全体系的最终实现在数据库本身上实现。无论使用什么应用程序与SQLServer通讯,这都是控制用户活动的最佳方法。但是,有时必须自定义安全控制以适应个别应用程序的特殊需要,尤其是当处理复杂数据库和含有大表的数据库时。二、、SQLServer安全体系简介在SQLServer中,我们使用登录账号来进入SQLServer,而该账号在服务器级别所拥有的权限由它加入服务器角色来决定。当然也可以单独赋予登录账号对于服务器对象的权限。至于登录账号在数据库中拥有的权限,由该登录账号映射到数据库的数据库用户加入的数据库角色来决定。当然也可以单独赋予数据库用户对于数据库对象的权限。我们可以用一幅图来说明登录账号、服务器角色、数据库角色、数据库用户以及权限之间的关系。释放办公激情,效能触手可及嘉为IT咨询培训培训1三、、应用程序角色简介从前面的介绍可以看到SQLServer的权限体系已经是比较完善的,那么在权限体系中加入应用程序角色有什么作用呢,应用程序角色究竟是什么呢?应用程序角色的定义应用程序角色也是数据库主体,应用程序角色跟数据库角色是并排的,应用程序角色和数据库角色一样也是定义在每个数据库下面。跟数据库角色一样,应用程序角色可以拥有数据库对象的权限。应用程序角色的特殊之处1.应用程序角色使应用程序能够用其自身的、类似用户的特权来运行。使用应用程序角色可以只允许通过特定应用程序连接的用户访问特定数据。2.与数据库角色不同的是,应用程序角色默认情况下不包含任何成员,而且是非活动的,必须激活之后才能发挥作用。3.应用程序角色有密码,只有拥有应用程序角色并且拥有正确密码的用户才可以激活该角色。4.当激活某个应用程序角色之后,用户会失去自己原有的权限,转而拥有应用程序角色的权限。四、、应用程序角色使用举例释放办公激情,效能触手可及嘉为IT咨询培训培训21.首先是定义应用程序角色可以使用CREATEAPPLICATIONROLE语句创建应用程序角色,例如:USENorthwindCSgoCREATEAPPLICATIONROLEAppRole_AccessProductTableWITHPASSWORD='password',DEFAULT_SCHEMA=dbo这样我们就创建一个名为AppRole_AccessProductTable、密码为'password'、默认架构为dbo的应用程序角色。2.激活应用程序角色首先我们以用户DBO来访问数据库NorthwindCS接着,我们激活应用程序角色AppRole_AccessProductTable,并且查询当前的用户,可以发现当前的用户变为AppRole_AccessProductTable,也就是说当前是以应用程程序角色AppRole_AccessProductTable的权限来访问数据。3.恢复原始的安全上下文(恢复到用户DBO)释放办公激情,效能触手可及嘉为IT咨询培训培训3在SQL的早期版本中,用户若要在激活应用程序角色后重新获取其原始安全上下文,唯一的方法就是断开SQLSERVER连接,然后重新连接。在SQL2005中,sp_setapprole提供了Cookie选项,他可以在激活应用程序之前创建一个包含上下文信息的Cookie。sp_unsetapprole可以使用此Cookie将会话恢复到其原始上下文。语句如下面所述:EXECsp_unsetapprole@cookie=NULL--varbinary(50)如果这样的话,那么激活应用程序角色的语句也得改为EXECsp_setapprole@rolename='AppRole_AccessProductTable',--sysname@password='password',--sysname@encrypt='',--varchar(10)@fCreateCookie=true,--bit@cookie=@cookieOUTPUT--varbinary(50)4.应用程序角色的权限应用程序角色的权限与自定义数据库角色的权限赋予方法一样,可以将特定对象的权限赋予角色。例如赋予应用程序角色对于数据库NorthwindCS的产品表有查询、更新、插入的权限:use[NorthwindCS]GOGRANTINSERTON[dbo].[产品]TO[AppRole_AccessProductTable]GOuse[NorthwindCS]释放办公激情,效能触手可及嘉为IT咨询培训培训4GOGRANTSELECTON[dbo].[产品]TO[AppRole_AccessProductTable]GOuse[NorthwindCS]GOGRANTUPDATEON[dbo].[产品]TO[AppRole_AccessProductTable]GO五、、小结应用程序角色是一个数据库主体,它使应用程序能够用其自身的、类似用户的权限来运行。在使用应用程序时,可以仅仅允许那些经过特定应用程序连接的用户来访问数据库中的特定数据,如果不通过这些特定的应用程序连接,那么无法访问这些数据。这是使用应用程序角色实现安全管理的目的,这也是对于数据库角色的有效补充,可以更自由地控制访问数据库的权限。
本文标题:数据库-浅谈SQLServer应用程序角色的应用场景--嘉为科技
链接地址:https://www.777doc.com/doc-2428069 .html