繁体   English   中英

SQL Server存储过程和权限

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM