《網(wǎng)絡安全技術》課件第4章_第1頁
《網(wǎng)絡安全技術》課件第4章_第2頁
《網(wǎng)絡安全技術》課件第4章_第3頁
《網(wǎng)絡安全技術》課件第4章_第4頁
《網(wǎng)絡安全技術》課件第4章_第5頁
已閱讀5頁,還剩79頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

第4章數(shù)據(jù)庫安全4.1數(shù)據(jù)庫安全概述4.2數(shù)據(jù)庫安全技術4.3SQLServer數(shù)據(jù)庫管理系統(tǒng)的安全性習題

4.1數(shù)據(jù)庫安全概述

數(shù)據(jù)庫是長期存儲在計算機存儲設備上的、可供計算機快速檢索的、有組織的、可共享的數(shù)據(jù)集合。它可以供各種用戶共享,具有最小冗余度和較高的數(shù)據(jù)獨立性。隨著社會的不斷信息化,以數(shù)據(jù)庫為基礎的信息管理系統(tǒng)正在成為政府機關、軍事部門和企業(yè)單位的信息基礎設施。它的應用涉及了幾乎所有的領域,人類社會將越來越依賴數(shù)據(jù)庫技術,同時,數(shù)據(jù)庫中存儲的信息的價值將越來越高,因而如何保證和加強其安全性和保密性,已成為目前迫切需要解決的熱門課題。4.1.1數(shù)據(jù)庫系統(tǒng)面臨的安全威脅

數(shù)據(jù)庫系統(tǒng)由計算機硬件、數(shù)據(jù)庫、數(shù)據(jù)庫管理系統(tǒng)、應用程序、數(shù)據(jù)庫管理員和用戶等部分組成,因此它所面臨的安全威脅可以歸納為以下幾點。

1.計算機硬件故障

數(shù)據(jù)的存儲離不開存儲介質(zhì),因而也就離不開硬件。當支持數(shù)據(jù)庫系統(tǒng)的硬件環(huán)境發(fā)生故障,如地震、水災和火災等自然或意外的事故會導致硬件損壞,進而導致數(shù)據(jù)的損壞和丟失;硬盤損壞導致數(shù)據(jù)庫中數(shù)據(jù)讀不出來;無斷電保護措施而發(fā)生斷電時,也將會造成信息的丟失。

2.軟件故障及漏洞

軟件方面的威脅主要體現(xiàn)在:

1)數(shù)據(jù)庫管理系統(tǒng)

數(shù)據(jù)庫管理系統(tǒng)是位于用戶與操作系統(tǒng)之間的一個數(shù)據(jù)管理軟件。它擔負著防止不合法使用數(shù)據(jù)等數(shù)據(jù)安全性保護功能;保證數(shù)據(jù)的正確性、有效性和相容性的數(shù)據(jù)完整性控制功能;計算機系統(tǒng)的硬件、軟件故障、操作員的失誤以及人為攻擊和破壞時的數(shù)據(jù)庫恢復功能;讓多個用戶共享數(shù)據(jù)時的并發(fā)控制功能等。因此當數(shù)據(jù)庫管理系統(tǒng)本身功能不夠完善,存在著漏洞,或者由于無法預料的故障時,都有可能對數(shù)據(jù)庫系統(tǒng)的安全性構成威脅。

2)應用程序

具有數(shù)據(jù)庫操作功能的應用程序提供了用戶操作數(shù)據(jù)庫中數(shù)據(jù)的平臺,應用程序設計不合理或是在運行中發(fā)生錯誤,都將導致庫中數(shù)據(jù)被篡改、竊取或損壞。

3.人為破壞

在整個數(shù)據(jù)庫系統(tǒng)中,始終離不開人為的干預,人的因素對數(shù)據(jù)庫系統(tǒng)的安全構成了最主要的威脅。

1)數(shù)據(jù)庫管理員

數(shù)據(jù)庫管理員對數(shù)據(jù)庫系統(tǒng)的操作權限最大,專業(yè)知識不夠,不能很好地利用數(shù)據(jù)庫的保護機制和安全策略,不能合理地分配用戶的權限,都可能會產(chǎn)生超過用戶應有級別權限的情況發(fā)生。數(shù)據(jù)庫管理員的責任心不強、未能按時維護數(shù)據(jù)庫(備份、恢復、日志整理等),就會使數(shù)據(jù)庫的完整性受到威脅;未能堅持審核審計日志,就不能及時發(fā)現(xiàn)并阻止黑客或惡意用戶對數(shù)據(jù)庫的攻擊。

2)合法用戶

許多成功的攻擊與受信任的用戶惡意或無意地訪問安全系統(tǒng)有關。不同用戶對數(shù)據(jù)庫的操作權限有所不同,某些用戶對數(shù)據(jù)庫操作的不當,也有可能在其并未意識到的情況下入侵了數(shù)據(jù)庫系統(tǒng),對其作了修改。還有些用戶可能是由于利益的驅(qū)使而修改數(shù)據(jù)庫中的數(shù)據(jù),從而使自己得到更多的利益。

3)非法用戶

非法用戶對數(shù)據(jù)庫系統(tǒng)的破壞往往帶有明確的作案動機。他們有些是無惡意的入侵者,只是想通過攻入大家都認為難以滲入的區(qū)域來證明他們的能力,得到同行的尊敬和認可,但是所造成的后果卻往往是災難性的;有些是內(nèi)部惡意用戶,比如被公司停職、解雇、降職或受到不公正待遇的用戶,他們出于報復,竊取公司數(shù)據(jù)庫中關鍵的數(shù)據(jù),這些數(shù)據(jù)往往可能會轉(zhuǎn)移到競爭對手的手中;有些是工商業(yè)間諜,他們竊取公司或個人的最新研究成果,對其稍加修改后用以獲取巨額利益;還有一些網(wǎng)絡黑客,他們對網(wǎng)絡和數(shù)據(jù)庫的攻擊手段不斷翻新,并研究操作系統(tǒng)和數(shù)據(jù)庫系統(tǒng)的漏洞,設計出千變?nèi)f化的網(wǎng)絡病毒,設法侵入系統(tǒng),直接威脅網(wǎng)絡數(shù)據(jù)庫服務器的安全。4.1.2數(shù)據(jù)庫的安全

