首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> SQL Server 資料庫 >> 關於SqlServer

SQL Server 2000 固定伺服器角色、資料庫角色與權限管理完整指南

     編輯:關於SqlServer

兩層角色體系

SQL Server 2000 採雙層權限模型:

  • 伺服器層級:固定伺服器角色 (8 種),跨越所有資料庫。
  • 資料庫層級:固定資料庫角色 + 使用者自訂角色,限定於單一資料庫。

八大固定伺服器角色

角色權限範圍典型授予對象
sysadmin伺服器所有操作,包含其他固定角色權限DBA、BUILTIN\Administrators 成員 (自動)
serveradmin伺服器組態選項 (sp_configure)、關機高級 DBA
setupadmin連結伺服器管理、特定系統預存程序安裝/遷移人員
securityadmin登入管理、密碼重設、讀取錯誤日誌安全管理員
processadmin管理程序 (KILL)、啟動/停止追蹤效能調校人員
dbcreator建立、修改、卸除資料庫開發主管、部署腳本帳號
diskadmin管理磁碟檔案 (資料/記錄檔新增/移除)儲存管理員
bulkadmin執行 BULK INSERTETL/資料載入帳號

關鍵事實:Windows 管理員自動成為 sysadmin

屬於 BUILTIN\Administrators 群組的 Windows 帳號,**自動擁有 sysadmin 權限**,無需在 SQL Server 額外設定。這是常見權限外洩來源,建議:

  • 從 BUILTIN\Administrators 移除不需 DBA 權限的帳號。
  • 或執行 EXEC sp_droplogin 'BUILTIN\Administrators' 移除該群組登入 (需先建立專屬 DBA 登入)。

固定資料庫角色 (每資料庫獨立)

實務操作腳本

新增登入並加入伺服器角色

-- Windows 帳號
EXEC sp_grantlogin 'DOMAIN\User';
EXEC sp_addsrvrolemember 'DOMAIN\User', 'sysadmin';

-- SQL Server 驗證帳號
EXEC sp_addlogin 'etl_user', 'StrongP@ssw0rd', 'MyDB';
EXEC sp_addsrvrolemember 'etl_user', 'bulkadmin';

資料庫使用者與角色對應

USE MyDB;
-- 建立使用者對應登入
EXEC sp_grantdbaccess 'etl_user', 'etl_user';
-- 加入固定資料庫角色
EXEC sp_addrolemember 'db_datawriter', 'etl_user';
EXEC sp_addrolemember 'db_datareader', 'etl_user';

-- 建立自訂角色並授權細粒度權限
EXEC sp_addrole 'role_etl_staging';
GRANT INSERT, UPDATE ON staging_table TO role_etl_staging;
GRANT SELECT ON dim_table TO role_etl_staging;
EXEC sp_addrolemember 'role_etl_staging', 'etl_user';

撤銷與清理

EXEC sp_droprolemember 'db_datawriter', 'etl_user';
EXEC sp_revokedbaccess 'etl_user';
EXEC sp_droplogin 'etl_user';

權限檢查查詢

-- 登入的伺服器角色
SELECT l.name AS LoginName, r.name AS ServerRole
FROM syslogins l
JOIN syssrvrolemembers m ON l.sid = m.sid
JOIN syssrvroles r ON m.srvrole = r.srvrole;

-- 資料庫使用者的角色
USE MyDB;
SELECT u.name AS UserName, r.name AS DbRole
FROM sysusers u
JOIN sysmembers m ON u.uid = m.memberuid
JOIN sysusers r ON m.groupuid = r.uid
WHERE u.issqluser = 1 OR u.isntuser = 1;

最佳實務原則

  1. 最小權限:應用程式帳號僅獲 db_datareader + db_datawriter 或自訂角色,嚴禁 sysadmin/db_owner。
  2. 角色基礎授權:權限授予角色,使用者透過加入角色繼承,便於批次變更。
  3. 定期審計:每季檢視 sysadmin 成員、db_owner 成員、BUILTIN\Administrators 成員。
  4. 分離職責:備份操作員、ETL 載入、開發部署、審計查詢使用不同帳號/角色。

結語

SQL Server 2000 雖已停止支援,其角色權限模型仍是理解後續版本 (含 Azure SQL) 權限體系的基石。掌握固定角色職掌、Windows 群組自動映射機制、角色基礎授權流程,能有效落實最小權限原則,降低內部與外部威脅風險。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved
角色權限
db_owner資料庫所有操作 (含 DROP DATABASE)
db_securityadmin管理角色成員、權限授予
db_accessadmin管理資料庫使用者存取
db_backupoperatorBACKUP DATABASE/LOG、CHECKPOINT
db_ddladmin建立/修改/卸除結構描述物件
db_datareader所有使用者資料表 SELECT
db_datawriter所有使用者資料表 INSERT/UPDATE/DELETE
db_denydatareader拒絕 SELECT
db_denydatawriter拒絕修改