我是一名开发人员,希望我的 DBA 授予一组用户权限以在模式 [Rptg] 中执行存储过程并查看结果,但无法查看存储过程中的 t-sql 代码。他们将使用 Azure Data Studio 连接并执行存储过程。我们应该首先创建一个角色吗?
问问题
986 次
2 回答
2
你绝对应该使用角色。要确定角色成员无法查看 proc 的文本,您可以添加:
deny view permission on dbo.procx to role25;
拒绝对架构的许可
DENY VIEW DEFINITION ON SCHEMA::Products to role25;
于 2019-03-06T20:34:50.867 回答
1
下面的示例授予角色对 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
于 2019-03-06T23:47:42.833 回答