數(shù)據(jù)庫安全是指保護數(shù)據(jù)庫,以防止不合法的使用造成的數(shù)據(jù)泄密、更改或破壞,主要包括身份認證、訪問控制、保密性、完整性、可審計性和可用性六方面要求。

1.用戶的身份認證

用戶的身份是系統(tǒng)管理員為用戶定義的用戶名(也稱為用戶標識、用戶帳號、用戶ID),并記錄在計算機系統(tǒng)或數(shù)據(jù)庫管理系統(tǒng)(DataBaseManagementSystem,DBMS)中。用戶名是用戶在計算機系統(tǒng)中或DBMS中的唯一標識。因此,一般不允許用戶自行修改用戶名。

身份認證是指系統(tǒng)對輸入的用戶名與合法用戶名對照,鑒別此用戶是否為合法用戶。若是,則可以進入下一步的核實;否則,不能使用系統(tǒng)。因此,身份認證技術是對進入系統(tǒng)或網(wǎng)絡的用戶身份進行驗證,防止非法用戶進入??梢酝ㄟ^身份鑒別、檢查口令或其他手段來檢查用戶的合法性。

2.訪問控制

訪問控制保證系統(tǒng)的外部用戶或內(nèi)部用戶對系統(tǒng)資源的訪問以及對敏感信息的訪問方式符合組織安全策略。它主要包括出入控制和存取控制。出入控制主要是阻止非授權用戶進入機構或組織。一般是以電子技術、生物技術或者電子技術與生物技術結合來阻止非授權用戶的進入。存取控制指主體訪問客體時的存取控制,如通過對授權用戶存取系統(tǒng)敏感信息時進行安全性檢查,以實現(xiàn)對授權用戶的存取權限的控制。與操作系統(tǒng)相比,數(shù)據(jù)庫的訪問控制要復雜得多。因為數(shù)據(jù)庫中的記錄字段和元素是相互關聯(lián)的,用戶只能通過讀某些文件來確定其內(nèi)容,但卻有可能通過讀取數(shù)據(jù)庫中的其他某個元素來確定另一個元素。換句話說,用戶可以通過推理的方法從已知的記錄或字段間接獲取其他記錄或字段的值。通過推理訪問數(shù)據(jù)庫不需要對安全目標的直接訪問權,因此要限制一些推理,但是限制推理就意味著要禁止一些可能的推理路徑。通過限制訪問來限制推理,也可能限制了合法用戶的正常訪問,使他們感到數(shù)據(jù)庫訪問的效率不高。

3.數(shù)據(jù)庫的機密性

由于數(shù)據(jù)庫系統(tǒng)在操作系統(tǒng)下都是以文件形式進行管理的,因此入侵者可以直接利用操作系統(tǒng)的漏洞竊取數(shù)據(jù)庫文件,或者直接利用操作系統(tǒng)工具來非法偽造、篡改數(shù)據(jù)庫文件內(nèi)容。這種隱患一般數(shù)據(jù)庫用戶難以察覺,解決這一問題的有效方法之一是數(shù)據(jù)庫管理系統(tǒng)對數(shù)據(jù)庫文件進行加密處理,使得即使數(shù)據(jù)不幸泄漏或者丟失,也難以被人破譯和閱讀。數(shù)據(jù)庫中進行加密處理的時候會對數(shù)據(jù)的存取帶來一定的影響,而一個良好的數(shù)據(jù)庫加密系統(tǒng)不能因為加密使得數(shù)據(jù)庫的操作復雜化和影響數(shù)據(jù)庫系統(tǒng)的性能,所以應該滿足以下四個基本要求。

(1)合理處理數(shù)據(jù)。首先要恰當?shù)靥幚頂?shù)據(jù)類型,否則DBMS將會因加密后的數(shù)據(jù)不符合定義的數(shù)據(jù)類型而拒絕加載;其次,需要處理數(shù)據(jù)的存儲問題,實現(xiàn)數(shù)據(jù)庫加密后,應基本上不增加空間開銷。在目前條件下,數(shù)據(jù)庫關系運算中的匹配字段,如表間連接碼、索引字段等數(shù)據(jù)不宜加密。文獻字段雖然是檢索字段,但也應該允許加密,因為文獻字段的檢索處理采用了有別于關系數(shù)據(jù)庫索引的正文索引技術。

(2)不影響合法用戶的操作。加密系統(tǒng)影響數(shù)據(jù)操作響應的時間應盡量短,在現(xiàn)階段,平均延遲時間不應超過1/10秒。此外,對數(shù)據(jù)庫的合法用戶來說,數(shù)據(jù)的錄入、修改和檢索操作應該是透明的,不需要考慮數(shù)據(jù)的加密/解密問題。

(3)字段加密。在目前條件下,加密/解密的粒度是每個記錄的字段數(shù)據(jù)。如果以文件或列為單位進行加密,必然會形成密鑰的反復使用,從而降低加密系統(tǒng)的可靠性或者因加密/解密時間過長而無法使用。只有以記錄的字段數(shù)據(jù)為單位進行加密/解密,才能適應數(shù)據(jù)庫操作,同時進行有效的密鑰管理并完成“一次一密”的密碼操作。

(4)密鑰動態(tài)管理。數(shù)據(jù)庫客體之間隱含著復雜的邏輯關系,一個邏輯結構可能對應著多個數(shù)據(jù)庫物理客體,所以數(shù)據(jù)庫加密不僅密鑰量大,而且組織和存儲工作比較復雜,需要對密鑰實現(xiàn)動態(tài)管理。

