Sql-Server-2005

SQL 2005 權限優先級

  • December 7, 2011

非常簡單的問題 - 我有兩個數據庫角色(基本、管理員)。假設我明確拒絕從表 A 中刪除 Basic 角色並將其授予 Admin 角色。如果我是兩個角色的使用者,我可以從表 A 中刪除嗎?

從來沒有一個簡單的答案…

對於直接 DELETE,兩個角色中的使用者將無法在檢查權限
DELETE DENY 始終具有優先權

對於間接通過儲存過程,如果 table 和 proc 具有相同的所有者,則可能*不會檢查權限。*所以 GRANT 和 DENY 都將被忽略。這稱為“所有權連結”

就個人而言,我並沒有真正使用 DENY。原因如下:

在您的情況下,您只需要GRANT DELETEAdmin 角色。Basic 角色既不需要DENY也不需要GRANT(但執行REVOKE DELETE以刪除 Basic DELETE 權限)

  • 缺少 DELETE 權限(通過 REVOKE)意味著僅基本使用者的 DELETE 將失敗。不需要拒絕來防止這種情況。
  • 管理員使用者(無論是否具有兩個角色)都具有 GRANT,因此 DELETE 將成功。沒有拒絕阻止他們

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