Sql-Server

我可以信任預設數據庫角色的有效權限嗎?

  • March 6, 2017

我已經為特定使用者執行的某些測試授予了db_datareader和角色的成員資格。db_datawriter

看著每個角色的名字,我就知道這些角色做了什麼。但是,我想看看權限分配在哪裡,以便更好地理解。

db_datareader令我驚訝的是,我看到該數據庫的架構一片空白。我繼續閱讀了解 SQL Server 固定數據庫角色,從那裡我知道為什麼我在該屬性對話框中看不到任何內容:

這個角色的問題是權限是隱式的。這意味著如果您查詢 sys.database_permissions,您將不會看到授予 db_datareader 角色或直接授予使用者的任何權限。因此,如果您需要審核對數據庫中特定表具有 SELECT 訪問權限的每個人,則必須通過使用 sp_helprolemember 查詢該組的成員資格

我知道查詢顯然可以正常工作的角色。所以我認為這可能是 GUI 的限制。我喜歡這個答案中的權限腳本並試了一下。但是,在執行時,返回NULL的結果permissiontypepermissionstate上述引用一致。

綜上所述,這些預先設定好的角色是絕對可靠的嗎?我可以假設沒有人可以弄亂他們各自權限的隱含性質,即您不能selectdb_datareader幕後刪除權限嗎?

你的問題:

這些預先設定好的角色是萬無一失的嗎?我可以假設沒有人可以弄亂他們各自權限的隱含性質,即您不能在幕後從 db_datareader 中刪除選擇權限嗎?

根據MSDN 上的文件,固定的數據庫角色,包括db_datareader並且db_datawriter不能修改:

這些角色存在於所有數據庫中。分配給固定數據庫角色的權限不能更改。

因此,您可以放心,通過這些角色分配的權限是固定的,無法修改。

授予會員資格db_datareader相當於做GRANT SELECT ON DATABASE::[db-name] TO [principal];

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