Sql 2008“未授予公共服务器权限”策略

Posted

技术标签:

【中文标题】Sql 2008“未授予公共服务器权限”策略【英文标题】:Sql 2008 "Public Not Granted Server Permission" policy 【发布时间】:2009-04-01 20:38:19 【问题描述】:

我最近开始研究 SQL Server 2008 中的新策略管理,当我检查是否符合“未授予公共服务器权限”策略时,我的服务器未通过检查。原因是,我很确定这是默认设置,public 具有 TCP Endpoint 权限,以便用户可以连接到服务器。如果我要删除它,我将不得不单独为用户分配连接权。

这对我来说似乎很愚蠢。我不明白为什么微软会建议改变这个。我没有来宾帐户,所以只有指定的用户才能访问服务器。服务器在防火墙后面,甚至公司内只有一个子网可以访问它。有人对此有任何见解吗?

【问题讨论】:

【参考方案1】:

安全最佳实践从锁定一切开始,然后仅在必要时向真正需要使用它的人开放部分。

通过允许“公众”访问甚至连接,不管他们无权做任何事情的事实,打开门只是一个裂缝。有时,这足以利用缓冲区溢出或其他类型的攻击。

更新

登录和用户是两个不同的东西。登录是服务器级别的,用户是特定于数据库的。每个用户都应该有一个相应的登录名;但不是每个登录都会有一个数据库用户帐户。

假设您正在使用 Active Directory 集成安全性;并且您已经分配了一个特定的 AD 组来访问服务器。现在,只有组内的一些人可能实际上可以访问某些数据库。这些是您希望允许访问连接的人。而该组的其他成员没有常规的数据库用户帐户。

根据定义,这是一个问题,因为一些组成员可以连接并列出服务器上的数据库,即使他们无权访问这些数据库中的任何一个。这就是我所说的门上的“裂缝”。

如果您可以阻止这些人甚至无法连接,那么您在保护您的服务器方面已经走了很长一段路。

Public 角色授予登录名的其他服务器级别权限。如果可能,您应该像关闭访客帐户一样关闭它。

【讨论】:

这对我来说毫无意义。如果我错了,请纠正我,但要成为公共角色的成员,您必须登录。如果无法连接到服务器,登录将毫无用处。如果 public 没有连接权限,我无论如何都要给每个登录权限。 就我而言,我没有没有 db 用户帐户的登录。此外,授予我服务器上公共角色的唯一权限是 TCP 端点权限。我认为这个建议不适用于我的情况。你确实想出了一个我没有想到的场景。

以上是关于Sql 2008“未授予公共服务器权限”策略的主要内容,如果未能解决你的问题,请参考以下文章

sql server2008中的策略

SQL Server 2008新特性——策略管理

如何为SQL Server2008添加登录账户并配置权限

SQL Server 2008/2014无法远程连接的可能原因之一

sql server 2008启动时:已成功与服务器建立连接,但是在登录过程中发生错误。(provider:命名管道提供程序,error:0-管道的另一端上无任何进程。)(Microsoft SQL

sql 2008和sql 2012的区别