问题:
默认情况下,用户可以更改自己的扩展属性。以下代码是否适合阻止用户更改其用户扩展属性?:
USE [CustomerAccessDatabase];
GO
DENY SELECT ON sys.extended_properties to [Customer_Access_Role];
GO
USE [master];
GO
DENY EXEC ON sys.sp_addextendedproperty to [public];
GO
DENY EXEC ON sys.sp_dropextendedproperty to [public];
GO
DENY EXEC ON sys.sp_updateextendedproperty to [public];
GO
答案1
我有信心我已经解决了这个问题并且充分确保了这一点。
拒绝选择 sys.extended_properties 不是一个选项,因为这会阻止选择所有表。
但是,拒绝执行系统存储过程本身就足够了。用户可以查看扩展属性,但无法更改它们。尝试通过 SSMS 的前端更改扩展属性也会失败,因为后端调用相同的系统存储过程。