4.數(shù)據(jù)庫的完整性

數(shù)據(jù)庫管理系統(tǒng)除了必須確保只有合法用戶才能更新數(shù)據(jù),即必須有訪問控制;還必須能防范非人為的自然災難。數(shù)據(jù)庫完整性包括物理完整性、邏輯完整性和元素完整性,這既適用于數(shù)據(jù)庫的個別元素,也適用于數(shù)據(jù)庫,所以在數(shù)據(jù)庫管理系統(tǒng)的設計中完整性是主要的關心對象。

物理完整性:要求從硬件或環(huán)境方面保護數(shù)據(jù)庫的安全,防止數(shù)據(jù)被破壞或不可讀。它與數(shù)據(jù)庫駐留的計算機系統(tǒng)硬件的可靠性和安全性有關,也與環(huán)境的安全保障措施有關。

邏輯完整性:要求保持數(shù)據(jù)庫邏輯結構的完整性,需要嚴格控制數(shù)據(jù)庫的創(chuàng)建與刪除,數(shù)據(jù)庫表的建立、刪除以及更改操作。它還包括數(shù)據(jù)庫結構和數(shù)據(jù)庫表結構設計的合理性,盡量減少字段之間、數(shù)據(jù)庫表之間不必要的關聯(lián),減少冗余字段,盡可能減少由于修改一個字段的值而影響其他字段的情況。數(shù)據(jù)庫的邏輯完整性主要是設計者的責任,由系統(tǒng)管理員與數(shù)據(jù)庫擁有者負責保證數(shù)據(jù)庫結構不被隨意修改。

元素的完整性:指的是元素的正確性和準確性。由于用戶在搜索數(shù)據(jù)計算結果和輸入數(shù)據(jù)時有可能會出現(xiàn)錯誤,所以數(shù)據(jù)庫管理系統(tǒng)必須幫助用戶在輸入時能發(fā)現(xiàn)錯誤,并在插入錯誤數(shù)據(jù)后能糾正它們,從而避免錯誤數(shù)據(jù)和虛假數(shù)據(jù)送入數(shù)據(jù)庫中。

5.可審計性

為了能夠跟蹤用戶對數(shù)據(jù)庫的訪問,及時發(fā)現(xiàn)對數(shù)據(jù)庫的非法訪問和修改,可能需要對數(shù)據(jù)庫的所有訪問進行記錄。審計功能就是把用戶對數(shù)據(jù)庫的所有操作自動記錄下來放入審計日志(AuditLog)中,一旦發(fā)生數(shù)據(jù)被非法存取,數(shù)據(jù)庫管理員可以利用審計跟蹤的信息,重現(xiàn)導致數(shù)據(jù)庫現(xiàn)有狀況的一系列事件,找出非法存取數(shù)據(jù)的人、時間和內(nèi)容等。由于任何系統(tǒng)的安全保護措施都不可能無懈可擊,蓄意盜竊、破壞數(shù)據(jù)的人總是想方設法打破控制,因此審計功能在維護數(shù)據(jù)安全、打擊犯罪方面是非常有效的。但審計通常是很費時間和空間的,因此數(shù)據(jù)庫管理員(DBA)要根據(jù)應用對安全性的要求,靈活打開或關閉審計功能。

6.可用性

可用性能夠保證合法用戶在需要時訪問到相關的數(shù)據(jù)。數(shù)據(jù)庫可被合法用戶訪問并按要求的特性使用,即當需要時能存取所需數(shù)據(jù)。

4.2數(shù)據(jù)庫安全技術

4.2.1數(shù)據(jù)庫安全訪問控制

數(shù)據(jù)庫的安全訪問模型傳統(tǒng)上有三種:自主訪問控制(DiscretionaryAccessControl,DAC)、強制訪問控制(MandatoryAccessControl,MAC)和基于角色訪問控制(Role-BasedAccessControl,RBAC)。

1.自主訪問控制

DAC是基于用戶身份或所屬工作組來進行訪問控制的一種手段。具有某種訪問特權的用戶可以把該種訪問許可傳遞給其他用戶。在自主型存取控制模型中,系統(tǒng)用戶對數(shù)據(jù)信息的存取控制主要基于對用戶身份的鑒別和存取訪問規(guī)則的確定。當用戶申請以某種方式存取某個資源時,系統(tǒng)就會進行合法身份性檢查,判斷該用戶有無此項操作權限,以決定是否許可該用戶繼續(xù)操作。并且,對某個信息資源擁有某種級別權限的用戶可以把其所擁有的該級別權限授予其他用戶。也就是說,系統(tǒng)授權的用戶可以選擇其他用戶一起來共享其所擁有的客體資源。一般自主型存取控制將整個系統(tǒng)的用戶授權狀態(tài)表示為一個授權存取矩陣。當用戶要執(zhí)行某項操作時,系統(tǒng)就根據(jù)用戶的請求與系統(tǒng)的授權存取矩陣進行匹配比較,通過則允許滿足該用戶的請求,提供可靠的數(shù)據(jù)存取方式,否則拒絕該用戶的訪問請求。

2.強制訪問控制

MAC對于不同類型的信息采取不同層次的安全策略。MAC基于被訪問對象的信任度進行權限控制,不同的信任度對應不同的訪問權限。MAC給每個訪問主體和客體分級,指定其信任度。MAC通過比較主體和客體的信任度來決定一個主體能否訪問某個客體,具體遵循以下兩條規(guī)則:(1)僅當主體的信任度大于或等于客體的信任度時,主體才能對客體進行讀操作,即所謂的“向下讀取規(guī)則”。

(2)僅當主體的信任度小于或等于客體的信任度時,主體才能對客體進行寫操作,即所謂的“向上寫入規(guī)則”。

