Как дать разрешение на выполнение, но не просматривать хранимую процедуру на сервере SQL
Я являюсь разработчиком и хочу, чтобы мой администратор баз данных предоставил группе пользователей разрешения на выполнение хранимых процедур в схеме [Rptg] и просмотр результатов, но не смог просмотреть код t-sql в хранимой процедуре. Они будут использовать Azure Data Studio для подключения и выполнения хранимой процедуры. Должны ли мы сначала создать роль?
2 ответа
Вам определенно следует использовать роли. Чтобы убедиться, что участники роли не могут просматривать текст процедуры, вы можете добавить:
deny view permission on dbo.procx to role25;
отказать в разрешении на схему
DENY VIEW DEFINITION ON SCHEMA::Products to role25;
В приведенном ниже примере предоставляются полномочия на выполнение роли в схеме Rptg. Члены этой роли по умолчанию не имеют VIEW DEFINION для этих хранимых процедур, как это было указано в комментарии @JeroenMostert.
CREATE ROLE RptgSchemaProcExecutor;
GRANT EXECUTE ON SCHEMA::Rptg TO RptgSchemaProcExecutor;
Вот пример сценария проверки.
CREATE USER ExampleUser WITHOUT LOGIN;
ALTER ROLE RptgSchemaProcExecutor
ADD MEMBER ExampleUser;
GO
EXECUTE AS USER = 'ExampleUser';
GO
--this will err with "There is no text for object 'Rptg.ExampleProc'."
EXECUTE sp_helptext 'Rptg.ExampleProc';
GO
REVERT;
GO