【发布时间】:2015-07-29 14:32:13
【问题描述】:
我在数据库中有一个刚刚创建的新用户。 它不是任何角色的一部分,既不是内置的,也不是用户定义的。
如果我查看其对 [sys] 架构对象的有效权限:
EXECUTE AS LOGIN = 'Foo';
SELECT * FROM fn_my_permissions('[sys].[sysobjects]', 'OBJECT');
我看到它实际上可以查看 SYS 模式对象的定义:
entity_name subentity_name permission_name
[sys].[sysobjects] SELECT
[sys].[sysobjects] VIEW DEFINITION
也许在服务器级别授予公共查看任何定义? 为什么会有这个?
如果我发出 DENY VIEW DEF,主要问题会更好:
DENY VIEW DEFINITION ON SCHEMA::sys to Foo;
它不会消失,用户仍然可以查看 SYS OBJECT 定义。
如何防止用户查看 SYS 架构对象的定义。
谢谢, 乔
【问题讨论】:
标签: sql sql-server tsql security sql-server-2008-r2