col*_*arn 7 sql-server permissions role sql-server-2012
我只是花了几个小时试图弄清楚应用程序如何有权限执行存储过程。
来自 StackExchange 的TIL:事实证明该ON
子句对于 是可选的GRANT
,允许授予角色对所有内容执行。在我尽力验证语法之后,我不得不嘲笑这个 MSDN 页面的最底部。
CREATE ROLE Test
GRANT EXECUTE TO Test
Run Code Online (Sandbox Code Playgroud)
好的,这很酷(不是最小特权原则)。
但是:我如何发现或检测该授权?
我尝试查看所有 SQL Server Management Studio 登录名、角色、用户和架构权限 GUI,但在任何地方都没有发现这种类型的授权。
在调试时,我发现了有关在查询中枚举权限的问题,虽然这些问题是相关的,但这里的答案既没有提到也没有涵盖这种情况:
我正在寻找识别这种授予(或拒绝)特权方法的最可靠方法。
GRANT EXECUTE TO [principal]
只是一个捷径 GRANT EXECUTE ON DATABASE::<dbname> TO [principal];
您可以使用以下方法进行检查:
SELECT dp.name
, perms.class_desc
, perms.permission_name
, perms.state_desc
FROM sys.database_permissions perms
INNER JOIN sys.database_principals dp ON perms.grantee_principal_id = dp.principal_id
WHERE dp.name = 'MyRole'
Run Code Online (Sandbox Code Playgroud)