在關系數(shù)據(jù)庫中,運用強制訪問控制策略可以實現(xiàn)信息的分析分類管理。這樣,具有不同安全級別的用戶只能存取其授權范圍內(nèi)的數(shù)據(jù),同時也保證了敏感數(shù)據(jù)不泄漏給非授權用戶,防止了非法用戶的訪問。因而,提高了數(shù)據(jù)的安全性。

3.基于角色訪問控制

在RBAC中,引入了角色這一重要概念。所謂“角色”,就是一個或一群用戶在組織內(nèi)可執(zhí)行的操作的集合。角色可以根據(jù)組織中不同的工作創(chuàng)建,然后根據(jù)用戶的職責分配角色,用戶可以輕松地進行角色轉(zhuǎn)換。RBAC的思想核心是安全授權和角色相聯(lián)系,用戶首先要成為相應角色的成員,才能獲得該角色對應的權限。這大大簡化了授權管理,角色可以根據(jù)組織中不同的工作創(chuàng)建,然后根據(jù)用戶的責任和資格分配角色。用戶可以輕松地進行角色轉(zhuǎn)換,而隨著新應用和新系統(tǒng)的增加,角色可以分配更多的權限.也可以根據(jù)需要撤銷相應的權限。實際表明把管理員權限局限在改變用戶角色上,比賦予管理員更改角色權限更安全。RBAC的最大優(yōu)勢在于授權管理的便利性,一旦一個RBAC系統(tǒng)建立起來后,主要的管理工作即為授權或取消用戶的角色。RBAC的另一優(yōu)勢在于系統(tǒng)管理員在一種比較抽象的層次上控制訪問,與企業(yè)通常的業(yè)務管理相類似。自主型存取控制,一般比較靈活、易用,適用于許多不同的領域。目前,自主型控制存取模型已經(jīng)被廣泛應用到各種商業(yè)和工業(yè)環(huán)境。但是,這種控制模型的缺點也是十分明顯的,它不能提供一個確實可靠的保證,來滿足用戶對于數(shù)據(jù)庫的保護要求。在安全強度要求較高的數(shù)據(jù)庫系統(tǒng)中必須采用強制型存取控制技術,以保證數(shù)據(jù)信息的安全性。基于RBAC模型的數(shù)據(jù)庫系統(tǒng)安全訪問控制機制與傳統(tǒng)的訪問控制機制相比,具有明顯的優(yōu)勢,它可以實現(xiàn)細粒度的訪問控制,能夠控制具體的資源項,并且與策略無關,可以靈活適用于不同的安全策略。4.2.2數(shù)據(jù)庫加密

對數(shù)據(jù)庫的加密可以在OS、DBMS內(nèi)核層和DBMS外層三個不同層次實現(xiàn)。

(1)由于在OS層無法辨認數(shù)據(jù)庫文件的數(shù)據(jù)關系,從而無法產(chǎn)生合理的密鑰,也無法進行合理的密鑰管理和使用,所以,在OS層對數(shù)據(jù)庫文件進行加密,對于大型數(shù)據(jù)庫來說,目前還難以實現(xiàn)。

(2)在DBMS內(nèi)核層實現(xiàn)加密,是指數(shù)據(jù)在物理存取之前完成加密/解密工作。這種方式勢必造成DBMS和加密器(硬件或軟件)之間的接口需要DBMS開發(fā)商的支持。這種加密方式的優(yōu)點是加密功能強,并且加密功能幾乎不會影響DBMS的功能,其缺點是在服務器端進行加密/解密運算,加重了數(shù)據(jù)庫服務器的負載。

(3)在DBMS外層實現(xiàn)加密。這是目前比較實際的一種做法,就是把數(shù)據(jù)庫加密系統(tǒng)做成DBMS的一個外層工具。采用這種加密方式時,加密/解密運算可以放在客戶端進行。其優(yōu)點是不會加重數(shù)據(jù)庫服務器的負載并可實現(xiàn)網(wǎng)上傳輸加密,缺點是加密功能會受一些限制?!岸x加密要求工具”模塊的主要功能是定義如何對每個數(shù)據(jù)庫表數(shù)據(jù)進行加密?!皵?shù)據(jù)庫應用系統(tǒng)”的功能是完成數(shù)據(jù)庫定義和操作。數(shù)據(jù)庫加密系統(tǒng)將根據(jù)加密要求自動完成對數(shù)據(jù)庫數(shù)據(jù)的加密/解密。數(shù)據(jù)庫加密系統(tǒng)對加密算法的要求是:數(shù)據(jù)庫加密以后,數(shù)據(jù)量不應明顯增加;某一數(shù)據(jù)加密后,其數(shù)據(jù)長度不變;加密/解密速度要足夠快,數(shù)據(jù)操作響應時間應該讓用戶能夠接受。目前,對數(shù)據(jù)庫文件的加密方法和體制很多,但其中比較著名和廣為使用的主要有DES算法和RSA算法。

數(shù)據(jù)庫加密系統(tǒng)能夠有效地保證數(shù)據(jù)的安全,因為所有的數(shù)據(jù)都經(jīng)過了加密,所以即使黑客竊取了關鍵數(shù)據(jù),仍然難以得到所需的信息。另外,數(shù)據(jù)庫加密以后,可以設定不需要了解數(shù)據(jù)內(nèi)容的系統(tǒng)管理員不能見到明文,從而大大提高關鍵數(shù)據(jù)的安全性。4.2.3事務機制

所謂事務,就是指一組邏輯操作步驟使數(shù)據(jù)從一種狀態(tài)變換到另一種狀態(tài)。事務是數(shù)據(jù)庫應用程序的基本邏輯工作單位,在事務中集中了若干個數(shù)據(jù)庫操作,它們構成了一個操作序列,要么不做,要么全做,是一個不可分割的工作單位。其具有以下四個特性:原子性(Atomicity)、一致性(Consistency)、隔離性(Isolary)以及持久性(Durability)。這些性質(zhì)我們通常稱為ACID特性。

