我可以信任預設數據庫角色的有效權限嗎?
我已經為特定使用者執行的某些測試授予了
db_datareader
和角色的成員資格。db_datawriter
看著每個角色的名字,我就知道這些角色做了什麼。但是,我想看看權限分配在哪裡,以便更好地理解。
db_datareader
令我驚訝的是,我看到該數據庫的架構一片空白。我繼續閱讀了解 SQL Server 固定數據庫角色,從那裡我知道為什麼我在該屬性對話框中看不到任何內容:這個角色的問題是權限是隱式的。這意味著如果您查詢 sys.database_permissions,您將不會看到授予 db_datareader 角色或直接授予使用者的任何權限。因此,如果您需要審核對數據庫中特定表具有 SELECT 訪問權限的每個人,則必須通過使用 sp_helprolemember 查詢該組的成員資格
我知道查詢顯然可以正常工作的角色。所以我認為這可能是 GUI 的限制。我喜歡這個答案中的權限腳本並試了一下。但是,在執行時,返回
NULL
的結果permissiontype
與permissionstate
上述引用一致。綜上所述,這些預先設定好的角色是絕對可靠的嗎?我可以假設沒有人可以弄亂他們各自權限的隱含性質,即您不能
select
從db_datareader
幕後刪除權限嗎?
你的問題:
這些預先設定好的角色是萬無一失的嗎?我可以假設沒有人可以弄亂他們各自權限的隱含性質,即您不能在幕後從 db_datareader 中刪除選擇權限嗎?
根據MSDN 上的文件,固定的數據庫角色,包括
db_datareader
並且db_datawriter
不能修改:這些角色存在於所有數據庫中。分配給固定數據庫角色的權限不能更改。
因此,您可以放心,通過這些角色分配的權限是固定的,無法修改。
授予會員資格
db_datareader
相當於做GRANT SELECT ON DATABASE::[db-name] TO [principal];