2018年6月6日 星期三

【MS-SQL】Login, user, role


Login
用來登入的 entity,可以是 SQL 驗證(在 SQL Server 本身的一組帳密),或 Windows 驗證(Domain 或電腦上的使用者、群組)。

建 for Windows 的 Login 時若 domain\group(account) 不存在,Login 會建不起來。

Login 是在 Server 級,而 User、Role 一般自訂在個別資料庫。

建議用法是在 Windows 建 Group 再幫整個 Group 做 Login。

User
用來劃分權限,可以配置 db、schema、table、sp等,作誰可以存取什麼的管控。

Role
組合複數 Users 簡化管控。

ref: SQL Server 的授權

Windows 驗證的權限
當使用 Windows 驗證進入 SQL Server 時,也是判斷這個 Windows 帳號屬於什麼 User 或 Role 來決定存取範圍;Windows Administrator 會自動被加進 Server Roles 的 sysadmin 所以容易忽略驗證的細節。

ref: SQL Server 的驗證

Default 的 Server Role 與 DB role

Server Role
sysadmin = sa
最大權限什麼都可以做

DB role
dbo = db_owner 擁有的資料庫上什麼都可以做
db_securityadmin 可修改管理其他使用者的權限
db_accessadmin 可增加或刪除登入使用者
db_backupoperator 可備份資料庫
db_ddladmin 可執行資料庫定義語言(ddl),如CREATE、ALTER
db_datawriter 可寫、加、刪資料庫裡的資料
db_datareader 可讀資料(SELECT)
db_denydatawriter 禁止寫入的角色
db_denydatareader 禁止讀取的角色

ref: SQL Server 中的伺服器和資料庫角色

MSDN 建議用 Role 對 Schema 作授權範圍

沒有留言:

張貼留言