как дать разрешение на выполнение, но не просматривать хранимую процедуру на сервере SQL - PullRequest
0 голосов
/ 06 марта 2019

Я разработчик и хочу, чтобы мой администратор баз данных предоставил группе пользователей разрешения на выполнение хранимых процедур в схеме [Rptg] и просмотр результатов, но не смог просмотреть код t-sql в хранимой процедуре.Они будут использовать Azure Data Studio для подключения и выполнения хранимой процедуры.Должны ли мы сначала создать роль?

Ответы [ 2 ]

2 голосов
/ 06 марта 2019

вы определенно должны использовать роли.Чтобы быть уверенным, что участники роли не могут просматривать текст процедуры, вы можете добавить:

deny view permission on dbo.procx to role25;

, чтобы отказать в разрешении на схему

DENY VIEW DEFINITION ON SCHEMA::Products  to role25;
1 голос
/ 07 марта 2019

В приведенном ниже примере предоставляются полномочия на выполнение роли в схеме 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
...