防止用户更改扩展属性

防止用户更改扩展属性

问题:

默认情况下,用户可以更改自己的扩展属性。以下代码是否适合阻止用户更改其用户扩展属性?:

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 的前端更改扩展属性也会失败,因为后端调用相同的系统存储过程。

相关内容