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

[经验分享] SQL SERVER数据库中GUEST用户

[复制链接]

尚未签到

发表于 2016-10-31 06:17:43 | 显示全部楼层 |阅读模式
  SQL SERVER数据库中GUEST用户

问题
谁邀请这些客人(guest)到我的数据库中?你可知道在你的SQL SERVER数据库中还存在guest用户?你可知道SQL SERVER 需要guest用户来实现些特殊功能,且这些功能在2000和2005是不同的?你可知道你的SQL SERVER 2000或2005数据库中有guset用户登录?你可考虑过这是个问题或者你的SQL SERVER就是需要这样?

解决
SQL SERVER2000和2005中都存在guest用户,我模糊的记得早在SQL SERVER6.5或更早的时候就有guest用户了。guest用户用在没有明确权限分配的情况下跨数据库存取对象的。该用户依赖于部分SQL SERVER2000的系统函数(master和tempdb库中),且用来维护SQL Server服务器的正常运行。不幸的是,从应用程序的角度来看,guest用户在某些方面被看成是一种威胁,此种威胁在用户定义的数据库中可被解决。

Guest用户真是我的SQL SERVER的威胁吗?
答案因SQL SERVER 2000还是2005而异,还跟你需要的数据的安全层次有关。下面是一些需要考虑的关键点:
1.SQL SERVER 2000:因为guest用户存在于Model数据库中,所以该用户存在于所有数据库中,当然也包括用户创建的数据库。为了使SQL SERVER能正常工作,guest用户在Master和tempdb两个数据库中必须存在,不能被删除。至于其它用户定义的数据库中是否需要guest用户依赖于应用程序,并且必须要彻底地测试。
2.SQL SERVER 2005:随着架构的使用,数据库用户和对象之间比SQL SERVER2000又添加了一个安全层。尽管guest用户必须存在于SQL SERVER 2005的用户和系统的数据库中,发挥着和SQL SERVER2000中相同的作用。Guest用户不能被删除,但是guest用户可被取消CONNECT权限。(译者注:SQL SERVER 2000中guest用户可以删除;而2005中是不能删除的,却可以取消CONNECT权限,而且为安全起见,所有用户定义的数据库中缺省情况下guest用户的权限都是被取消了的。
3.数据安全:如果你想你的数据不会被错误的存取,那么请使用下面的代码,看看是否存在或是否激活了guest用户。然后决定你的应用程序是否需要用guest用户而不明确授予其权限。

是否真的需要Guest用户?
正如前面提到,SQL SERVER 2000和2005中的master和tempdb数据库总是需要guest用户。另一个需要guest用户的地方就是SQL SERVER 2000企业版中自带的缺省的日志传送(log shipping)功能。

注意:另外可能需要guest用户的地方依赖于:SQL SERVER的缺省功能和第三方/客户应用程序时如何开发的。就后一点而言,你需要先彻底检测你的应用程序,然后再修改guest用户的权限。

我如何发现是否存在guest用户?
请在每个数据库中使用下面的代码来判断是否存在guest用户(SQL SERVER 2000和2005都行):
EXEC sp_MSforeachdb 'USE [?];
SELECT * FROM sysusers;'
GO

Guest用户映射到哪个登陆账号?
这是关键点:guest用户不需要映射到登录名。这种用户账号是供数据库中没有明确授予权限给已映射至认证用户使用的。(译注:guest供那些已经成功登录到SQL SERVER实例,但是却没有通过用户访问数据库的权限的登录者使用的。)

我该如何避免依赖于guest用户?
在SQL SERVER 2000中有部分系统功能需要用到guest用户。所以想不破坏SQL SERVER的禁用这部分功能是不行的。但是商业应用程序应当明确分配权限。

我应当做那类测试?
1. 应当特别注意所有访问多数据库的应用程序。
2. 依据一个综合应用程序测试计划,测试你的所有应用程序。
3. 实现管理功能的例行程序。
4. 哪些每夜,每周或每月执行所有的批处理。
5. 运行的所有第三方应用程序。
6. 确定你的开发和测试环境与最终的产品在guest用户的配置上一致。

我该如何删除/禁止guest账号?
一旦你彻底的测试了你的应用程序,你可以通过下面的代码删除/禁止guest用户账号:
--SQL Server 2000
USE <Database Name>
GO
EXEC sp_revokedbaccess 'guest'
GO
  -- SQL Server 2005
  USE <Database Name>
GO
REVOKE CONNECT FROM GUEST
GO

下一步
如果你现在(译注:原文有误)对guest用户比较熟悉了,那么可以进一步的检查一下你的SQL SERVER,看看有guest被使用。
如果guest账户被使用,并且发现有数据攻击的苗头,请按下面的步骤:
1. 研究一下不使用guest账号需要授予的权限。
2. 在测试环境中授予所需权限。
3. 测试你的应用程序
4. 为SQL SERVER和应用程序的相关代码生成回滚的脚本代码
5. 测试回滚脚本代码
6. 一旦在测试环境中通过测试,就可以部署产品了。
7. 为应用程序作后期测试来决定是否改变成功还是代码需要回滚。

原文地址:
http://www.mssqltips.com/tip.asp?tip=1172

运维网声明 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-293471-1-1.html 上篇帖子: Sql Server 2005 与Sql Server Mobile(Sql server 2005 mobile Edition)数据同步步骤以及问题解决方案 下篇帖子: SQL SERVER 2000 用户sa登陆失败 原因“未与信任的SQL server连接
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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