數(shù)據(jù)庫安全機制是用于實現(xiàn)數(shù)據(jù)庫的各種安全策略的功能集合,正是由這些安全機制來實現(xiàn)安全模型,進而實現(xiàn)保護數(shù)據(jù)庫系統(tǒng)安全的目標。近年來,對用戶的認證與鑒別、存取控制、數(shù)據(jù)庫加密及推理控制等安全機制的研究取得了不少新的進展。
1.1.4.1 用戶標識與鑒別
用戶標識是指用戶向系統(tǒng)出示自己的身份證明,最簡單的方法是輸入用戶ID和密碼。標識機制用于惟一標志進入系統(tǒng)的每個用戶的身份,因此必須保證標識的惟一性。鑒別是指系統(tǒng)檢查驗證用戶的身份證明,用于檢驗用戶身份的合法性。標識和鑒別功能保證了只有合法的用戶才能存取系統(tǒng)中的資源。
由于數(shù)據(jù)庫用戶的安全等級是不同的,因此分配給他們的權限也是不一樣的,數(shù)據(jù)庫系統(tǒng)必須建立嚴格的用戶認證機制。身份的標識和鑒別是DBMS對訪問者授權的前提,并且通過審計機制使DBMS保留追究用戶行為責任的能力。功能完善的標識與鑒別機制也是訪問控制機制有效實施的基礎,特別是在一個開放的多用戶系統(tǒng)的網(wǎng)絡環(huán)境中,識別與鑒別用戶是構筑DBMS安全防線的第1個重要環(huán)節(jié)。
近年來標識與鑒別技術發(fā)展迅速,一些實體認證的新技術在數(shù)據(jù)庫系統(tǒng)集成中得到應用。目前,常用的方法有通行字認證、數(shù)字證書認證、智能卡認證和個人特征識別等。
通行字也稱為“口令”或“密碼”,它是一種根據(jù)已知事物驗證身份的方法,也是一種最廣泛研究和使用的身份驗證法。在數(shù)據(jù)庫系統(tǒng)中往往對通行字采取一些控制措施,常見的有最小長度限制、次數(shù)限定、選擇字符、有效期、雙通行字和封鎖用戶系統(tǒng)等。一般還需考慮通行字的分配和管理,以及在計算機中的安全存儲。通行字多以加密形式存儲,攻擊者要得到通行字,必須知道加密算法和密鑰。算法可能是公開的,但密鑰應該是秘密的。也有的系統(tǒng)存儲通行字的單向Hash值,攻擊者即使得到密文也難以推出通行字的明文。
數(shù)字證書是認證中心頒發(fā)并進行數(shù)字簽名的數(shù)字憑證,它實現(xiàn)實體身份的鑒別與認證、信息完整性驗證、機密性和不可否認性等安全服務。數(shù)字證書可用來證明實體所宣稱的身份與其持有的公鑰的匹配關系,使得實體的身份與證書中的公鑰相互綁定。
智能卡(有源卡、IC卡或Smart卡)作為個人所有物,可以用來驗證個人身份,典型智能卡主要由微處理器、存儲器、輸入輸出接口、安全邏輯及運算處理器等組成。在智能卡中引入了認證的概念,認證是智能卡和應用終端之間通過相應的認證過程來相互確認合法性。在卡和接口設備之間只有相互認證之后才能進行數(shù)據(jù)的讀寫操作,目的在于防止偽造應用終端及相應的智能卡。
根據(jù)被授權用戶的個人特征來進行確證是一種可信度更高的驗證方法,個人特征識別應用了生物統(tǒng)計學(Biometrics)的研究成果,即利用個人具有惟一性的生理特征來實現(xiàn)。個人特征都具有因人而異和隨身攜帶的特點,不會丟失并且難以偽造,非常適合于個人身份認證。目前已得到應用的個人生理特征包括指紋、語音聲紋(voice- print)、DNA、視網(wǎng)膜、虹膜、臉型和手型等。一些學者已開始研究基于用戶個人行為方式的身份識別技術,如用戶寫簽名和敲擊鍵盤的方式等。
個人特征一般需要應用多媒體數(shù)據(jù)存儲技術來建立檔案,相應地需要基于多媒體數(shù)據(jù)的壓縮、存儲和檢索等技術作為支撐。目前已有不少基于個人特征識別的身份認證系統(tǒng)成功地投入應用。如美國聯(lián)邦調查局(FBI)成功地將小波理論應用于壓縮和識別指紋圖樣,從而可以將一個10 MB的指紋圖樣壓縮成500 KB,從而大大減少了數(shù)百萬指紋檔案的存儲空間和檢索時間。
1.1.4.2 存取控制
訪問控制的目的是確保用戶對數(shù)據(jù)庫只能進行經(jīng)過授權的有關操作。在存取控制機制中,一般把被訪問的資源稱為“客體”,把以用戶名義進行資源訪問的進程、事務等實體稱為“主體”。
傳統(tǒng)的存取控制機制有兩種,即DAC(Discretionary Access Control,自主存取控制)和MAC(Mandatory Access Control,強制存取控制)。在DAC機制中,用戶對不同的數(shù)據(jù)對象有不同的存取權限,而且還可以將其擁有的存取權限轉授給其他用戶。DAC訪問控制完全基于訪問者和對象的身份;MAC機制對于不同類型的信息采取不同層次的安全策略,對不同類型的數(shù)據(jù)來進行訪問授權。在MAC機制中,存取權限不可以轉授,所有用戶必須遵守由數(shù)據(jù)庫管理員建立的安全規(guī)則,其中最基本的規(guī)則為“向下讀取,向上寫入”。顯然,與DAC 相比,MAC機制比較嚴格。
近年來,RBAC(Role-based Access Control,基于角色的存取控制)得到了廣泛的關注。RBAC在主體和權限之間增加了一個中間橋梁——角色。權限被授予角色,而管理員通過指定用戶為特定角色來為用戶授權。從而大大簡化了授權管理,具有強大的可操作性和可管理性。角色可以根據(jù)組織中的不同工作創(chuàng)建,然后根據(jù)用戶的責任和資格分配角色,用戶可以輕松地進行角色轉換。而隨著新應用和新系統(tǒng)的增加,角色可以分配更多的權限,也可以根據(jù)需要撤銷相應的權限。
RBAC核心模型包含了5個基本的靜態(tài)集合,即用戶集(users)、角色集(roles)、特權集 (perms)(包括對象集(objects)和操作集(operators)),以及一個運行過程中動態(tài)維護的集合,即會話集(sessions),如圖1-1所示。
![]() 圖1-1 RBAC核心模型
用戶集包括系統(tǒng)中可以執(zhí)行操作的用戶,是主動的實體;對象集是系統(tǒng)中被動的實體,包含系統(tǒng)需要保護的信息;操作集是定義在對象上的一組操作,對象上的一組操作構成了一個特權;角色則是RBAC模型的核心,通過用戶分配(UA)和特權分配(PA)使用戶與特權關聯(lián)起來。
RBAC屬于策略中立型的存取控制模型,既可以實現(xiàn)自主存取控制策略,又可以實現(xiàn)強制存取控制策略。它可以有效緩解傳統(tǒng)安全管理處理瓶頸問題,被認為是一種普遍適用的訪問控制模型,尤其適用于大型組織的有效的訪問控制機制。
2002年,Park. J和Sundhu. R首次提出了UCON(Usage Control,使用控制)的概念。UCON對傳統(tǒng)的存取控制進行了擴展,定義了授權(Authorization)、職責(Obligation)和條件(Condition)3個決定性因素,同時提出了存取控制的連續(xù)性(Continuity)和易變性(Mutability)兩個重要屬性。UCON集合了傳統(tǒng)的訪問控制、可信管理,以及數(shù)字權力管理,從而用系統(tǒng)方式提供了一個保護數(shù)字資源的統(tǒng)一標準的框架,為下一代存取控制機制提供了新思路。
1.1.4.3 數(shù)據(jù)庫加密
由于數(shù)據(jù)庫在操作系統(tǒng)中以文件形式管理,所以入侵者可以直接利用操作系統(tǒng)的漏洞竊取數(shù)據(jù)庫文件,或者篡改數(shù)據(jù)庫文件內容。另一方面,數(shù)據(jù)庫管理員(DBA)可以任意訪問所有數(shù)據(jù),往往超出了其職責范圍,同樣造成安全隱患。因此,數(shù)據(jù)庫的保密問題不僅包括在傳輸過程中采用加密保護和控制非法訪問,還包括對存儲的敏感數(shù)據(jù)進行加密保護,使得即使數(shù)據(jù)不幸泄露或者丟失,也難以造成泄密。同時,數(shù)據(jù)庫加密可以由用戶用自己的密鑰加密自己的敏感信息,而不需要了解數(shù)據(jù)內容的數(shù)據(jù)庫管理員無法進行正常解密,從而可以實現(xiàn)個性化的用戶隱私保護。
對數(shù)據(jù)庫加密必然會帶來數(shù)據(jù)存儲與索引、密鑰分配和管理等一系列問題,同時加密也會顯著地降低數(shù)據(jù)庫的訪問與運行效率。保密性與可用性之間不可避免地存在沖突,需要妥善解決二者之間的矛盾。
數(shù)據(jù)庫中存儲密文數(shù)據(jù)后,如何進行高效查詢成為一個重要的問題。查詢語句一般不可以直接運用到密文數(shù)據(jù)庫的查詢過程中,一般的方法是首先解密加密數(shù)據(jù),然后查詢解密數(shù)據(jù)。但由于要對整個數(shù)據(jù)庫或數(shù)據(jù)表進行解密操作,因此開銷巨大。在實際操作中需要通過有效的查詢策略來直接執(zhí)行密文查詢或較小粒度的快速解密。
一般來說,一個好的數(shù)據(jù)庫加密系統(tǒng)應該滿足以下幾個方面的要求。
① 足夠的加密強度,保證長時間且大量數(shù)據(jù)不被破譯。
② 加密后的數(shù)據(jù)庫存儲量沒有明顯的增加。
③ 加解密速度足夠快,影響數(shù)據(jù)操作響應時間盡量短。
④ 加解密對數(shù)據(jù)庫的合法用戶操作(如數(shù)據(jù)的增、刪、改等)是透明的。
⑤ 靈活的密鑰管理機制,加解密密鑰存儲安全,使用方便可靠。
1.數(shù)據(jù)庫加密的實現(xiàn)機制
數(shù)據(jù)庫加密的實現(xiàn)機制主要研究執(zhí)行加密部件在數(shù)據(jù)庫系統(tǒng)中所處的層次和位置,通過對比各種體系結構的運行效率、可擴展性和安全性,以求得最佳的系統(tǒng)結構。
按照加密部件與數(shù)據(jù)庫系統(tǒng)的不同關系,數(shù)據(jù)庫加密機制可以從大的方面分為庫內加密和庫外加密。
(1)庫內加密
庫內加密在DBMS內核層實現(xiàn)加密,加/解密過程對用戶與應用透明,數(shù)據(jù)在物理存取之前完成加/解密工作。
這種方式的優(yōu)點是加密功能強,并且加密功能集成為DBMS的功能,可以實現(xiàn)加密功能與DBMS之間的無縫耦合。對于數(shù)據(jù)庫應用來說,庫內加密方式是完全透明的。
庫內加密方式的主要缺點如下。
— 對系統(tǒng)性能影響比較大,BMS除了完成正常的功能外,還要進行加/解密運算,從而加重了數(shù)據(jù)庫服務器的負載。
— 密鑰管理風險大,加密密鑰與庫數(shù)據(jù)保存在服務器中,其安全性依賴于DBMS的訪問控制機制。
— 加密功能依賴于數(shù)據(jù)庫廠商的支持,DBMS一般只提供有限的加密算法與強度可供選擇,自主性受限。
(2)庫外加密
在庫外加密方式中,加/解密過程發(fā)生在DBMS之外,DBMS管理的是密文。加/解密過程大多在客戶端實現(xiàn),也有的由專門的加密服務器或硬件完成。
與庫內加密方式相比,庫外加密的明顯優(yōu)點如下。
— 由于加/解密過程在客戶端或專門的加密服務器實現(xiàn),所以減少了數(shù)據(jù)庫服務器與DBMS的運行負擔。
— 可以將加密密鑰與所加密的數(shù)據(jù)分開保存,提高了安全性。
— 由客戶端與服務器的配合,可以實現(xiàn)端到端的網(wǎng)上密文傳輸。
庫外加密的主要缺點是加密后的數(shù)據(jù)庫功能受到一些限制,例如加密后的數(shù)據(jù)無法正常索引。同時數(shù)據(jù)加密后也會破壞原有的關系數(shù)據(jù)的完整性與一致性,這些都會給數(shù)據(jù)庫應用帶來影響。
在目前新興的外包數(shù)據(jù)庫服務模式中,數(shù)據(jù)庫服務器由非可信的第三方提供,僅用來運行標準的DBMS,要求加密解密都在客戶端完成。因此,庫外加密方式受到越來越多研究者的關注。
2.數(shù)據(jù)庫加密的粒度
一般來說,數(shù)據(jù)庫加密的粒度可以有4種,即表、屬性、記錄和數(shù)據(jù)元素。不同加密粒度的特點不同,總的來說,加密粒度越小,則靈活性越好且安全性越高,但實現(xiàn)技術也更為復雜,對系統(tǒng)的運行效率影響也越大。
(1)表加密
表級加密的對象是整個表,這種加密方法類似于操作系統(tǒng)中文件加密的方法。即每個表與不同的表密鑰運算,形成密文后存儲。這種方式最為簡單,但因為對表中任何記錄或數(shù)據(jù)項的訪問都需要將其所在表的所有數(shù)據(jù)快速解密,因而執(zhí)行效率很低,浪費了大量的系統(tǒng)資源。在目前的實際應用中,這種方法基本已被放棄。
(2)屬性加密
屬性加密又稱為“域加密”或“字段加密”,即以表中的列為單位進行加密。一般而言,屬性的個數(shù)少于記錄的條數(shù),需要的密鑰數(shù)相對較少。如果只有少數(shù)屬性需要加密,屬性加密是可選的方法。
(3)記錄加密
記錄加密是把表中的一條記錄作為加密的單位,當數(shù)據(jù)庫中需要加密的記錄數(shù)比較少時,采用這種方法是比較好的。
(4)數(shù)據(jù)元素加密
數(shù)據(jù)元素加密是以記錄中每個字段的值為單位進行加密,數(shù)據(jù)元素是數(shù)據(jù)庫中最小的加密粒度。采用這種加密粒度,系統(tǒng)的安全性與靈活性最高,同時實現(xiàn)技術也最為復雜。不同的數(shù)據(jù)項使用不同的密鑰,相同的明文形成不同的密文,抗攻擊能力得到提高。不利的方面是,該方法需要引入大量的密鑰。一般要周密設計自動生成密鑰的算法,密鑰管理的復雜度大大增加,同時系統(tǒng)效率也受到影響。
在目前條件下,為了得到較高的安全性和靈活性,采用最多的加密粒度是數(shù)據(jù)元素。為了使數(shù)據(jù)庫中的數(shù)據(jù)能夠充分而靈活地共享,加密后還應當允許用戶以不同的粒度進行訪問。
3.加密算法
加密算法是數(shù)據(jù)加密的核心,一個好的加密算法產(chǎn)生的密文應該頻率平衡,隨機無重碼,周期很長而又不可能產(chǎn)生重復現(xiàn)象。竊密者很難通過對密文頻率,或者重碼等特征的分析獲得成功。同時,算法必須適應數(shù)據(jù)庫系統(tǒng)的特性,加/解密,尤其是解密響應迅速。
常用的加密算法包括對稱密鑰算法和非對稱密鑰算法。
對稱密鑰算法的特點是解密密鑰和加密密鑰相同,或解密密鑰由加密密鑰推出。這種算法一般又可分為兩類,即序列算法和分組算法。序列算法一次只對明文中的單個位或字節(jié)運算;分組算法是對明文分組后以組為單位進行運算,常用有DES等。
非對稱密鑰算法也稱為“公開密鑰算法”,其特點是解密密鑰不同于加密密鑰,并且從解密密鑰推出加密密鑰在計算上是不可行的。其中加密密鑰公開,解密密鑰則是由用戶秘密保管的私有密鑰。常用的公開密鑰算法有RSA等。
目前還沒有公認的專門針對數(shù)據(jù)庫加密的加密算法,因此一般根據(jù)數(shù)據(jù)庫特點選擇現(xiàn)有的加密算法來進行數(shù)據(jù)庫加密。一方面,對稱密鑰算法的運算速度比非對稱密鑰算法快很多,二者相差大約2~3個數(shù)量級;另一方面,在公開密鑰算法中,每個用戶有自己的密鑰對。而作為數(shù)據(jù)庫加密的密鑰如果因人而異,將產(chǎn)生異常龐大的數(shù)據(jù)存儲量。因此,在數(shù)據(jù)庫加密中一般采取對稱密鑰的分組加密算法。
4.密鑰管理
對數(shù)據(jù)庫進行加密,一般對不同的加密單元采用不同的密鑰。以加密粒度為數(shù)據(jù)元素為例,如果不同的數(shù)據(jù)元素采用同一個密鑰,由于同一屬性中數(shù)據(jù)項的取值在一定范圍之內,且往往呈現(xiàn)一定的概率分布,因此攻擊者可以不用求原文,而直接通過統(tǒng)計方法即可得到有關的原文信息,這就是所謂的統(tǒng)計攻擊。
大量的密鑰自然會帶來密鑰管理的問題。根據(jù)加密粒度的不同,系統(tǒng)所產(chǎn)生的密鑰數(shù)量也不同。越是細小的加密粒度,所產(chǎn)生的密鑰數(shù)量越多,密鑰管理也就越復雜。良好的密鑰管理機制既可以保證數(shù)據(jù)庫信息的安全性,又可以進行快速的密鑰交換,以便進行數(shù)據(jù)解密。
對數(shù)據(jù)庫密鑰的管理一般有集中密鑰管理和多級密鑰管理兩種體制,集中密鑰管理方法是設立密鑰管理中心。在建立數(shù)據(jù)庫時,密鑰管理中心負責產(chǎn)生密鑰并對數(shù)據(jù)加密,形成一張密鑰表。當用戶訪問數(shù)據(jù)庫時,密鑰管理機構核對用戶識別符和用戶密鑰。通過審核后,由密鑰管理機構找到或計算出相應的數(shù)據(jù)密鑰。這種密鑰管理方式方便用戶使用和管理,但由于這些密鑰一般由數(shù)據(jù)庫管理人員控制,因而權限過于集中。
目前研究和應用比較多的是多級密鑰管理體制,以加密粒度為數(shù)據(jù)元素的三級密鑰管理體制為例,整個系統(tǒng)的密鑰由一個主密鑰、每個表上的表密鑰,以及各個數(shù)據(jù)元素密鑰組成。表密鑰被主密鑰加密后以密文形式保存在數(shù)據(jù)字典中,數(shù)據(jù)元素密鑰由主密鑰及數(shù)據(jù)元素所在行、列通過某種函數(shù)自動生成,一般不需要保存。在多級密鑰體制中,主密鑰是加密子系統(tǒng)的關鍵,系統(tǒng)的安全性在很大程度上依賴于主密鑰的安全性。
5.數(shù)據(jù)庫加密的局限性
數(shù)據(jù)庫加密技術在保證安全性的同時,也給數(shù)據(jù)庫系統(tǒng)的可用性帶來一些影響。
(1)系統(tǒng)運行效率受到影響
數(shù)據(jù)庫加密技術帶來的主要問題之一是影響效率。為了減少這種影響,一般對加密的范圍做一些約束,如不加密索引字段和關系運算的比較字段等。
(2)難以實現(xiàn)對數(shù)據(jù)完整性約束的定義
數(shù)據(jù)庫一般都定義了關系數(shù)據(jù)之間的完整性約束,如主/外鍵約束及值域的定義等。數(shù)據(jù)一旦加密,DBMS將難以實現(xiàn)這些約束。
(3)對數(shù)據(jù)的SQL語言及SQL函數(shù)受到制約
SQL語言中的Group by、Order by及Having子句分別完成分組和排序等操作,如果這些子句的操作對象是加密數(shù)據(jù),那么解密后的明文數(shù)據(jù)將失去原語句的分組和排序作用。另外,DBMS擴展的SQL內部函數(shù)一般也不能直接作用于密文數(shù)據(jù)。
(4)密文數(shù)據(jù)容易成為攻擊目標
加密技術把有意義的明文轉換為看上去沒有實際意義的密文信息,但密文的隨機性同時也暴露了消息的重要性,容易引起攻擊者的注意和破壞,從而造成了一種新的不安全性。加密技術往往需要和其他非加密安全機制相結合,以提高數(shù)據(jù)庫系統(tǒng)的整體安全性。
數(shù)據(jù)庫加密作為一種對敏感數(shù)據(jù)進行安全保護的有效手段,將得到越來越多的重視??傮w來說,目前數(shù)據(jù)庫加密技術還面臨許多挑戰(zhàn),其中解決保密性與可用性之間的矛盾是關鍵。
1.1.4.4 數(shù)據(jù)庫審計
數(shù)據(jù)庫審計是指監(jiān)視和記錄用戶對數(shù)據(jù)庫所施加的各種操作的機制。按照美國國防部TCSEC/TDI標準中關于安全策略的要求,審計功能是數(shù)據(jù)庫系統(tǒng)達到C2以上安全級別必不可少的一項指標。
審計功能自動記錄用戶對數(shù)據(jù)庫的所有操作,并且存入審計日志。事后可以利用這些信息重現(xiàn)導致數(shù)據(jù)庫現(xiàn)有狀況的一系列事件,提供分析攻擊者線索的依據(jù)。
數(shù)據(jù)庫管理系統(tǒng)的審計主要分為語句審計、特權審計、模式對象審計和資源審計,語句審計是指監(jiān)視一個或者多個特定用戶或者所有用戶提交的SQL語句;特權審計是指監(jiān)視一個或者多個特定用戶或者所有用戶使用的系統(tǒng)特權;模式對象審計是指監(jiān)視一個模式中在一個或者多個對象上發(fā)生的行為;資源審計是指監(jiān)視分配給每個用戶的系統(tǒng)資源。
審計機制應該至少記錄用戶標識和認證、客體訪問、授權用戶進行并會影響系統(tǒng)安全的操作,以及其他安全相關事件。對于每個記錄的事件,審計記錄中需要包括事件時間、用戶、時間類型、事件數(shù)據(jù)和事件的成功/失敗情況。對于標識和認證事件,必須記錄事件源的終端ID和源地址等;對于訪問和刪除對象的事件,則需要記錄對象的名稱。
審計的策略庫一般由兩個方面因素構成,即數(shù)據(jù)庫本身可選的審計規(guī)則和管理員設計的觸發(fā)策略機制。當這些審計規(guī)則或策略機制一旦被觸發(fā),則將引起相關的表操作。這些表可能是數(shù)據(jù)庫自定義的,也可能是管理員另外定義的,最終這些審計的操作都將被記錄在特定的表中以備查證。一般地,將審計跟蹤和數(shù)據(jù)庫日志記錄結合起來,會達到更好的安全審計效果。
對于審計粒度與審計對象的選擇,需要考慮系統(tǒng)運行效率與存儲空間消耗的問題。為了達到審計目的,一般必須審計到對數(shù)據(jù)庫記錄與字段一級的訪問。但這種小粒度的審計需要消耗大量的存儲空間,同時使系統(tǒng)的響應速度降低,給系統(tǒng)運行效率帶來影響。
1.1.4.5 備份與恢復
一個數(shù)據(jù)庫系統(tǒng)總是避免不了故障的發(fā)生。安全的數(shù)據(jù)庫系統(tǒng)必須能在系統(tǒng)發(fā)生故障后利用已有的數(shù)據(jù)備份,恢復數(shù)據(jù)庫到原來的狀態(tài),并保持數(shù)據(jù)的完整性和一致性。數(shù)據(jù)庫系統(tǒng)所采用的備份與恢復技術,對系統(tǒng)的安全性與可靠性起著重要作用,也對系統(tǒng)的運行效率有著重大影響。
1.數(shù)據(jù)庫備份
常用的數(shù)據(jù)庫備份的方法有如下3種。
(1)冷備份
冷備份是在沒有終端用戶訪問數(shù)據(jù)庫的情況下關閉數(shù)據(jù)庫并將其備份,又稱為“脫機備份”。這種方法在保持數(shù)據(jù)完整性方面顯然最有保障,但是對于那些必須保持每天24小時、每周7天全天候運行的數(shù)據(jù)庫服務器來說,較長時間地關閉數(shù)據(jù)庫進行備份是不現(xiàn)實的。
(2)熱備份
熱備份是指當數(shù)據(jù)庫正在運行時進行的備份,又稱為“聯(lián)機備份”。因為數(shù)據(jù)備份需要一段時間,而且備份大容量的數(shù)據(jù)庫還需要較長的時間,那么在此期間發(fā)生的數(shù)據(jù)更新就有可能使備份的數(shù)據(jù)不能保持完整性,這個問題的解決依賴于數(shù)據(jù)庫日志文件。在備份時,日志文件將需要進行數(shù)據(jù)更新的指令“堆起來”,并不進行真正的物理更新,因此數(shù)據(jù)庫能被完整地備份。備份結束后,系統(tǒng)再按照被日志文件“堆起來”的指令對數(shù)據(jù)庫進行真正的物理更新??梢?,被備份的數(shù)據(jù)保持了備份開始時刻前的數(shù)據(jù)一致性狀態(tài)。
熱備份操作存在如下不利因素。
— 如果系統(tǒng)在進行備份時崩潰,則堆在日志文件中的所有事務都會被丟失,即造成數(shù)據(jù)的丟失。
— 在進行熱備份的過程中,如果日志文件占用系統(tǒng)資源過大,如將系統(tǒng)存儲空間占用完,會造成系統(tǒng)不能接受業(yè)務請求的局面,對系統(tǒng)運行產(chǎn)生影響。
— 熱備份本身要占用相當一部分系統(tǒng)資源,使系統(tǒng)運行效率下降。
(3)邏輯備份
邏輯備份是指使用軟件技術從數(shù)據(jù)庫中導出數(shù)據(jù)并寫入一個輸出文件,該文件的格式一般與原數(shù)據(jù)庫的文件格式不同,而是原數(shù)據(jù)庫中數(shù)據(jù)內容的一個映像。因此邏輯備份文件只能用來對數(shù)據(jù)庫進行邏輯恢復,即數(shù)據(jù)導入,而不能按數(shù)據(jù)庫原來的存儲特征進行物理恢復。邏輯備份一般用于增量備份,即備份那些在上次備份以后改變的數(shù)據(jù)。
2.數(shù)據(jù)庫恢復
在系統(tǒng)發(fā)生故障后,把數(shù)據(jù)庫恢復到原來的某種一致性狀態(tài)的技術稱為“恢復”,其基本原理是利用“冗余”進行數(shù)據(jù)庫恢復。問題的關鍵是如何建立“冗余”并利用“冗余”實施數(shù)據(jù)庫恢復,即恢復策略。
數(shù)據(jù)庫恢復技術一般有3種策略,即基于備份的恢復、基于運行時日志的恢復和基于鏡像數(shù)據(jù)庫的恢復。
(1)基于備份的恢復
基于備份的恢復是指周期性地備份數(shù)據(jù)庫。當數(shù)據(jù)庫失效時,可取最近一次的數(shù)據(jù)庫備份來恢復數(shù)據(jù)庫,即把備份的數(shù)據(jù)拷貝到原數(shù)據(jù)庫所在的位置上。用這種方法,數(shù)據(jù)庫只能恢復到最近一次備份的狀態(tài),而從最近備份到故障發(fā)生期間的所有數(shù)據(jù)庫更新將會丟失。備份的周期越長,丟失的更新數(shù)據(jù)越多。
(2)基于運行時日志的恢復
運行時日志文件是用來記錄對數(shù)據(jù)庫每一次更新的文件。對日志的操作優(yōu)先于對數(shù)據(jù)庫的操作,以確保記錄數(shù)據(jù)庫的更改。當系統(tǒng)突然失效而導致事務中斷時,可重新裝入數(shù)據(jù)庫的副本,把數(shù)據(jù)庫恢復到上一次備份時的狀態(tài)。然后系統(tǒng)自動正向掃描日志文件,將故障發(fā)生前所有提交的事務放到重做隊列,將未提交的事務放到撤銷隊列執(zhí)行,這樣就可把數(shù)據(jù)庫恢復到故障前某一時刻的數(shù)據(jù)一致性狀態(tài)。
(3)基于鏡像數(shù)據(jù)庫的恢復
數(shù)據(jù)庫鏡像就是在另一個磁盤上復制數(shù)據(jù)庫作為實時副本。當主數(shù)據(jù)庫更新時,DBMS自動把更新后的數(shù)據(jù)復制到鏡像數(shù)據(jù),始終使鏡像數(shù)據(jù)和主數(shù)據(jù)保持一致性。當主庫出現(xiàn)故障時,可由鏡像磁盤繼續(xù)提供使用,同時DBMS自動利用鏡像磁盤數(shù)據(jù)進行數(shù)據(jù)庫恢復。鏡像策略可以使數(shù)據(jù)庫的可靠性大為提高,但由于數(shù)據(jù)鏡像通過復制數(shù)據(jù)實現(xiàn),頻繁的復制會降低系統(tǒng)運行效率,因此一般在對效率要求滿足的情況下可以使用。為兼顧可靠性和可用性,可有選擇性地鏡像關鍵數(shù)據(jù)。
數(shù)據(jù)庫的備份和恢復是一個完善的數(shù)據(jù)庫系統(tǒng)必不可少的一部分,目前這種技術已經(jīng)廣泛應用于數(shù)據(jù)庫產(chǎn)品中,如Oracle數(shù)據(jù)庫提供對聯(lián)機備份、脫機備份、邏輯備份、完全數(shù)據(jù)恢復及不完全數(shù)據(jù)恢復的全面支持。據(jù)預測,以“數(shù)據(jù)”為核心的計算(Data Centric Computing)將逐漸取代以“應用”為核心的計算。在一些大型的分布式數(shù)據(jù)庫應用中,多備份恢復和基于數(shù)據(jù)中心的異地容災備份恢復等技術正在得到越來越多的應用。
1.1.4.6 推理控制與隱私保護
數(shù)據(jù)庫安全中的推理是指用戶根據(jù)低密級的數(shù)據(jù)和模式的完整性約束推導出高密級的數(shù)據(jù),造成未經(jīng)授權的信息泄露,這種推理的路徑稱為“推理通道”(Inference Channel)。近年來隨著外包數(shù)據(jù)庫模式及數(shù)據(jù)挖掘技術的發(fā)展,對數(shù)據(jù)庫推理控制(Inference Control)和隱私保護(Privacy Protection)的要求也越來越高。
1.推理通道
常見的推理通道有以下4種。
① 執(zhí)行多次查詢,利用查詢結果之間的邏輯聯(lián)系進行推理。用戶一般先向數(shù)據(jù)庫發(fā)出多個查詢請求,這些查詢大多包含一些聚集類型的函數(shù)(如合計和平均值等)。然后利用返回的查詢結果,在綜合分析的基礎上推斷出高級數(shù)據(jù)信息。
② 利用不同級別數(shù)據(jù)之間的函數(shù)依賴進行推理分析,數(shù)據(jù)表的屬性之間常見的一種關系是“函數(shù)依賴”和“多值依賴”。這些依賴關系有可能產(chǎn)生推理通道,如同一病房的病人患的是同一種病,以及由參加會議的人員可以推得參與會議的公司等。
③ 利用數(shù)據(jù)完整性約束進行推理,例如關系數(shù)據(jù)庫的實體完整性要求每一個元組必須有一個惟一的鍵。當一個低安全級的用戶想在一個關系中插入一個元組,并且這個關系中已經(jīng)存在一個具有相同鍵值的高安全級元組,那么為了維護實體的完整性,DBMS會采取相應的限制措施。低級用戶由此可以推出高級數(shù)據(jù)的存在,這就產(chǎn)生了一條推理通道。
④ 利用分級約束進行推理。一條分級約束是一條規(guī)則,它描述了對數(shù)據(jù)進行分級的標準。如果這些分級標準被用戶獲知的話,用戶有可能從這些約束自身推導出敏感數(shù)據(jù)。
2.推理控制
迄今為止,推理通道問題仍處于理論探索階段,沒有一個一勞永逸的解決方法,這是由推理通道問題本身的多樣性與不確定性所決定的。目前常用的推理控制方法可以分為兩類,第1類是在數(shù)據(jù)庫設計時找出推理通道,主要包括利用語義數(shù)據(jù)模型的方法和形式化的方法。這類方法都是分析數(shù)據(jù)庫的模式,然后修改數(shù)據(jù)庫設計或者提高一些數(shù)據(jù)項的安全級別來消除推理通道;第2類方法是在數(shù)據(jù)庫運行時找出推理通道,主要包括多實例方法和查詢修改方法。
IBM Almaden研究中心的Kristen LeFevre等基于推理控制方法實現(xiàn)了一個隱私保護數(shù)據(jù)庫原型系統(tǒng),該模型應用于Hippocratic數(shù)據(jù)庫取得了較好的隱私保護效果,是目前所知的最為典型和最為成功的隱私保護數(shù)據(jù)庫系統(tǒng)。系統(tǒng)建立了信息泄露的表語義與查詢語義模型,通過修改SQL語言查詢條件的方法來進行查詢預處理,實現(xiàn)了數(shù)據(jù)元素粒度的推理控制,其體系結構如圖1-2所示。
![]() 圖1-2 基于推理控制的隱私保護數(shù)據(jù)庫體系結構
這個模型主要通過對SQL查詢語句的擴展,用Case和Join語句替換查詢來實現(xiàn)推理控制。經(jīng)過對隱私策略規(guī)則的定義和執(zhí)行,用戶可以自己決定涉及自身隱私數(shù)據(jù)的訪問策略。而數(shù)據(jù)庫可以控制未經(jīng)授權用戶對敏感數(shù)據(jù)的訪問,這樣有效地實現(xiàn)了隱私保護。
以上探討了數(shù)據(jù)庫的多種安全機制,有必要說明的是這些安全技術不是相互獨立的,而是彼此依賴并相互支持的。存取控制的正確性依賴于安全的用戶標識和鑒別機制,用戶標識和鑒別機制也是入侵檢測和審計的基礎。存取控制是數(shù)據(jù)庫安全最基本,也是最核心的措施,數(shù)據(jù)庫加密在帶來更高安全性的同時必然帶來運行效率和可用性的降低。折中的結果是部分敏感信息加密,為此需要推理控制和隱私保護手段的有效配合。所謂未雨綢繆,有備無患,備份是幾乎所有數(shù)據(jù)庫必需的日常維護工作,是數(shù)據(jù)庫恢復的前提;恢復則是數(shù)據(jù)庫安全的最后一道屏障,亡羊補牢,為時未晚。
|
|
來自: WindySky > 《數(shù)據(jù)庫設計》