By default a user can change their own extended properties. Is the following code appropriate to prevent a user changing their user extended properties attributes?:
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
Я вполне уверен, что я решил эту проблему и достаточно ее обезопасил.
Отказ в выборе на sys.extended_properties не является вариантом, так как это препятствует выбору на всех таблицах.
Однако, отказа в Exec на системных хранимых процедурах достаточно само по себе. Пользователь может видеть расширенные свойства, но не может их изменить. Попытка изменить расширенные свойства через передний конец SSMS также терпит неудачу, так как задний конец вызывает те же системные хранимые процедуры.
.