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

SQL Server 建立登入、使用者與權限授予完整教學

     編輯:關於SqlServer

SQL Server 安全性架構分為「伺服器層級登入」與「資料庫層級使用者」。本文說明從建立登入到精細授權的標準流程與 T-SQL 指令。

核心概念

  • 登入:伺服器層級主體,用於驗證連線(Windows 驗證或 SQL 驗證)。
  • 使用者:資料庫層級主體,對應一個登入,承載資料庫權限。
  • 角色:權限集合,簡化授權管理(伺服器角色 / 資料庫角色)。

標準建立流程

-- 1. 建立 SQL 驗證登入
CREATE LOGIN AppUser WITH PASSWORD = 'StrongP@ssw0rd', DEFAULT_DATABASE = AppDB;
GO

-- 2. 在目標資料庫建立對應使用者
USE AppDB; GO
CREATE USER AppUser FOR LOGIN AppUser;
GO

-- 3. 授予精細物件權限 (推薦)
GRANT SELECT, INSERT, UPDATE, DELETE ON dbo.Orders TO AppUser;
GRANT EXECUTE ON dbo.usp_GetOrderDetail TO AppUser;

-- 4. 或授予資料庫角色 (簡易但權限較粗)
ALTER ROLE db_datareader ADD MEMBER AppUser;
ALTER ROLE db_datawriter ADD MEMBER AppUser;

舊版相容指令 (SQL 2000 風格,仍支援但不推薦新專案使用)

-- 建立登入
EXEC sp_addlogin 'AppUser', 'StrongP@ssw0rd', 'AppDB';
-- 授予資料庫存取
USE AppDB; EXEC sp_grantdbaccess 'AppUser';
-- 授予表權限
GRANT SELECT, UPDATE ON TestTable TO AppUser;

權限層級與常用 GRANT 語法

層級範例說明
伺服器GRANT CONTROL SERVER TO Login;相當於 sysadmin
資料庫GRANT CREATE TABLE TO User;資料庫 DDL 權限
結構描述GRANT SELECT ON SCHEMA::Sales TO User;整個 Schema 物件
物件GRANT SELECT, INSERT ON dbo.Orders TO User;最精細、推薦
欄位GRANT UPDATE ON dbo.Orders (Status) TO User;欄位級權限

常用系統角色

  • 伺服器角色: sysadmin, securityadmin, serveradmin, dbcreator, diskadmin, processadmin, setupadmin, bulkadmin。
  • 資料庫固定角色: db_owner, db_securityadmin, db_accessadmin, db_backupoperator, db_ddladmin, db_datareader, db_datawriter, db_denydatareader, db_denydatawriter。
  • 自訂角色: CREATE ROLE AppReadOnly; GRANT SELECT ON SCHEMA::dbo TO AppReadOnly;

最佳實務建議

  1. 最小權限原則: 僅授予業務必要的精細物件權限,避免直接加入 db_owner。
  2. 使用 Windows 驗證: 避免密碼管理風險,利用 AD 群組管理登入。
  3. 應用程式連線: 使用專用低權限登入,嚴禁使用 sa 或 sysadmin 帳號。
  4. 定期稽核: SELECT * FROM sys.database_permissions WHERE grantee_principal_id = USER_ID('AppUser');
  5. 包含式資料庫 (Contained DB): SQL 2012+ 可建立無登入的資料庫使用者,簡化移轉。

掌握登入/使用者/角色三層架構與 GRANT/DENY/REVOKE 指令,即可建立安全合規的 SQL Server 權限體系。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved