SQL Server Roles 角色權限範疇
2020-12-21
筆記 Server Level Roles 以及 DB Level Roles 各別的角色 (Roles) 有什麼差異。
伺服器層級角色 Server Lever Roles
Sysadmin
SQL Server 權力最大的角色,可以執行各式系統功能、存取所有的資料庫
Serveradmin
權限可以變更伺服器組態以及關閉伺服器
Securityadmin
權限可以 GRANT (授與)、DENY (拒絕) 和 REVOKE (撤銷) 伺服器層級權限。如果此角色擁有資料庫的存取權,也可以 GRANT、DENY 和 REVOKE 資料庫層級權限。此外具有重設 SQL Server Login 密碼的權限。
💡 是一個可以將自己擁有的權限授與給其他登入的角色,特別的是具有該角色的登入可以刪除擁有 sysadmin 角色的登入,一個我得不到,你也不要想有的傢伙。
Processadmin
可以中止運行的 SQL Server Instances Prcoess
💡 原本不具備此角色的登入,執行 sp_who 只能看到自己的連線,具備後則可以看到所有的連線。
Setupadmin
可以使用 T-SQL statements 加入和移除連結的伺服器 (Linked Server)
Bulkadmin
具有執行
BULK INSERT
權限
Diskadmin
可以管理磁碟檔案 (managing disk files)
Dbcreator
權限可以 Create、Alter、drop、Restore 資料庫
💡 雖然具備此角色,但如果沒有該資料庫的擁有權限,仍來無法對資料庫進行 Alter、Drop 及 Restore,權限比想像中的小。
Public
每一個 SQL Server Logins 都具備此角色
資料庫層級角色 DB Level Roles
db_onwer
資料庫層級中權限最大的角色,可以執行任何資料庫的組態和維護管理以及移除(Drop)資料庫。在給予 db_owner 之前可以多確認三分鐘,使用者需要的會不會只是 ddladmin 所具備的權限即可?
db_securityadmin
可以將自訂角色授權(Custom Roles Membership)以及管理權限(Permissions)
db_backupoperator
具有備份資料庫的權限
db_ddladmin
具有執行 Data Definition Language
DDL
command 權限
db_datawriter
具備權限進行新增、刪除以及改變資料在所有的使用者資料表(User Tables)
db_datareader
具備權限讀取所有的使用者資料表(User Tables)
db_denydatawriter
❌強制封鎖資料庫新增、刪除以及改變的權限
db_denydatareader
❌強制封鎖進行資料庫讀取的權限
檢視資料庫權限的完整方式
How to check user database full permissions, including UNMASK.
使用 GUI 工具有些權限不會顯示,例如遮罩加密所使用的 UNMASK,使用下列方式則可以查看資料庫中最詳盡的權限資訊。
SELECT * FROM sys.permissions