[摘 要] 為了保護數據庫系統中存放的信息的安全,SQL Server 2005的安全控制分為Windows級安全、SQL Server級安全和數據庫級安全3個等級的安全策略。本文主要介紹實施這些策略的相關知識,即登錄管理、用戶管理、角色管理和權限管理等操作的具體實現方法。
[關鍵詞] 信息安全; SQL Server; 數據庫; 實施; 策略
[中圖分類號] TP309; TP393.0 [文獻標識碼] A [文章編號] 1673 - 0194(2013)13- 0066- 03
1 前 言
信息是對各種事物的存在方式、運動狀態和相互聯系特征的一種表達和陳述,信息是一種可共享、能增值、多效性的資源,它的安全對于人類具有特別重要的意義。信息安全的實質就是要保護信息系統中的資源免受各種類型的威脅,防止存放信息的數據庫系統被非法破壞,數據庫中的數據被外泄或肆意更改。數據庫系統的安全也就意味著信息的安全。
數據庫系統不是獨立存在的,因此,數據庫的安全和計算機系統的安全、操作系統的安全及網絡安全是相互依存,互相支持的。數據庫安全性控制有用戶標識和鑒定 、存取控制 、視圖 、審計、 密碼存儲等多種方法。基于教學時限及學生知識體系結構等原因,在SQL Server 2005教學中,我們主要從以下幾個策略入手,介紹實施SQL Server安全控制的方法。
2 SQL Server安全控制策略
SQL Server 2005安全控制策略是采用分層機制來進行權限管理,在每一層都有相應的安全性機制,只有上一層的安全性要求滿足以后,才可以進入下一層,以此確保數據庫安全使用。SQL Server 2005的安全性管理分為Windows級安全性、SQL Server級安全性和數據庫級安全性3個等級,如圖1所示。
2.1 Windows級安全性
Windows級安全性是指在Windows操作系統層次提供的安全控制。也就是說,要訪問SQL Server 服務器,首先要獲得計算機操作系統的使用權,操作系統安全性專門由操作系統管理員或者網絡管理員來實施。SQL Server 采用了集成Windows NT網絡安全性機制,提高了操作系統安全性,同時也提高了數據庫系統的安全性。
2.2 SQL Server級安全性
SQL Server 級的安全性是在SQL Server服務器層次提供的安全控制,該層次通過驗證來實現,SQL Server 級的安全性建立在控制服務器登錄賬戶和密碼的基礎上。SQL Server 采用了標準SQL Server 登錄和集成Windows NT登錄兩種方式。無論使用哪種登錄方式,用戶在登錄時提供的登錄賬戶和密碼,決定了用戶能否獲得SQL Server的訪問權,以及在獲得訪問權以后,用戶在訪問SQL Server時可以擁有的權利。
2.3 數據庫級安全性
數據庫級安全性是指在數據庫層次提供的安全控制,該層次通過授權來實現。授權過程在用戶試圖訪問數據或執行命令的時候出現,所創建的安全賬戶稱為數據庫用戶。用戶登錄SQL Server服務器后,可以訪問哪些數據庫以及對數據庫可以訪問什么內容,其權限都由該層次控制。在默認的情況下只有數據庫的擁有者才可以訪問該數據庫的對象。如果設置登錄賬戶時沒有指定默認的數據庫,則用戶的權限僅僅局限在Master數據庫以內。
3 SQL Server安全策略的實施方法
在下列的實施操作中,我們均以某學院的“學生信息管理”系統為例進行說明,該系統是一個用于管理全院學生基本信息的網絡辦公平臺。
在SQL Server 2005中,我們可以使用SQL Server Management Studio和T-SQL兩種方法進行數據庫的相關操作。本文均以T-SQL的方法進行操作舉例。
3.1 登錄管理
用于連接到SQL Server服務器的賬戶都稱為SQL Server 的登錄。訪問SQL Sever 服務器的前提是擁有一組服務器承認的賬戶和密碼,在通過服務器的驗證后,用戶才能取得使用SQL Sever 服務的基本權利。不同的登錄對不同的數據庫對象可以有不同的訪問權限。
3.1.1 驗證模式
在登錄賬戶的控制上, SQL Server支持兩種身份驗證模式,即“Windows身份驗證模式”和“SQL Server和Windows身份驗證模式(混合驗證模式)”。
Windows身份驗證模式就是讓SQL Server認可Windows NT的安全控制機制,用Windows NT的賬戶和密碼進行驗證。只要用戶登錄Windows NT時所用賬戶和密碼,在SQL Server中已有對應的賬戶和密碼,用戶就能順利登錄SQL Server服務器。采用這個身份驗證模式,只要登錄了Windows NT,登錄SQL Server時就不需要再次輸入賬戶和密碼了。
混合驗證模式使用戶可以使用Windows身份驗證或SQL Server身份驗證與SQL Server實例連接。當用戶用指定的登錄名稱和密碼從非信任連接進行連接時,SQL Server通過檢查是否已設置SQL Server登錄賬戶,以及指定的密碼是否與以前記錄的相匹配,自行進行身份驗證。使用SQL Server和Windows驗證的混合模式時,表示用戶可自行選擇要用Windows登錄或是SQL Server登錄,默認會使用Windows驗證。
3.1.2 管理登錄
登錄屬于SQL Server 2005服務器級的安全策略,要對SQL Server 2005 實施維護和管理,首先需要存在合法的登錄賬戶來連接登錄到服務器上。
(1) 創建登錄。例如,學院為王老師創建名為“teacher_w”的登錄,密碼為“111111”,并指定默認數據庫為“學生信息管理”,則可進行下列操作:
Exec sp_addlogin ’teacher_w’, ’111111’, ’學生信息管理’, ’simplified chinese’
(2) 查看登錄。例如,查詢當前服務器上的所有登錄賬戶的信息可以用下列命令:
Exec sp_helplogins
(3) 刪除登錄。例如,如果學院收回王老師的登錄權限,則可將其登錄名刪除:
Drop login teacher_w
3.2 用戶管理
在數據庫中用戶名與登錄賬戶是兩個不同的概念,一個合法的登錄賬戶只表明其通過了Windows身份驗證或SQL Server 混合身份驗證,但不能表明其可以對數據庫數據和數據對象進行某類操作。
用戶是SQL Server 2005數據庫級的安全策略,用來設置登錄賬戶對數據庫是否有訪問權限,所以在數據庫創建新的用戶前,首先必須存在一個有效的登錄和該用戶對應。SQL Server把登錄名與用戶名的關系稱為映射。用登錄名登錄SQL Server后,在訪問各個數據庫時,SQL Server會自動查詢此數據庫中是否存在與此登錄名關聯的用戶名,若存在就使用此用戶的權限訪問此數據庫,若不存在就是用guest用戶訪問此數據庫。
(1) 新建數據庫用戶。如為王老師創建與其登錄名“teacher_w ”關聯的數據庫用戶“user_w”,在“學生信息管理”中可以用下列操作實現:
Create user user_w For login teacher_w
(2) 查看數據用戶信息:
Exec sp_helpuser
(3) 刪除數據庫用戶。例如,如果收回王老師對數據庫“學生信息管理”的使用權限,則可以刪除為其創建的數據庫用戶“user_w”,那么王老師將無權訪問“學生信息管理”庫,操作如下:
Drop user “user_w”
3.3 角色管理
3.3.1 服務器角色
服務器角色用來設置登錄賬戶對SQL Server本身的使用權限,在SQL Server 2005安裝時就創建了在服務器級別上的預定義角色,每個角色對應著相應的管理權限,并且適用于整個服務器范圍。當一組登錄賬戶登錄服務器具有相同的訪問限權,對每個賬戶分別設置又很麻煩時,我們就可以利用服務器角色對它們進行集中的管理。不能自行建立新的服務器角色,也不能更改服務器角色所擁有的權限。
(1) 固定服務器角色。SQL Server 2005 系統提供了8個固定的服務器角色,即Sysadmin、Serveradmin、Setupadmin、Securityadmin、Processadmin、Dbcreator、Diskadmin、Bulkadmin。其中,Sysadmin的權限最大,可以在服務器中執行任何活動。默認情況下,Windows BUILTIN\Administrators 組(本地管理員組)的所有成員都是Sysadmin固定服務器角色的成員。
(2) 設置服務器角色。例如,如果學院委托王老師為系統管理員,則可將其登錄名“teacher_w”添加到“Serveradmin”服務器角色中,使其在服務器中擁有最大權限,操作如下:
Exec sp_addsrvrolemember’teacher_w ’ ,’Serveradmin’
3.3.2 數據庫角色
登錄賬戶在數據庫中有對應的用戶后就可以訪問該數據庫了,但可以做什么樣的訪問則需通過訪問權限的設置來決定。在SQL Server 2005安裝時,數據庫級別上有一些預定義的角色。在創建每個數據庫時,都會添加這些角色到新創建的數據庫中,每個角色對應著相應的權限。
(1) 固定數據庫角色。SQL Server 2005提供了10個固定數據庫角色。即db_accessadmin、db_backupoperator、db_datareader、db_datawriter、db_ddladmin、db_denydatareader、db_denydatawriter、db_owner、db_securityadmin、public。其中,db_owner在特定的數據庫中具有全部權限。
(2) 設置數據庫角色。例如,假設王老師因工作需要,由系統管理員轉為數據庫系統管理員,為了使其方便管理,可以將其用戶“user_w”添加到數據庫角色“db_owner”中,使其在特定的數據庫中具有全部權限,可通過下列操作實現:
Exec sp_addrolemember’db_owner’ ’user_w’
3.4 權限管理
權限用來指定授權用戶可以使用的數據庫對象及可以對這些數據庫對象執行的操作。
(1) 權限種類:對象權限、語句權限、固定角色權限。
(2) 權限含義。
① 授予權限:允許某個用戶或角色對一個對象執行某種操作或某種語句。
② 拒絕訪問:拒絕某個用戶或角色對一個對象執行某種操作或某種語句,即使其已被授予或繼承了某種權限。
③ 取消權限:不允許某個用戶或角色對一個對象執行某種操作或某種語句,它與拒絕是不同的,它可以通過加入角色來重新獲取允許權。
(3) 權限管理。例如,王老師“user_w”是數據庫“學生信息管理”的用戶,如果只允許王老師對“學生信息管理”中的“學生”表進行查看和插入記錄,但不能進行更改和刪除記錄,如何對王老師進行授權呢?在“學生信息管理”庫中,我們可以進行下列操作:
授予用戶“user_w”查看和插入權限
Grant Select ,Insert On 學生 To user_w
拒絕用戶“user_w”更改和刪除權限
Deny Update,Delete On 學生 To user_w
如果取消王老師的刪除權限,則可進行下列操作:
Revoke Delete On 學生 From user_w
4 SQL Server安全管理注意事項
(1) 提高管理效率。充分利用界面管理方法和模板資源管理器,能有效提高管理效率。
(2) 加強賬號管理。注意賬號密碼,特別是SA用戶等特殊賬號的密碼管理。
(3) 管理好日志。日志可以記載數據庫活動的所有記錄,是安全管理的重要工具。
(4) 管理好擴展存儲過程。從安全角度出發,要特別加強存儲過程,特別是擴展存儲過程的權限控制。如果必要,可以刪除一些不必要的,易被人利用的存儲過程。
(5) 管理好端口。SQL Server數據庫可通過相應程序端口連接訪問,任何人都可能繞過操作系統的安全機制,進入數據庫系統,因此加強端口的管理顯得更加重要。
進入21世紀,隨著信息技術的不斷發展,信息安全問題也日益突出。如何確保信息系統的安全已成為全社會關注的問題。數據庫管理系統作為各行各業信息管理的主要形式,承載著信息保護的重任,這就需要我們更深入地理解SQL Server的安全控制策略,以實現信息系統安全的更高目標。
主要參考文獻
[1] 趙麗輝. SQL Server 2005數據庫技術與應用 [M]. 北京:機械工業出版社,2012:206-228.
[2] 劉志成. SQL Server 2005 實例教程[M]. 北京:電子工業出版社, 2008:247-276.
[3] 蔣文沛. SQL Server 2005 實例教程[M]. 北京:人民郵電出版社, 2009:176-193.