[英]SQL Server : permissions to only allow execute on some stored procedures
[英]SQL Server stored procedures and permissions
是否可以拒绝SQL Server中所有内容的权限(例如,选择,插入等)并通过存储过程提供临时权限。 我想只使用存储过程来访问sql数据库中的数据。
这可能还是有另一种方式?
这是一个支持我的SQL Server的好模式。
基本上,如果proc和表具有相同的所有者(通常是dbo),那么对存储过程具有权限的人根本不需要任何表权限。 它被称为所有权链接
注意:在这种情况下,不会检查表的权限,因此也会忽略显式的“DENY权限”(DENY与“no permissions”不同)
这同样适用于视图,函数等(例如视图调用表,proc调用视图,......)
是的,这称为ownership chaining
,如果你给proc执行权限,用户将能够执行proc并且它将起作用,他将获得数据
如果他然后尝试从SSMS中的表中进行选择则不起作用(假设他不在数据阅读器或更高的角色中)
请记住,动态SQL会破坏ownership chaining
,如果存储过程中有动态SQL,则在这种情况下需要额外的权限
这不仅适用于存储过程,也适用于视图。
通常,您可以为视图或sproc等“更高级别”对象授予用户权限,而无需在基础表上授予相同的用户权限。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.