我对所有权链接做了很多研究,但我仍然不确定我是否理解它。
那么:说 table/view/proc 的“所有者”始终是 SCHEMA 是否正确?
如果 A.PROC 访问 B.TABLE,但用户只有 A.PROC 的执行权限,则过程将失败。但是如果 A.PROC 访问 A.TABLE,那么它会被执行吗?那是对的吗 ?
我对所有权链接做了很多研究,但我仍然不确定我是否理解它。
那么:说 table/view/proc 的“所有者”始终是 SCHEMA 是否正确?
如果 A.PROC 访问 B.TABLE,但用户只有 A.PROC 的执行权限,则过程将失败。但是如果 A.PROC 访问 A.TABLE,那么它会被执行吗?那是对的吗 ?
不。请参阅所有权和用户模式分离:
默认情况下,当开发人员在架构中创建对象时,对象归拥有该架构的安全主体所有,而不是开发人员。
...
架构还可以包含由不同用户拥有的对象,并且具有比分配给架构的权限更细化的权限
并且ALTER AUTHORIZATION
:
从 SQL Server 2005 开始,用户可以拥有另一个数据库用户拥有的架构中包含的 OBJECT 或 TYPE。这是 SQL Server 早期版本的行为更改。
因此,如果A.PROC
和B.TABLE
都由 拥有D
,则所有权链接意味着不会进行安全检查B.TABLE
。相反,如果A.PROC
是由拥有并被D
拥有A.TABLE
,E
则所有权链接不适用,并且将进行权限检查。