原子性:事務中所有的數(shù)據(jù)庫操作是一個不可分割的操作序列,這些操作要么不做,要么全做;

一致性:事務執(zhí)行的結果將使數(shù)據(jù)庫由一種一致性到達另一種新的一致性;

隔離性:在多個事務并發(fā)執(zhí)行時,事務不必關心其他事務的執(zhí)行,如同在單用戶環(huán)境下執(zhí)行一樣;

持久性:一個事務一旦完成其全部操作,它對數(shù)據(jù)庫的所有更改將永久性地反映在數(shù)據(jù)庫中,即使以后發(fā)生故障也應保留這個事務執(zhí)行的結果。

事務及其四個性質(zhì)保證了故障恢復和并發(fā)控制的順利進行。

1.故障恢復

在數(shù)據(jù)庫系統(tǒng)中,發(fā)生故障是不可避免的,故障的發(fā)生會影響數(shù)據(jù)庫中數(shù)據(jù)的正確性,甚至破壞整個數(shù)據(jù)庫,從而影響數(shù)據(jù)庫系統(tǒng)的可靠性和可用性。因此,從保護數(shù)據(jù)安全的角度出發(fā),我們必須了解數(shù)據(jù)庫系統(tǒng)可能會發(fā)生的故障并且還必須使數(shù)據(jù)庫具有恢復功能?;謴偷幕驹硎菙?shù)據(jù)冗余,即利用冗余存儲在別處的信息和數(shù)據(jù),部分或全部地重建數(shù)據(jù)庫。當發(fā)生事務故障時,保證事務原子性的措施稱為事務故障恢復,簡稱為事務恢復。

2.并發(fā)控制

數(shù)據(jù)庫是一種共享的資源庫,多個用戶程序可以同時存儲數(shù)據(jù)而互不影響。并發(fā)控制是指在多用戶的情況下,對數(shù)據(jù)庫的并行操作進行規(guī)范的機制,控制并發(fā)事務之間的交互操作。目的是為了避免數(shù)據(jù)的丟失和修改、無效數(shù)據(jù)的讀出與不可重復讀數(shù)據(jù)等,從而保證了數(shù)據(jù)的正確性和一致性,而且使得每個事務的執(zhí)行看上去是隔離的,與其他事務無關。

4.3SQLServer數(shù)據(jù)庫管理系統(tǒng)的安全性

MicrosoftSQLServer是一個高性能、多用戶的關系型數(shù)據(jù)庫管理系統(tǒng)。它滿足大型的數(shù)據(jù)處理系統(tǒng)和商業(yè)網(wǎng)站的存儲需求,并滿足個人和小型企業(yè)對易用性的要求,是當前最流行的網(wǎng)絡數(shù)據(jù)庫服務器之一。它的安全機制、內(nèi)置的強大管理工具和開放式的系統(tǒng)體系結構為基于事務的企業(yè)級管理方案提供了一個卓越的平臺。SQLServer與網(wǎng)絡操作系統(tǒng)WindowsNT構成了一個集成環(huán)境,是WindowsNT平臺上最好的數(shù)據(jù)庫管理系統(tǒng)之一。4.3.1安全管理

安全管理是數(shù)據(jù)庫管理系統(tǒng)應實現(xiàn)的重要功能之一。SQLServer采用了很復雜的安全保護措施,其安全管理包含兩個層次:一是對用戶是否有權限登錄到系統(tǒng)以及如何登錄的管理;二是對用戶操作的對象以及如何操作進行權限的控制。也就是說,如果要對某一數(shù)據(jù)庫進行訪問操作,必須滿足以下的三個條件:

登錄SQLServer服務器時必須通過身份認證;

必須是所訪問數(shù)據(jù)庫的用戶;

必須有執(zhí)行訪問操作的權限。

具體的,SQLServer的安全管理主要包括以下四個方面:服務器登錄管理、數(shù)據(jù)庫用戶管理、角色管理和數(shù)據(jù)庫權限管理。

1.服務器登錄管理

SQLServer提供了兩種身份認證方式對用戶的登錄進行驗證,分別是Windows認證方式和SQLServer認證方式。SQLServer數(shù)據(jù)庫管理系統(tǒng)通常運行在Windows平臺上,而Windows作為網(wǎng)絡操作系統(tǒng),本身就具備管理登錄和驗證用戶合法性的權力,因此Windows認證方式正是利用這個特點,允許SQLServer可以使用Windows的用戶名和密碼,用戶只需要通過Windows的認證,就可以連接到SQLServer上。而SQLServer認證方式是由SQLServer完全負責管理和維護數(shù)據(jù)庫服務器上的登錄。對應于這兩種不同的認證方式,SQLServer管理的登錄帳號也有兩種:Windows登錄帳號和SQLServer登錄帳號。所有的登錄帳號信息存儲在系統(tǒng)數(shù)據(jù)庫master表syslogins中。

對SQLServer數(shù)據(jù)庫管理系統(tǒng)登錄帳號的管理有兩種方法:一種是通過企業(yè)管理器(SQLServerEnterpriseManager)來實現(xiàn);一種是通過系統(tǒng)存儲過程來實現(xiàn)。這兩種方法也同樣適用于用戶、角色和權限的管理。

【例4.1】使用系統(tǒng)存儲過程sp_addlogin創(chuàng)建登錄帳號,登錄名為Joe,密碼為123。

sp_addlogin‘Joe’,‘123’

使用系統(tǒng)存儲過程sp_droplogin刪除登錄帳號,登錄名為Joe。

sp_droplogin'Joe'

2.數(shù)據(jù)庫用戶管理

