当涉及到展示计划许可安全时,我遇到了一些摩擦。
假设服务器上有5个数据库。而且每一个都有一个测试/生产分割(所以总共10 )。
只有一个系统管理员。
还有一个人(非sysadmin)负责DB #1上的数据、查询、表、视图、设计、结构、索引等。
您是否将对DB #1的SHOWPLAN/ View Server状态权限授予负责其设计、查询优化等的人员?或者这会给非sys带来不可接受的安全风险吗?
也许这有点主观或灰色地带,但我不确定。是否有可用于减轻这些风险的特定补丁/程序?
在优化查询和查询运行时,是否有任何替代SHOWPLAN的方法?sys.sql_expression_dependencies呢,也是一个相关的视图服务器状态权限,对吗?
有些人可能会认为,您有一个DB_Development、DB_Test和DB_Production拆分。也许理想情况下,但是当您只有实现测试/生产分离的资源时,也许仅仅访问Test就足以减轻风险了?
发布于 2018-02-08 02:35:31
您可以在:SHOWPLAN权限和Transact-SQL批处理中阅读有关安全风险的更多信息:
拥有SHOWPLAN、ALTER或视图服务器状态权限的Security用户可以查看Showplan输出中捕获的查询。这些查询可能包含敏感信息,如密码。因此,建议只将这些权限授予有权查看敏感信息的用户,例如db_owner固定数据库角色的成员或sysadmin固定服务器角色的成员。我们还建议您只将包含显示计划相关事件的显示计划文件或跟踪文件保存到使用NTFS文件系统的位置,并限制对有权查看敏感信息的用户的访问。
发布于 2022-05-31 11:48:16
有一些边缘的情况下,你可以利用计划提取机密信息。
如果你写一个
SELECT COUNT(*) from dbo.employees WHERE salery > 5000
只要给出它的估计计划,您可能会在估计的行中得到或多或少的精确结果,即使您没有权限,或者devs正在使用数据掩蔽等方法来隐藏炮灰。
此外,它还可以显示封装在存储过程中的正确性逻辑(在存储过程中,您没有显示定义权限和/或过程是加密的),并且它可以帮助攻击者在使用sql注入时获得更多有关数据库结构的信息(但在本例中,SHOWPLAN权限是您的较小问题之一)。
https://dba.stackexchange.com/questions/197296
复制相似问题