设为首页 收藏本站
查看: 428|回复: 0

[经验分享] Sql Server每日一练-数据库的角色

[复制链接]

尚未签到

发表于 2016-11-4 05:31:04 | 显示全部楼层 |阅读模式
  在SQL Server 中,角色是一个新概念。使用数据库角色有什么意义呢?   
    我们新增了7个固定的服务器角色和9个固定的数据库角色。服务器角色是分散系统管理员工作的一个办法。在SQL Server 6.5和更早的版本中,有一个叫做“sa”的帐号,这个帐号可以在数据库服务器上做任何事情。在那时,你可以有10个Windows NT用户被映射成“sa”,这意味着这10个用户都可以在任何时间做任何事情,然而服务器审计工具只会记录成“sa”的操作。你没有任何办法来确认到底是谁做了什么操作。
    SQL Server 7.0改进了这一点。不是像以前那样使“sa”具有所有的特权,权限是通过角色成员来获得的。我们还把系统管理员的特权划分成了多个角色。例如,为了在SQL Server 7.0中让某人获得系统管理员权限,你只需要把他加入到“sysadmin”这个固定服务器角色中即可。
    还有其它角色,例如“dbcreator”是用来创建和更改数据库的;“securityadmin”是用来增加新的登录或者重置缺省数据库的。“sa”登录仍然存在,是为了保持向后兼容性。 但该权限是通过成为“sysadmin”角色中的成员来获得的。服务器的审计追踪功能将根据你的Windows NT或者SQL Server登录名来跟踪所做的改变,而不管分配给该帐号的安全特权。
    在单个数据库这一级别上情况也非常相似。在以前版本中,人们会把自己化名为“dbo”来获得对数据库的所有权限。现在用户可以被分配成“db_owner”角色,同样可以拥有对单个数据库的完全控制权限。而且,还有更具体的角色,比如“db_acessadmin”用来控制对数据库的访问,“db_securityadmin”用来给予其他用户访问权限,“db_backupoperator”用于备份数据。我们还增加了用户自定义的和应用程序角色,而且允许用户可以同时成为多个数据库角色的成员。
  应用程序角色是如何工作的?
  
     可能解释应用程序角色的最好方式是在实际情况中说明。比方说你想做一个职工工资单的应用程序,可以允许用户更新工资。当然你不希望允许用户简单地登录到SQL Server中然后更改工资。如果雇员能够那样做的话,他就可能试图去更改他自己的工资了。更合适的方法是使用一个工资单应用程序,它能够执行特定的安全检查,例如,不允许用户更新他们自己的工资。
    它是这样工作的。你的工资单应用程序以使用者的安全级别登录到SQL Server,以便服务器审计追踪工具能够知道到底是谁在登录到SQL Server。然后你的应用程序切换到适当的数据库并调用系统存储过程“sp_setapprole”来启动应用程序角色。应用程序角色是受密码保护的,所以你需要把密码作为参数传递给sp_setapprole。当数据在网上传输时,你也可以对密码进行加密。
    一旦启动了应用程序角色,用户现有的权限被关闭,应用程序角色的安全权限被相应打开。你的应用程序现在就可以使用应用程序角色来执行修改数据库的操作了。
    需要注意的一个问题是,应用程序角色是特定于连接的。假如你同时打开了两个到SQL Server的连接,你必须保证每个连接的应用程序角色都被打开了。使用应用程序角色时,一旦打开连接并转换到适当的数据库后,第一件事情就是调用“sp_setapprole”存储过程。如果不启动应用程序角色,你就不能够访问任何应用程序角色所专有的数据。

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-295351-1-1.html 上篇帖子: SQL Server 2008(R2)支持将数据导出为脚本 下篇帖子: [sql server] 如何测试执行的效率(时间)
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表