【问题标题】:Deny VIEW DEFINITION permission to SYS schema拒绝 SYS 模式的 VIEW DEFINITION 权限
【发布时间】: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


    【解决方案1】:

    在MSDN深处找到答案: https://msdn.microsoft.com/en-us/library/ms176112(v=sql.105).aspx

    权限 需要成为公共角色的成员。系统对象定义是公开可见的。具有以下任一权限的对象所有者或被授权者可以看到用户对象的定义:ALTER、CONTROL、TAKE OWNERSHIP 或 VIEW DEFINITION。

    【讨论】:

      猜你喜欢
      • 2010-12-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-25
      • 2023-01-04
      • 2013-01-10
      • 2023-03-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多