劉 寧 劉 滔 王 斌/江西建設(shè)職業(yè)技術(shù)學(xué)院
SQL Server的安全管理機制
劉 寧 劉 滔 王 斌/江西建設(shè)職業(yè)技術(shù)學(xué)院
微軟公司的數(shù)據(jù)庫管理系統(tǒng)SQL Server已經(jīng)在越來越多的管理信息系統(tǒng)中布署,隨之而來的數(shù)據(jù)安全與保護問題也越來越重要。SQL Server對于維護數(shù)據(jù)庫管理系統(tǒng)提供了一系列的管理機制。對于這些管理機制本文作一個概括性的總結(jié),以供讀者參考。
SQL Server;安全管理
SQL Server是微軟公司開發(fā)的一套數(shù)據(jù)庫管理系統(tǒng),隨著微軟公司的Windows操作系統(tǒng)在桌面領(lǐng)域的強勢布局,以及微軟公司的集成開發(fā)環(huán)境Visual Studio與SQL Server的無縫連接,使得SQL Server的應(yīng)用極大的豐富,越來越多的管理信息系統(tǒng)在服務(wù)器端使用SQL Server。與此同時,數(shù)據(jù)的安全保護越發(fā)的重要,在這一方面,SQL Server提供了諸多的安全管理機制以保障用戶的數(shù)據(jù)安全。
SQL Server的安全模型共有三個層次,分別是服務(wù)器安全、數(shù)據(jù)庫安全和數(shù)據(jù)庫對象的訪問權(quán)限安全。
服務(wù)器安全針對服務(wù)器實例的賬戶、配置、設(shè)備等方面的安全管理。
數(shù)據(jù)庫安全針對數(shù)據(jù)庫用戶、數(shù)據(jù)庫的備份、恢復(fù)等功能的管理。
數(shù)據(jù)庫對象的訪問權(quán)限安全定義用戶對數(shù)據(jù)庫中數(shù)據(jù)對象的引用、數(shù)據(jù)操作語句的許可權(quán)限。
SQL Server有二種身份驗證模式,分別為Windows身份驗證模式和SQL Server身份驗證模式。
Windows身份驗證模式指登錄SQL SERVER系統(tǒng)的用戶身份由Windows系統(tǒng)來進行驗證。SQL SERVER身份驗證又稱為混合驗證模式,是指登錄SQL SERVER系統(tǒng)時,其身份驗證由Windows和SQL SERVER共同進行。
使用Windows身份驗證登錄SQL SERVER,該登錄帳戶必須存在于Windows帳戶數(shù)據(jù)庫中。管理員使用系統(tǒng)存儲過程sp_ grantlogin來允許一個Windows用戶或組連接到SQL SERVER,或使用sp_denylogin系統(tǒng)存儲過程阻止Windows用戶連接到SQL SERVER,以及使用sp_revokelogin系統(tǒng)存儲過程刪除登錄到SQL SERVER的登錄條目。
使用SQL SERVER身份驗證則必須提供用戶名與密碼,可使用sp_addlogin系統(tǒng)存儲過程來創(chuàng)建新的SQL SERVER登錄,或使用sp_droplogin系統(tǒng)存儲過程刪除SQL SERVER登錄。
服務(wù)器角色是SQL SERVER服務(wù)器安全模型中定義的管理員組,不同的服務(wù)器角色具備特定的服務(wù)器操作權(quán)限,可以為某些用戶指定某些服務(wù)器角色,使其具備該角色所具備的權(quán)限。固定的服務(wù)器角色不能增加、修改和刪除,但服務(wù)器角色所分配的用戶可以增加、修改和刪除。可使用系統(tǒng)存儲過程sp_ addsrvrolemember和sp_dropsrvrolemember對帳戶進行固定服務(wù)器角色的分配與回收。
當(dāng)用戶安全登錄到SQL SERVER服務(wù)器后,訪問數(shù)據(jù)庫時的安全則是用戶的數(shù)據(jù)庫訪問權(quán)。數(shù)據(jù)庫的訪問權(quán)通過數(shù)據(jù)庫的用戶和登錄SQL SERVER服務(wù)器的帳戶間的關(guān)系來實現(xiàn),是數(shù)據(jù)庫級的安全模型。在每個數(shù)據(jù)庫中創(chuàng)建數(shù)據(jù)庫用戶,使之達到指定帳戶才能夠訪問本數(shù)據(jù)庫,可使用系統(tǒng)存儲過程sp_ grantdbacceSQL Server來建立登錄用戶與數(shù)據(jù)庫用戶的映射,使用系統(tǒng)存儲過程sp_revokedbacceSQL Server解除映射關(guān)系。
固定數(shù)據(jù)庫角色存在于每一個數(shù)據(jù)庫中,管理員可以將任何有效的數(shù)據(jù)庫用戶添加為固定的數(shù)據(jù)庫角色成員,每個成員獲得該角色權(quán)限,用戶不能增加、修改、刪除固定數(shù)據(jù)庫角色,管理員可使用系統(tǒng)存儲過程sp_addrolemember將用戶添加到數(shù)據(jù)庫角色中,或使用系統(tǒng)存儲過程sp_droprolemember刪除用戶的某一數(shù)據(jù)庫角色。
用戶自定義角色則是根據(jù)需要,建立具有某種公共許可權(quán)限的用戶組。可使用系統(tǒng)存儲過程sp_addrole創(chuàng)建用戶自定義角色或使用系統(tǒng)存儲過程sp_droprole刪除自定義的角色。
初創(chuàng)建的用戶自定義角色的所有者為dbo,且該角色不具有任何權(quán)限,需進行權(quán)限管理。
還有一類應(yīng)用程序角色,一般是非活動的,需要用密碼激活,只在應(yīng)用程序中生效,連接斷開即失效,不作討論。
語句許可權(quán)限指在創(chuàng)建數(shù)據(jù)庫或數(shù)據(jù)庫中對象所涉及的活動,所需要的許可權(quán)限,包括:Backup Database、Backup Log、Create Database、Create Default、Create Function、Create Procedure、Create Rule、Create Table、Create View。
對象許可權(quán)限指用戶操作數(shù)據(jù)庫中的對象所需要的操作權(quán)限,包括對數(shù)據(jù)庫對象的SELECT、INSERT、UPDATE、DELETE、EXECUTE權(quán)限。
預(yù)定義許可權(quán)限控制由預(yù)定義系統(tǒng)角色的成員或數(shù)據(jù)庫對象所有者執(zhí)行的活動,例如sysadmin固定服務(wù)器角色成員自動繼承在SQL SERVER中進行安裝、操作和查看的全部權(quán)限等。
使用GRANT語句進行權(quán)限的授予,使用DENY語句進行權(quán)限的拒絕,使用REVOKE語句進行權(quán)限的廢除。
SQL SERVER中的安全管理層次多,從服務(wù)器安全、數(shù)據(jù)庫安全到用戶安全等方面,安全管理的方式也較多,固定服務(wù)器角色、數(shù)據(jù)庫角色以及用戶權(quán)限分配都需要管理員及使用者有較深刻的認識,對數(shù)據(jù)的安全才能起到更好的保護。
[1]趙杰,李濤,朱慧.SQL Server數(shù)據(jù)庫管理、設(shè)計與實現(xiàn)教程[M].清華大學(xué)出版,2008.7.
[2]邢紅剛.SQL Server數(shù)據(jù)庫的安全問題的思考[J].科技資訊,2008.
[3]吳溥峰,張玉清.?dāng)?shù)據(jù)庫安全綜述[J].計算機工程,2006.