数据库浅谈sql server应用程序角色的应用场景嘉为科技.docVIP

  • 11
  • 0
  • 约2.44千字
  • 约 5页
  • 2019-10-21 发布于山西
  • 举报

数据库浅谈sql server应用程序角色的应用场景嘉为科技.doc

释放办公激情,效能触手可及 释放办公激情,效能触手可及 嘉为IT咨询培训 培训 PAGE 0 浅谈SQL Server应用程序角色的应用场景 【摘要】 应用程序访问数据库进行增删改查,一般我们都是创建登录名、映射到SQL Server的数据库、再对数据库的用户进行赋予适当的权限来实现的。但是如果我们不希望SQL Server的登录账号不能直接访问相应的数据而又能返回用户需要的数据,那么应用程序角色可以帮助我们实现这样的需求。 【正文】 、引言 Microsoft SQL Server 安全体系的最终实现在数据库本身上实现。无论使用什么应用程序与 SQL Server 通讯,这都是控制用户活动的最佳方法。但是,有时必须自定义安全控制以适应个别应用程序的特殊需要,尤其是当处理复杂数据库和含有大表的数据库时。 、SQL Server安全体系简介 在SQL Server中,我们使用登录账号来进入SQL Server,而该账号在服务器级别所拥有的权限由它加入服务器角色来决定。当然也可以单独赋予登录账号对于服务器对象的权限。 至于登录账号在数据库中拥有的权限,由该登录账号映射到数据库的数据库用户加入的数据库角色来决定。当然也可以单独赋予数据库用户对于数据库对象的权限。 我们可以用一幅图来说明登录账号、服务器角色、数据库角色、数据库用户以及权限之间的关系。 、应用程序角色简介 从前面的介绍可以看到SQL Server的权限体系已经是比较完善的,那么在权限体系中加入应用程序角色有什么作用呢,应用程序角色究竟是什么呢? 应用程序角色的定义 应用程序角色也是数据库主体,应用程序角色跟数据库角色是并排的,应用程序角色和数据库角色一样也是定义在每个数据库下面。 跟数据库角色一样,应用程序角色可以拥有数据库对象的权限。 应用程序角色的特殊之处 应用程序角色使应用程序能够用其自身的、类似用户的特权来运行。使用应用程序角色可以只允许通过特定应用程序连接的用户访问特定数据。 与数据库角色不同的是,应用程序角色默认情况下不包含任何成员,而且是非活动的,必须激活之后才能发挥作用。 应用程序角色有密码,只有拥有应用程序角色并且拥有正确密码的用户才可以激活该角色。 当激活某个应用程序角色之后,用户会失去自己原有的权限,转而拥有应用程序角色的权限。 、应用程序角色使用举例 首先是定义应用程序角色 可以使用CREATE APPLICATION ROLE语句创建应用程序角色,例如: USE NorthwindCS go CREATE APPLICATION ROLE AppRole_AccessProductTable WITH PASSWORD = password, DEFAULT_SCHEMA = dbo 这样我们就创建一个名为AppRole_AccessProductTable 、密码为password、默认架构为dbo的应用程序角色。 激活应用程序角色 首先我们以用户DBO来访问数据库NorthwindCS 接着,我们激活应用程序角色AppRole_AccessProductTable,并且查询当前的用户,可以发现当前的用户变为AppRole_AccessProductTable,也就是说当前是以应用程程序角色AppRole_AccessProductTable的权限来访问数据。 恢复原始的安全上下文(恢复到用户DBO) 在SQL的早期版本中,用户若要在激活应用程序角色后重新获取其原始安全上下文,唯一的方法就是断开SQLSERVER连接,然后重新连接。 在SQL2005中,sp_setapprole提供了Cookie选项,他可以在激活应用程序之前创建一个包含上下文信息的Cookie。sp_unsetapprole可以使用此Cookie将会话恢复到其原始上下文。语句如下面所述: EXEC sp_unsetapprole @cookie = NULL -- varbinary(50) 如果这样的话,那么激活应用程序角色的语句也得改为 EXEC sp_setapprole @rolename = AppRole_AccessProductTable, -- sysname @password = password, -- sysname @encrypt = , -- varchar(10) @fCreateCookie = true, -- bit @cookie = @cookie OUTPUT -- varbinary(50) 应用程序角色的权限 应用程序角色的权限与自定义数据库角色的权限赋予方法一样,可以将特定对象的权限赋予角色。例如赋予应用程序角色对于数据库NorthwindCS的产品表有查询、更新、插入的权限

文档评论(0)

1亿VIP精品文档

相关文档