用戶登錄到SQLServer服務器后必須是某個數(shù)據(jù)庫的用戶才能夠被授予一定的權限操作該數(shù)據(jù)庫,因此SQLServer數(shù)據(jù)庫用戶實際上是用于管理數(shù)據(jù)庫使用的對象,而用戶對數(shù)據(jù)庫的操作能力取決于用戶的權限。用戶的信息均儲存在數(shù)據(jù)庫的系統(tǒng)表sysusers中。下面的例子描述了如何利用系統(tǒng)存儲過程管理數(shù)據(jù)庫的用戶。

【例4.2】使用系統(tǒng)存儲過程sp_adduser將登錄帳戶Joe創(chuàng)建為數(shù)據(jù)庫Northwind的用戶。

useNorthwind

sp_adduser‘Joe’,‘joe’

使用系統(tǒng)存儲過程sp_dropuser刪除數(shù)據(jù)庫Northwind的用戶joe。

useNorthwind

sp_dropuser'joe'

3.角色管理

在SQLServer中,把相同權限的一組用戶(例如:公司某部門的所有人員)設置為某一角色后,對于屬于同一角色的用戶可以進行統(tǒng)一的管理,當對該角色進行權限設置時,這些用戶就自動賦予該角色所有的權限,這樣只要對角色進行權限管理,就可以實現(xiàn)對屬于該角色的所有用戶的權限管理,極大地減輕了管理的負擔。

SQLServer的角色分為兩大類:固定服務器角色和數(shù)據(jù)庫角色。

1)固定服務器角色

固定服務器角色提供了服務器級的管理權限分組,它們獨立于用戶數(shù)據(jù)庫之外,并且不能對其添加、修改和刪除權限。SQLServer中的固定服務器角色如表4.1所示。表4.1固定服務器角色

2)數(shù)據(jù)庫角色

數(shù)據(jù)庫角色提供了數(shù)據(jù)庫級的管理權限分組。它分為固定數(shù)據(jù)庫角色和用戶自定義數(shù)據(jù)庫角色兩種。固定數(shù)據(jù)庫角色是每個數(shù)據(jù)庫專有的,不能對其進行添加、修改和刪除權限。用戶自定義數(shù)據(jù)庫角色是用戶根據(jù)自己的需求自定義出適合自己權限管理的角色,方便于對角色的用戶進行權限控制。SQLServer中的固定數(shù)據(jù)庫角色如表4.2所示。

對于角色的管理,SQLServer提供了一些系統(tǒng)存儲過程,如表4.3所示。表4.2固定數(shù)據(jù)庫角色表4.3系統(tǒng)存儲過程

【例4.3】使用系統(tǒng)存儲過程sp_addsrvrolemember將登錄帳戶Joe加入服務器角色Systemadministrators中,使其成為該服務器角色的成員。

sp_addsrvrolemember‘Joe’,‘sysadmin’

使用系統(tǒng)存儲過程sp_dropsrvrolemember將登錄帳戶Joe從服務器角色Systemadministrators中刪除,使其不再具有該服務器角色的權限。

sp_dropsrvrolemember'Joe'

4.數(shù)據(jù)庫權限管理

當用戶以某種驗證方式登錄到SQLServer服務器而且是某個數(shù)據(jù)庫的用戶后,還必須授予一定的權限才能夠訪問存取數(shù)據(jù)庫的數(shù)據(jù)。設置用戶對數(shù)據(jù)庫的操作權限稱為授權,未授權的用戶將無法訪問或存取數(shù)據(jù)庫的數(shù)據(jù)。SQLServer有三種類型的權限:語句權限、對象權限和預定義權限。

1)語句權限

在數(shù)據(jù)庫管理系統(tǒng)中創(chuàng)建數(shù)據(jù)庫或者其他對象時所受到的權限控制稱為語句權限。語句權限如表4.4所示。表4.4語句權限

2)對象權限

使用數(shù)據(jù)或者執(zhí)行程序的活動受到的權限控制稱為對象權限,包括表和視圖權限、列權限和存儲過程權限等。對象權限如表4.5所示。表4.5對象權限

3)預定義權限

只有固定角色的成員或者數(shù)據(jù)庫對象的所有者(DBO)才能夠執(zhí)行某些活動,執(zhí)行這些活動的權限稱為預定義權限。

對用戶而言,權限管理主要針對對象權限和語句權限,通常權限有三種狀態(tài),即授予權限(GRANT)、撤銷權限(RECOKE)和拒絕訪問(DENY)。

【例4.4】在數(shù)據(jù)庫Northwind中,將創(chuàng)建表和視圖的權限授予用戶joe。

GRANTCREATETABLE,CREATEVIEWtojoe4.3.2備份與恢復

在日常工作中,硬件故障、軟件錯誤、計算機病毒、人為誤操作、惡意破壞甚至自然災害等諸多因素都可能發(fā)生,從而造成運行事務的異常中斷,影響數(shù)據(jù)的正確性,甚至破壞數(shù)據(jù)庫,使數(shù)據(jù)庫中的數(shù)據(jù)部分或者全部丟失,給用戶造成無法估量的損失,因此如何防止數(shù)據(jù)丟失是用戶所面臨的最重要的問題之一。SQLServer的備份和恢復為保護存儲在數(shù)據(jù)庫中的關鍵數(shù)據(jù)提供了重要的工具。

1.數(shù)據(jù)備份與恢復的概念

數(shù)據(jù)備份是指為了防止數(shù)據(jù)丟失,而將系統(tǒng)全部數(shù)據(jù)或者部分數(shù)據(jù)集合從應用主機的硬盤或者磁盤陣列中復制到其他存儲介質(zhì)上的過程。常用的存儲介質(zhì)有磁帶、磁盤和光

盤等。

