Sql-Server

MSSQL 和 ALTER AUTHORIZATION 對錶沒有影響?

  • March 5, 2021

我有一個名為

$$ test $$與所有者 X。 我轉讓了一張桌子的所有權

$$ test $$.$$ table $$(ALTER AUTHORIZATION) 給所有者 Y。 現在,如果我理解正確,即使所有者 X 擁有父模式

$$ test $$,他/她應該無權訪問$$ test $$.$$ table $$因為該表的所有者是 Y,對嗎? 或者我必須DENY在該表上明確授予 X 的權限嗎?

我對此進行了測試,所有者 X 仍然可以訪問

$$ test $$.$$ table $$. 順便說一句,X 不是db_datareaderor的成員db_owner;-)

所以問題是,ALTER AUTHORIZATION如果其他使用者仍然可以訪問它(不管他們是否是父模式的所有者),那麼在對象/表上的目的是什麼?

最好的,邁克

我認為以下引用應該解釋發生了什麼

“架構包含對象的所有權可以轉移到任何數據庫級主體,但架構所有者始終保留架構內對象的 CONTROL 權限。”

https://docs.microsoft.com/en-us/previous-versions/sql/sql-server-2008-r2/ms189462(v=sql.105)

正如@Stephen Morris 所建議的那樣,所有權意味著 CONTROL 權限和 SQL 權限是分層的。因此,模式所有者也對模式包含的實體擁有 CONTROL(完全)權限。

所以問題是,如果其他使用者仍然可以訪問它(無論他們是否是父模式的所有者),那麼對對象/表進行 ALTER AUTHORIZATION 的目的是什麼?

更改對特定對象的授權以使架構所有者不被繼承的一種案例是故意破壞所有權鏈。例如,如果所有對像都在 dbo 模式中,並且特定表具有特別敏感的數據,則可以將該表的所有者更改為無需登錄的使用者。這將防止無意中允許通過 dbo 擁有的過程、視圖或函式中的所有權連結訪問表;只有對錶具有權限(包括繼承權限)的呼叫者才能訪問表(除非證書籤名。

引用自:https://dba.stackexchange.com/questions/286513