我对 SQL Server 安全性感到有些困惑
我们有一个登录名和一个用户:
test
我们有一张桌子:
dbo.tblSessionFilter
用户测试对此表没有选择和删除权限(我测试过这个!!)
然后我们有一个程序:
create procedure dbo.procFilter_Clear with execute as caller as delete from dbo.tblSessionfilter where spid = @@SPID
用户测试对此过程有执行权。
现在,用户 test可以调用此过程并可以从表中删除条目;虽然他没有直接删除表的权限,而且程序是execute as caller
!
这怎么可能?
可能是因为过程和表在同一个模式中吗?