【问题标题】:REFERENCES and VIEW DEFINITION permissions to a user on an alias data type用户对别名数据类型的 REFERENCES 和 VIEW DEFINITION 权限
【发布时间】:2014-09-21 07:37:57
【问题描述】:

我创建了一个新类型和一个新用户:

CREATE TYPE dbo.MY_TYPE FROM varchar (128) NULL
GO
CREATE USER MyUser WITHOUT LOGIN;
GO

如果我不授予该用户对我的类型的任何权限,那么我看不到该类型的定义:

EXECUTE AS USER = 'MyUser';
GO
SELECT * FROM sys.types where name = 'MY_TYPE';
--returns nothing
REVERT
GO

根据BOL

授予个别实体的查看定义允许被授予者 查看指定实体的元数据。

所以,如果我授予 VIEW DEFINITION 权限:

GRANT VIEW DEFINITION ON TYPE::dbo.MY_TYPE TO MyUser;

然后重复测试,我从 sys.types 获得信息。没关系。

问题是为什么我可以通过授予 REFERENCES 权限来解决该问题?

REVOKE VIEW DEFINITION ON TYPE::dbo.MY_TYPE FROM MyUser;
GRANT REFERENCES ON TYPE::dbo.MY_TYPE TO MyUser;
GO

EXECUTE AS USER = 'MyUser';
GO
SELECT * FROM sys.types where name = 'MY_TYPE';
--see the result here!!!
REVERT
GO

【问题讨论】:

    标签: sql-server security


    【解决方案1】:

    简而言之,该类型的 any 权限似乎足以查看它的元数据。如需更深入的答案,请查看this

    【讨论】:

      猜你喜欢
      • 2023-01-30
      • 1970-01-01
      • 1970-01-01
      • 2012-03-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-04
      相关资源
      最近更新 更多