數(shù)據(jù)備份實際上是一種以增加數(shù)據(jù)存儲的方法保護數(shù)據(jù)安全。許多企業(yè)為了保護重要的數(shù)據(jù),采取了系統(tǒng)定期檢測與維護、雙機熱備份、磁盤鏡像或容錯、備份磁帶異地存放、關鍵部件冗余等多項措施。這些措施一般能夠進行數(shù)據(jù)備份,并且在系統(tǒng)發(fā)生故障后能夠快速恢復系統(tǒng)。數(shù)據(jù)恢復是指在系統(tǒng)數(shù)據(jù)崩潰時利用備份在存儲介質(zhì)上的數(shù)據(jù)將計算機系統(tǒng)恢復到原狀態(tài)的過程。數(shù)據(jù)恢復與數(shù)據(jù)備份是一個相反的過程,數(shù)據(jù)恢復要以備份為基礎,而備份的目的就是為了恢復系統(tǒng)的數(shù)據(jù),使系統(tǒng)迅速恢復運行,避免或者減少因為系統(tǒng)故障而造成的損失。

2.數(shù)據(jù)庫備份的類型

數(shù)據(jù)庫的備份根據(jù)備份時數(shù)據(jù)庫的狀態(tài)分為三種類型:冷備份、熱備份和邏輯備份。

1)冷備份

冷備份是指在數(shù)據(jù)庫關閉的狀態(tài)下對數(shù)據(jù)庫進行備份。備份時數(shù)據(jù)庫將不能被訪問。這種類型的備份通常只采用完全備份,是保持數(shù)據(jù)庫完整性的最好辦法。

2)熱備份

熱備份是指在數(shù)據(jù)庫處于運行的狀態(tài)下對數(shù)據(jù)庫進行備份。在熱備份的同時可以對數(shù)據(jù)庫進行訪問操作,未完成的事務操作熱備份將通過日志來備份,但是應該避免進行修改數(shù)據(jù)庫結構或者執(zhí)行無日志記錄的操作。

3)邏輯備份

邏輯備份是利用數(shù)據(jù)庫管理系統(tǒng)提供的工具或者編程語言對數(shù)據(jù)庫中的某些表進行備份。使用這種方法時數(shù)據(jù)庫必須處于運行的狀態(tài)。對于只需要備份部分數(shù)據(jù)而不需要備份全部數(shù)據(jù)的情況,該方法簡單方便。

3.數(shù)據(jù)庫備份與恢復的策略

數(shù)據(jù)庫備份與恢復是既相反又統(tǒng)一的兩個過程。用戶在備份前要綜合考慮各個方面的因素,根據(jù)數(shù)據(jù)庫的不同規(guī)模和不同用途制定出合適的備份策略。影響制定策略的因素通常包括需要備份的數(shù)據(jù)量的大小、每單位時間數(shù)據(jù)量的增量大小、企業(yè)的工作時間,數(shù)據(jù)庫崩潰時恢復的時間要求等。數(shù)據(jù)庫備份的策略包括確定備份的方法(如采用完全數(shù)據(jù)庫備份、差異數(shù)據(jù)庫備份、事務日志備份還是混合的方法)、備份的周期(如以月、周還是日為周期)、備份的方式(如采用手工備份還是自動備份)、備份的介質(zhì)(如以硬盤、磁帶還是U盤作為備份介質(zhì))和介質(zhì)的存放等。SQLServer提供了不同的備份方法以滿足廣泛的業(yè)務環(huán)境和數(shù)據(jù)庫活動的需求,下面根據(jù)備份方法來介紹如何制定數(shù)據(jù)庫備份與恢復的策略。

1)完全數(shù)據(jù)庫備份

完全數(shù)據(jù)庫備份是將一個數(shù)據(jù)庫中的所有數(shù)據(jù)文件全部復制,包括完全數(shù)據(jù)庫備份過程中數(shù)據(jù)庫的所有行為,所有的用戶數(shù)據(jù)以及所有的數(shù)據(jù)庫對象,包括系統(tǒng)表、索引和用戶自定義表。完全數(shù)據(jù)庫備份比其他任何類型的備份都要占用更多的空間和時間。在必須進行數(shù)據(jù)恢復的情況下,完全數(shù)據(jù)庫備份是數(shù)據(jù)庫全面恢復的起點。一般而言,在大量裝入一些新數(shù)據(jù)之后執(zhí)行完全數(shù)據(jù)庫備份,執(zhí)行的間隔可根據(jù)數(shù)據(jù)量的多少以及修改的頻率而定??紤]到完全數(shù)據(jù)庫備份所需時間長、占用存儲介質(zhì)容量大的特點,一般規(guī)則是,一周執(zhí)行一次,或者一天一次。雖然SQLServer備份對數(shù)據(jù)庫性能影響較小,但是,將完全數(shù)據(jù)庫備份安排在空閑的時間(如下班后或者晚上)則更可靠。當要進行數(shù)據(jù)庫恢復時,只需要最近一次的完全數(shù)據(jù)庫備份文件即可。

【例4.5】在磁盤上創(chuàng)建備份文件,并執(zhí)行數(shù)據(jù)庫Northwind的完全數(shù)據(jù)庫備份。

BACKUPDATABASENorthwindtoDISK=‘D:\Temp

\MyFullBackup.bak’

從備份文件D:\Temp\MyFullBackup.bak恢復數(shù)據(jù)庫Northwind

RESTOREDATABASENorthwindfromDISK='D:\Temp

\MyFullBackup.bak'

2)差異數(shù)據(jù)庫備份

