SQL Server Roles 角色權限範疇

2020-12-21

筆記 Server Level Roles 以及 DB Level Roles 各別的角色 (Roles) 有什麼差異。

SQL Server Logo

伺服器層級角色 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

參考資料

Server-Level Roles

Database-Level Roles