WITH EXECUTE AS OWNER是否授予跨数据库权限?

问题描述 投票:0回答:1

假设我有

[DataBase1].[dbo].[MyStoredProc]
。它修改
[DataBase1].[dbo].[HarmlessTable]
[DataBase2].[dbo].[DangerousTable]
。请注意,它们不在同一个数据库中。考虑一个用户拥有
[DataBase1]
中的所有相关权限,但在
[DataBase2]
中完全没有权限。

如果我将

WITH EXECUTE AS OWNER
放入
[DataBase1].[dbo].[MyStoredProc]
,他们是否能够运行该存储过程并编辑
[DataBase2].[dbo].[DangerousTable]

sql-server tsql permissions impersonation cross-database
1个回答
0
投票

来自文档

业主

指定模块内的语句在模块当前所有者的上下文中执行。

在这种情况下,模块的所有者将是创建 [DataBase1].[dbo].[MyStoredProc]

user
。用户没有其所在数据库之外的权限。他们的登录可能会这样做,但这并不相关(此处的示例)。

鉴于您只是复制用户的权限,而用户没有相关数据库之外的权限,

WITH EXECUTE AS OWNER
不会授予跨数据库权限。

© www.soinside.com 2019 - 2024. All rights reserved.