差異數(shù)據(jù)庫備份復制最后一次完全數(shù)據(jù)庫備份以來所有數(shù)據(jù)文件中修改過的數(shù)據(jù),包括差異數(shù)據(jù)庫備份過程中發(fā)生的所有數(shù)據(jù)庫行為。例如,系統(tǒng)在周日進行完全數(shù)據(jù)庫備份后,在接下來的六天中每天做的差異數(shù)據(jù)庫備份都將當天所有與周日完全數(shù)據(jù)庫備份時不同的數(shù)據(jù)進行備份。如果自完全數(shù)據(jù)庫備份以來某條數(shù)據(jù)記錄經(jīng)過多次修改,那么差異數(shù)據(jù)庫備份僅僅記錄最后一次修改過的記錄。當數(shù)據(jù)庫需要恢復時,只需要兩個備份文件就可以恢復數(shù)據(jù)庫,即最后一次的完全數(shù)據(jù)庫備份文件和最后一次的差異數(shù)據(jù)庫備份文件。完全數(shù)據(jù)庫備份所需時間長、占用存儲介質(zhì)容量大,但數(shù)據(jù)恢復時間短,操作最方便,當系統(tǒng)數(shù)據(jù)量不大時該備份方式最可靠。與之相比,差異數(shù)據(jù)庫備份可節(jié)省備份時間和存儲介質(zhì)空間,當數(shù)據(jù)量增大時,很難每天都做完全數(shù)據(jù)庫備份,可選擇周末做完全數(shù)據(jù)庫備份,每個工作日做差異數(shù)據(jù)庫備份。

【例4.6】在磁盤上創(chuàng)建備份文件,并執(zhí)行數(shù)據(jù)庫Northwind的差異數(shù)據(jù)庫備份。

BACKUPDATABASENorthwindtoDISK=‘D:\Temp

\MyDiffBackup.bak’WITHDIFFERENTIAL

當數(shù)據(jù)庫崩潰或者數(shù)據(jù)丟失時,可以通過完全數(shù)據(jù)庫備份和差異數(shù)據(jù)庫備份兩個文件恢復數(shù)據(jù)庫:

RESTOREDATABASENorthwindfromDISK=‘D:\Temp

\MyFullBackup.bak’WITHNORECOVERY

RESTOREDATABASENorthwindfromDISK=‘D:\Temp

\MyDiffBackup.bak’

“WITHNORECOVERY”選項表示本次文件還原之后數(shù)據(jù)庫還未完全恢復。

3)事務日志備份

事務日志備份是對最后一次事務日志備份以來事務日志記錄的所有事務處理的一種順序記錄。由于事務日志備份記錄的是所有的事務處理,因此事務日志備份可以將數(shù)據(jù)庫恢復到某個特定的時間點,如輸入錯誤數(shù)據(jù)之前,而差異數(shù)據(jù)庫備份記錄的是最后的修改結果,因而無法做到這點。事務日志備份實際上是增量備份,與完全數(shù)據(jù)庫備份和差異數(shù)據(jù)庫備份相比,減少了重復數(shù)據(jù)的備份,既節(jié)省了存儲介質(zhì)的空間,又縮短了備份的時間,可以根據(jù)業(yè)務的數(shù)據(jù)量幾分鐘進行一次。事務日志備份的缺點是恢復數(shù)據(jù)的過程比較麻煩,要把所有的事務日志備份文件按備份的先后順序依次恢復,因此事務日志備份、完全數(shù)據(jù)庫備份、差異數(shù)據(jù)庫備份往往結合起來一起使用。例如每周末做一次完全數(shù)據(jù)庫備份,每個工作日做一次差異數(shù)據(jù)庫備份,而每30分鐘做一次事務日志備份。當數(shù)據(jù)庫需要恢復時,先恢復最后一次的完全數(shù)據(jù)庫備份和最后一次的差異數(shù)據(jù)庫備份,再恢復最后一次差異數(shù)據(jù)庫備份后的所有事務日志備份。

【例4.7】在磁盤上創(chuàng)建備份文件,并執(zhí)行數(shù)據(jù)庫Northwind的事務日志備份。

BACKUPLOGNorthwindtoDISK=‘D:\Temp

\MyLogBackup1.bak’

假設在最后一次差異數(shù)據(jù)庫備份后又進行了三次事務日志備份,則當數(shù)據(jù)庫崩潰或者數(shù)據(jù)丟失時,可按照下面的順序恢復數(shù)據(jù)庫。

RESTOREDATABASENorthwindfromDISK=‘D:\Temp

\MyFullBackup.bak’WITHNORECOVERY

RESTOREDATABASENorthwindfromDISK='D:\Temp

\MyDiffBackup.bak'WITHNORECOVERY

RESTORELOGNorthwindfromDISK=‘D:\Temp

\MyLogBackup1.bak’WITHNORECOVERY

RESTORELOGNorthwindfromDISK=‘D:\Temp

\MyLogBackup2.bak’WITHNORECOVERY

RESTORELOGNorthwindfromDISK='D:\Temp

\MyLogBackup3.bak'4.3.3使用視圖增強安全性

SQLServer除了可以通過登錄帳戶的身份驗證和權限機制來保證對數(shù)據(jù)庫訪問的安全性,也可以在應用程序?qū)?例如視圖、存儲過程和應用程序角色等)中采用一些方法來保證安全性,這里介紹如何使用視圖來增強安全性。

視圖與表(有時為了與視圖區(qū)別,也稱基本表)不同,它是一個虛表,數(shù)據(jù)庫中只存放視圖的定義(實際上是一條查詢語句),而不存放視圖對應的數(shù)據(jù),這些數(shù)據(jù)仍存放在與視圖關聯(lián)的基本表中。對視圖的數(shù)據(jù)進行操作,其實是系統(tǒng)根據(jù)視圖的定義去操作與視圖關聯(lián)的基本表,因此視圖為用戶提供了另外一種在數(shù)據(jù)庫中訪問數(shù)據(jù)和執(zhí)行操作的方法。在這個方法中,權限的管理是在視圖中實現(xiàn),而不是它們關聯(lián)的基本表,這樣可以防止用戶更改基本表。例如表score包含全班的成績信息,為了使得Joe只能查看到自己的成績信息,可以定義一個視圖只包含Joe的成績信息,再將視圖的SELECT權限授予Joe,這樣Joe就只能看到自己的成績信息。4.3.4其他安全策略

在使用SQLServer時,必須考慮一些額外的安全性問題,比如

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論