公司管理軟體設計完成,但是日常工作繁忙,向上司提出增加幾個管理者,幫助管理和維護系統,上司同意了,但是要求一定要管理好這幾個管理者使用者,保證資料庫的安全。
修改身份驗證模式
資料庫驗證機制
sqlserver的三層安全模型:
- 需要登入到sqlserver系統,需要登入賬戶
- 需要通路某個資料庫,需要成為該資料庫的使用者
- 需要通路資料庫的表,需要資料庫管理者給自己授權,如增删改查等權限
2種身份驗證模式
Windows身份驗證
用于Windows平台的使用者,不需要提供密碼和Windows內建驗證,因為windows系統本身就有管理和驗證登入使用者的能力。
優點:
- 使用者的管理交給windows系統管理,而資料庫管理者專注于資料庫庫管理
- 可以利用windows的賬戶管理的功能,包括安全驗證,加密,稽核,密碼過期,最小密碼長度,賬戶鎖定等,不需要在sqlserver中另外建立一個登陸驗證機制
混合驗證
适用于各種平台作業系統,以及Internet使用者,使用sqlserver使用者名和密碼登陸資料庫伺服器,及時網絡上的客戶機沒有伺服器作業系統的賬戶也可以登陸并使用sqlserver資料庫,很友善。
設定混合驗證模式
在資料庫執行個體上右鍵,選擇屬性

選安全性标簽,選擇sqlserver和windows身份驗證模式,選擇僅限失敗的登入,确定。
建立系統登入使用者
這裡準備建立一個windows使用者和sqlserver使用者
建立windows登入使用者
打開安全性節點,右鍵登入名,選擇建立登入名
選擇正常,登入名必須是一個已經存在的windows賬戶,不确定這個賬戶是否存在可以通過右邊的搜尋來看,選擇windows身份驗證
預設資料庫為master(預設),然後确定。
建立sqlserver登入使用者
第一步也是打開建立登入名視窗
然後登入名可以自定義SQLuser,選擇sqlserver身份驗證,密碼是SQLuser,去掉勾選的“強制實施密碼政策”,确定。
對于密碼設定需要說明一下子:
強制實施密碼政策:
對使用者輸入的密碼格式進行要求,實施密碼複雜性政策時,新密碼需要符合以下原則:
- 密碼不得包含全部或部分使用者賬戶名,部分賬戶名是3個以上2端使用空格(空格,制表符,回車),逗号(,),句點(.),連接配接符(-),下劃線(_)或數字元号(#)連接配接的字母數字
- 密碼長度至少為8個字元
- 密碼包含大寫字母(A-Z),小寫字母(a-z),數字(0-9),符号(!,$,#,%)中的3類
- 密碼最長為128字元,使用的密碼應盡可能長,盡可能複雜
強制密碼過期:
密碼過期政策用于管理密碼的使用期限,在規定過期的時間節點,必須更換密碼,系統将提醒使用者進行該操作,并禁用帶有過期密碼的賬戶。
使用者在下次登入必須更換密碼:
這個就是和名字描述的一樣。現在,取消選中“強制實施密碼政策”複選框即可。
資料庫使用者的建立和管理
登入使用者隻能登入到sqlserver系統,通路資料庫,必須成為資料庫的使用者才可以。
如果沒有設定會提示沒有權限
資料庫使用者
資料庫擁有自己的使用者,一個登陸使用者可以印射為多個資料庫使用者,資料庫有2個預設使用者:
- dbo,就是Database Owner資料庫擁有者,資料庫的建立者,擁有資料庫的最高權限,不能被删除
- guest,可以在除了master和tempdb之外的所有資料庫中添加,删除該使用者
預設情況下,建立的資料庫沒有guest賬戶
資料庫使用者權限
sqlserver中權限有3種:
- 預設權限,使用者在成為固定伺服器,資料庫角色同時自動獲得的角色
- 對象權限,在資料庫層次的通路和操作權限,比如選擇,更新,插入,删除表,列,視圖,更改,控制,引用,檢視定義,檢視跟蹤,接管所有權
- 語句權限,create\alter\drop database,table,view,backup database
權限類型
有3種:
- 授予,允許使用者具有操作權限
- 具有授予權限,允許使用者将權限授予其他使用者
- 拒絕,拒絕使用者操作權限
windows使用者和sqlserver使用者的設定方式是一樣的。
建立資料庫使用者
打開銷售管理資料庫的安全性節點,右鍵使用者,選擇建立使用者
輸入使用者名和登入名,确定
此時的使用者已經有了資料庫的登入權限,但是還沒有資料表的操作權限
設定使用者權限
現在我們授予SQLuser使用者選擇,插入,更新的權限,并允許他将選擇權限授予其他使用者,但是拒絕他删除的權限
設定對象權限
上面是通過使用者來設定對象權限,現在我們通過對象來設定使用者權限。
權限的修改方法和設定方法一樣,不再贅述。
角色管理
資料庫中很多使用者的類型和權限基本相同,可以引入角色統一管理這些類似的使用者。
角色設定對于比較複雜的資料庫系統很重要,可以友善的管理其中的各類使用者,如果資料庫使用者較少,則角色的作用不那麼突出。
角色
sqlserver可以通過角色統一管理資料庫或伺服器使用者權限,通過修改角色權限來修改所有加入角色的使用者的權限,友善。
sqlserver有2種角色:
- 伺服器角色
- 資料庫角色
用于登入伺服器級别的安全權限,有8種,不可添加或删除,隻能向角色添加使用者成員
- bulkadmin
- dbcreator
- diskadmin
- processadmin
- securityadmin
- serveradmin
- setupadmin
- sysadmin
sa(sysadmin)和public的角色成員身份是不允許被修改的
資料庫角色
其權限設定隻針對相應的資料庫,就是說同樣名稱資料庫角色,在不同的資料庫,權限是不同的。
使用者可以建立資料庫角色,并添加使用者
- db_owner
- db_accessadmin
- db_datareader
- db_datawriter
- db_ddladmin
- db_securityadmin
- db_backoperator
- db_denydatareader
- db_denydatawriter
- public
設定伺服器角色
将角色設定為sysadmin伺服器角色
設定資料庫角色
将銷售管理資料庫的使用者SQLuser設定為db_datawriter資料庫角色
建立資料庫角色
建立資料庫角色Urole,設定角色權限的基本架構為db_datawriter加上db_datareader,并将SQLuser添加到角色中
設定好之後可以看到Urole