SQL Server Roles 角色權限範疇


  1. 伺服器層級角色 Server Lever Roles
    1. Sysadmin
    2. Serveradmin
    3. Securityadmin
    4. Processadmin
    5. Setupadmin
    6. Bulkadmin
    7. Diskadmin
    8. Dbcreator
    9. Public
  2. 資料庫層級角色 DB Level Roles
    1. db_onwer
    2. db_securityadmin
    3. db_backupoperator
    4. db_ddladmin
    5. db_datawriter
    6. db_datareader
    7. db_denydatawriter
    8. db_denydatareader
    9. 檢視資料庫權限的完整方式
  3. 參考資料

筆記 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