什麼是資料庫安全保護?
防止資料意外丟失和不一致資料的產生,以及當資料庫遭受破壞後迅速恢復正常。
dbms對資料庫的安全保護方功能是通過四方面實現的,即安全性控制、完整性控制、併發性控制和資料庫恢復。
安全性控制:
含義:盡可能地杜絕所有可能的資料庫非法訪問。例如:繞過dbms的授權機制,通過作業系統直接訪問、修改或備份有關資料。
一般方法:
dbms是建立在作業系統之上的,安全的作業系統是資料庫安全的前提。作業系統應能保證資料庫中的資料必須由dbms訪問,而不允許使用者越過dbms直接通過作業系統訪問。資料最後可以通過密碼的形式儲存到資料庫中。這裡只討論資料庫有關的安全性措施,分為使用者標識和鑑定、使用者訪問許可權控制、定義檢視、資料加密和審計等。
使用者標識和鑑定:
系統提供一定的方式讓使用者標識自己的名字和身份,系統內部記錄著所有合法使用者的標識,每次使用者要求進入系統時,由系統進行核實,通過鑑定後才提供計算機的使用權,它是最外層的安全保護措施。常用方法:(1)用乙個使用者名稱或使用者識別符號來標明使用者的身份(2)使用者名稱與口令相結合(3)每個使用者預先約定好乙個過程或者函式,鑑別使用者身份時,系統提供乙個隨機數,使用者根據自己預先約定的計算過程或者函式進行計算,系統根據計算結果辨別使用者身份的合法性。
使用者訪問許可權控制:
訪問許可權由兩個要素組成:資料物件和操作型別。定義乙個使用者的訪問許可權就是要定義這個使用者可以在哪些資料物件上進行哪些型別的操作。定義使用者訪問許可權稱為授權。許可權可以分為系統許可權和物件許可權兩種,系統許可權是由dba授予某些資料庫使用者能夠對資料庫系統進行某種特定操作的權利,如建立乙個基本表(create table),只有得到系統許可權,才能成為資料庫使用者;物件許可權可以由dba授予,也可以由基本表、檢視等資料物件的建立者授予,使資料庫使用者具有對某些資料物件進行某些操作的許可權,如查詢(select)、新增(insert)、修改(update)和刪除(delete)等操作。
在系統初始化時,系統中至少有乙個具有dba許可權的使用者,dba可以通過grant語句將系統許可權或物件許可權授予其他使用者,並可以通過revoke語句收回所授予的許可權。
角色是多種許可權的集合,可以把角色授予使用者或其他角色。可以避免許多重複性的工作,簡化了資料庫使用者的許可權管理工作。
定義檢視:
為不同的使用者定義不同的檢視,可以限制各個使用者的訪問範圍。通過檢視機制把要保密的資料對無權訪問這些資料的使用者隱藏起來,從而自動地對資料提供一定程度地安全保護。
資料加密:
前面幾種資料庫安全措施,都是防止從資料庫系統中竊取保密資料,不能防止通過不正常渠道非法訪問資料,例如,偷取儲存資料的硬碟,或在通訊線路上竊取資料,為了防止此類手段,比較好的辦法是對資料加密。加密的基本思想是根據一定的演算法將原始資料(術語明文)加密成為不可直接識別的格式(術語密文),資料以密文的形式儲存和傳輸。
審計:
實際上任何系統的安全性措施都不是絕對可靠的,對於某些高度敏感的保密資料,必須以審計作為預防手段。審計功能是一種監視措施,它跟蹤記錄有關資料的訪問活動。使用審計功能把使用者對資料庫的的所有操作自動記錄下來,存放在乙個特殊檔案中,即審計日誌(audit log)中。利用這些資訊,可以重現導致資料庫現有狀況的一系列事件,以進一步找出非法訪問資料的人、時間和內容等。但使用審計功能會大大增加系統開銷,所以dbms通常將其作為可選特徵,並提供相應的操作語句,可靈活地開啟或關閉審計功能。
完整性控制:
含義:資料庫的完整性是指保護資料的正確性、有效性和相容性,防止錯誤的資料進入資料庫造成無效操作。
資料庫的完整性和安全性是資料庫保護的兩個不同的方面,安全性措施的防範物件是非法使用者和非法操作,完整性措施的防範物件是合法使用者的不合語義的資料。
完整性約束條件的分類:
【按約束條件使用的物件劃分】
(1)值的約束和結構約束。值的約束即對資料型別、資料格式、取值範圍和空值等進行規定。結構的約束即對資料之間聯絡的約束。
【按約束物件的狀態劃分】
(2)靜態約束和動態約束
方法:
宣告式資料完整性:約束(constraint)、預設值(default)、規則(rule)
程式化資料完整性:儲存過程(stored procedure)、觸發器(trigger)
併發控制與封鎖:
含義:前面的完整性控制是保證各個事務本身能得到正確的資料,只考慮乙個使用者使用資料庫的情況,但實際上資料庫中有許多使用者,每個時刻可能只有乙個使用者程式執行,也可能有多個使用者並行地訪問資料庫,這樣就會發生多個使用者併發訪問同一資料的情況,如果對併發操作不加控制可能會產生不正確的資料,破壞資料的完整性。併發控制就是要解決這類問題,以保持資料庫中資料的一致性,即在任何乙個時刻資料庫都將以相同的形式給使用者提供資料。
方法:
封鎖技術和時標技術。封鎖技術是目前dbms普遍採用的併發控制方法。這裡介紹封鎖技術。
所謂封鎖就是當乙個事務在對某個資料物件(可以是資料項、記錄、資料集以及整個資料庫)進行操作之前,必須獲得相應的鎖,以保證資料操作的正確性和一致性。
封鎖型別:
(1)排他型封鎖。又稱寫封鎖,簡稱為x封鎖,原理是禁止併發操作。當事務t對某個資料物件r實現x封鎖後,其他事務要等t解鎖x封鎖後,才能對r進行封鎖。
(2)共享封鎖。又稱讀封鎖,簡稱為s鎖,原理是允許其他使用者對同一資料物件進行查詢,但不能對該資料物件進行修改。當事務t對某個資料物件r實現s封鎖後,其他事務只能對r加s鎖,而不能加x鎖,直到t釋放r上的s鎖。
封鎖協議
:實際上,鎖是乙個控制塊,其中包括被加鎖記錄的識別符號及持有鎖的事務的識別符號等。在封鎖時,要考慮一定的封鎖規則,例如,何時開始封鎖、封鎖多長時間、何時釋放等,這些封鎖規則稱為封鎖協議。對封鎖方式規定不同的規則,就形成了各種不同的封鎖協議。
封鎖粒度
:封鎖粒度指封鎖的資料物件的大小。根據對資料的不同處理,封鎖的物件可以是這樣的一些邏輯單元:字段、記錄、表和資料庫等。
死鎖和活鎖
:封鎖技術可有效解決並行操作的一致性問題,但也可產生新的問題,即活鎖和死鎖問題。
(1)活鎖。當某個事務請求對某一資料進行排他性封鎖時,由於其他事務對該資料的操作而使這個事務處於永久等待狀態,這種狀態稱為活鎖。
(2)死鎖。在同時處於等待狀態的兩個或多個事務中,其中的每乙個在它能夠進行之前,都等待著某個資料,而這個資料已被它們中的某個事務所封鎖,這種狀態稱為死鎖。
資料庫的恢復:
含義:儘管有許多保護措施,但資料庫的資料仍然無法保證絕對不遭受破壞,例如硬體的故障、軟體的錯誤、操作的失誤、惡意的破壞以及計算機病毒等都有可能發生,使資料庫中的資料丟失。因此,系統必須具有檢測故障並把資料從錯誤狀態中恢復到某一正確狀態的功能,這就是資料庫的恢復。
基本原理:利用資料的冗餘。資料庫中任何被破壞或不正確的資料都可以利用儲存在其他地方的冗餘資料來修復。
因此恢復系統應該提供兩種型別的功能:一種是生成冗餘資料,即對可能發生的故障做某些準備,最常用的技術是登記日誌檔案和資料轉儲;另一種是冗餘重建,即利用這些冗餘資料恢復資料庫。
資料庫保護與安全
資料併發性和一致性 資料併發性是指多個使用者可以在同一時刻訪問相同的資料.資料一致性是指在保證併發性的同時,每個使用者都能看到一致的資料檢視,包括使用者能夠看到自己或其它使用者的事務對資料所做出的更改.可防止的三種讀現象 髒讀 某個事務讀取了被其它未提交事務修改過的資料.不可重複讀 在某個事務讀取一...
保護資料庫安全從現在開始
我們都知道現在資料是核心資產,而資料基本上是儲存在資料庫中的。因此,保護資料庫就成為了保護資料的重要環節。其實,在考慮購買第三方的專業資料庫保護產品之前,有很多任務作是可以現在就開始做的,尤其是對於那些資料管理員 dba 而言。學習一些基本的資料庫安全知識對他們很有幫助。這篇文章就講述了其中一些要點...
認識資料庫安全威脅 保護資料安全(1)
資料庫安全威脅 1 濫用過高許可權 當使用者 或應用程式 被授予超出了其工作職能所需的資料庫訪問許可權時,這些許可權可能會被惡意濫用。例如,乙個大學管理員在工作中只需要能夠更改學生的聯絡資訊,不過他可能會利用過高的資料庫更新許可權來更改分數。資料庫安全威脅 2 濫用合法權 使用者還可能將合法的資料庫...