Sql-Server

如何將 SELECT 權限授予屬於顯式拒絕的大型組的個人使用者?

  • October 2, 2019

我有一個表 SuperSecretData,它目前設置為通過標準 Active Directory 帳戶“域使用者”拒絕對公司中的每個人進行 SELECT。但是一些特定的個人使用者確實需要能夠從中選擇。實現這一目標的正確方法是什麼?

表屬性 - 權限

DENY 會覆蓋 GRANT,繼承的 DENY 甚至會覆蓋直接的 GRANT。架構或數據庫級別的 DENY 會覆蓋對象級別的 GRANT。

因此,您將無法直接覆蓋 DENY。

您可以創建與 SuperSecretData 相同的使用者擁有的視圖、同義詞或儲存過程,並授予他們訪問權限。

除了我只希望某些特定使用者擁有 SELECT 權限的幾個表之外,有沒有更好的方法將我的 SQL 伺服器上的幾乎所有實體 GRANT SELECT 授予“域使用者”?

是的。永遠不要使用內置角色,始終使用模式級授權。然後,您可以創建單獨的模式以提高安全性。例如

grant select on schema::dbo to ...

而不是內置角色

alter role db_datareader add . . .

或數據庫級授權

grant select to ... 

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