資料庫安全性整理
引言:好了,我們都知道,資料庫的一大特點是資料可以共享,那麼問題就來了,資料共享必定帶來資料庫的安全性問題,什麼安全性問題呢?比如說某些資料是某些使用者不該獲取的,所以說資料庫系統中的資料共享不能是無條件的共享。而資料庫安全性就是指保護資料庫以防止不合法使用所造成的資料洩露、更改或者破壞。
根據前面的序言,現在我大概講講接下來的內容的大綱吧,其分:
4.1 資料庫安全性概述
4.2 資料庫安全性控制
4.3 檢視機制
4.4 審計(Audit)
4.5
4.6 統計資料庫安全性
好了,有了大綱之後,我們一個一個的去談。首先來資料庫的安全性概述,我們都知道有安全性問題,那麼資料庫的不安全因素又是什麼呢?
1) 計算機系統安全性
- 為計算機系統建立和採取的各種安全保護措施,以保護計算機系統中的硬體、軟體及資料,防止其因偶然或惡意的原因使系統遭到破壞,資料遭到更改或洩露等。
2)對資料庫安全性產生威脅的因素
- 非授權使用者對資料庫的惡意存取和破壞
- 資料庫中重要或敏感的資料被洩露
- 安全環境的脆弱性
同時,我們知道現在公司都有個規定,這個規定都是按照一定的標準去得到的,同樣,我們資料庫安全性也有一套方法,其是按照一定的標準的去得到,分TCSEC
其中TCSEC/TDI標準的基本內容:
- TCSEC/TDI,從四個方面來描述安全性級別劃分的指標
- 安全策略
- 責任
- 保證
- 文件
根據上述的幾個指標可分安全性級別如下所示:
v 而 CC
- 其是提出國際公認的表述資訊科技安全性的結構
- 把資訊產品的安全要求分為:
- 安全功能要求
- 安全保證要求
v CC文字組成
- 簡介和一般模型
- 安全功能要求
- 安全保證要求
說完了資料庫安全性的概述之後,現在我們瞭解資料庫安全性的控制,簡單點就是用什麼方法來達到資料庫安全。在瞭解方法之前,首先我們瞭解非法使用資料庫的情況:
- 編寫合法程式繞過DBMS及其授權機制
- 直接或編寫應用程式執行非授權操作
- 通過多次合法查詢資料庫從中推匯出一些保密資料
好了,在瞭解了一些非法使用資料庫的情況之後,下面我們用一個圖來引出常用方法
-
引出資料庫安全性控制的常用方法為如下:
- 使用者標識和鑑定
- 存取控制
- 檢視
- 審計
- 密碼儲存
接下來,我們對這些方法進行一一解釋。
首先來使用者識別和鑑定。
其是系統提供的最外層安全保護措施。每個使用者在系統中都有一個使用者標識。每個使用者標識由使用者名稱和使用者標識號(口令或者說密碼或UID)兩部分組成,使用者標識號在系統的整個生命週期內是唯一的。系統內部記錄著所有合法使用者的標識,系統鑑別是指由系統提供一定的方式讓使用者標識自己的名字或身份。每次使用者要求進入系統時,由系統進行核對,通過鑑定後才提供使用資料庫管理系統的許可權。而對於使用者身份的鑑定方法有很多種,而在一個系統中往往多多種方法的結合,從而獲得更強的安全性。具體方法如下:
靜態口令鑑別(生日號等,登入的qq密碼等)
動態口令鑑別(手機驗證碼登入,掃二維碼登入等)
生物特徵鑑別(指紋等)
智慧卡鑑別(實際應用中常採用個人身份識別碼和智慧卡相結合的方式)
然後說說存取控制
存取控制機制組成分定使用者許可權和合法許可權檢查兩種,而使用者許可權定義和合法權檢查機制一起組成了 DBMS的存取控制子系統。根據機制的組成可得一些儲存控制方法,常用的儲存控制方法如下:
接下來就對這兩個方式進行解釋,首先看看自主存取控制方法,其是:
嘿,上面說到一個使用者許可權的組成的一個因素是資料物件,那麼資料物件又有什麼呢?
同時,我們上面也提到自主控制方法是通過GRANT語句和REVOKE語句去實現的,那麼具體語句的語法又是怎樣的呢?具體看下文:
注意:語法格式中有一條子句為WITH GRANT OPTION子句。
下面,我們看看幾個例子從而加深對GRANT語句應用的理解:
現在就對例1到例7的語句之後,學生-課程資料庫中的使用者許可權定義表:
說完GRANT語句,現在說說REVOKE語句,我們授予的許可權可以由DBA或其他授權者用REVOKE語句收回。
直接利用例子來加深對該語句的理解把:
執行[例8]到[例10]的語句後,學生-課程資料庫中的使用者許可權定義表
最後小結一下SQL靈活的授權機制:
好了,上面說的GRANT和REVOKE語句向用戶授予或收回對資料的操作許可權。對建立資料庫一類的資料庫物件的授權則由資料庫管理員在建立使用者時實現。其語法格式為:
注意:CREATE USER語句不是SQL標準,因此不同的關係資料庫管理系統的語法和內容相差甚遠。這裡介紹該語句的目的是說明對於資料庫模式這一類資料物件也有安全控制的需要,也是要授權的。
好了,接下來我們引進一個全新的概念,為資料庫角色,其是被命名的一組與資料庫操作相關的許可權,也就是說角色是許可權的集合,可以為一組具有相同許可權的使用者建立一個角色,從而簡化授權的過程。其使用過程直接看圖:
用例子來加深理解:
好了,說完自主存取控制方法,怎麼去實現這個方法,授權還可以給資料庫模式授權,以及引入一個許可權的集合資料庫角色。現在我們就進行第二個方法的講解,為強制存取控制方法。
前面說的自主存取控制其實是有缺點的,什麼缺點呢?其可能存在資料的“無意洩露”,原因是:這種機制僅僅通過對資料的存取許可權來進行安全控制,而資料本身並無安全性標記。為了解決這個問題,我們的解決方案就是對系統控制下的所有主客體實施強制存取控制策略(敏感度標記)。
那麼強制存取控制又是怎樣的呢?其能保證更高程度的安全性,使用者不能直接感知或進行控制,適用於對資料有嚴格而固定密級分類的部門
- 軍事部門
- 政府部門
要想使用強制存取控制策略,你需要面對的物件是主體,客體,敏感度標記(主——許可證級別,客——密級)
然後在使用這個方法之後,有兩個規則,分別為強制存取控制的規則和修正規則,具體看下:
然後這兩個規則有個共同點,禁止了擁有高許可證級別的主體更新低密級的數
據物件。
注意:
強制存取控制是對資料本身進行密級標記,無論資料如何複製,標記與資料實不可分的整體,只有符合密級標記要求的使用者才可以操縱資料,從而提供了更高級別的安全性。
最後總結說一下DBMS的安全機制,其是由DAC(自主存取控制)和MAC(強制存取控制)共同構成的,實現MAC時要首先實現DAC,因為較高安全性級別的安全保護要包含低級別的所有保護。
好了,說完資料庫安全性控制,現在講講檢視機制,檢視機制其實就是把要保密的資料對無權存取這些資料的使用者隱藏起來,對資料提供一定程度的安全保護。
看下例子:
好了,說完檢視機制,現在我們談談審計。審計的功能把使用者對資料庫的所有操作自動記錄下來放在審計日誌( 將使用者對資料庫的所有操作記錄在上面)中。審計員可以利用審計日誌監控資料庫中的各種行為,重現導致資料庫現有狀況的一系列事件,找出非法存取資料的人,時間和內容等。該功能就是資料庫管理系統達到C2以上安全級別必不可少的一項指標,也就是說C2以上安全級別的DBMS必須具有該功能。
實現審計功能,通過以下的兩條語句:
例子:
說了,說完審計,後面說說資料加密,資料加密是防止資料庫中資料在儲存和傳輸中失密的有效手段,而明文變換成不可直接識別的格式,這個格式叫做密文,加密的基本思想是根據一定的演算法講原始資料(原文)變換成不可直接識別的格式——密文,從而使得不知道解密演算法的人無法獲知資料的內容。資料加密主要包括儲存加密和傳輸加密。
那麼我們瞭解一下這兩種儲存方法。
儲存加密
其一般提供透明和費透明兩種儲存加密方式。透明儲存加密是核心級加密保護方式,對使用者完全透明,非透明儲存加密則是通過多個加密函式來實現的。
透明儲存加密是資料在寫到磁碟時對資料進行加密,授權使用者讀取資料時再對其進行解密。由於資料加密對使用者透明,資料庫的應用程式不需要做任何修改,只需在建立表語句中說明需加密的欄位即可。當對加密資料進行增刪改查操作時,資料庫管理系統將自動對資料進行加,解密工作。基於資料庫核心的資料儲存加密,解密方法效能較好,安全完備性較高。
傳輸加密
在客戶/伺服器結構中,資料庫使用者與伺服器之間若採用明文方式傳輸資料,容易被網路惡意使用者截獲或篡改,存在安全隱患。因此,為了保證二者之間的安全資料交換,資料庫管理系統提供了傳輸加密功能。而常用的傳輸加密方式有鏈路加密(報頭,報文均加密)和端到端加密(只加密報文)。其中鏈路加密對傳輸資料在鏈路層進行加密,它的傳輸資訊由報頭和報文兩部分組成,前者是路由選擇資訊,而後者是傳送的資料資訊。這種方式對報文和報頭均加密。相對地,端對端加密對傳輸資料在傳送端加密,接受端解密。它只加密報文,不加密報頭,與鏈路加密相比,它只在傳送端和接收端需要密碼裝置,而中間節點不需要密碼裝置,因此它所需密碼裝置數量相對較少,但這種方式不加密報頭,容易被非法監聽者發現並從中獲取敏感資訊。
好了,說了那麼多現在我們看看,一種基於基於安全套接層協議的資料庫管理系統可信傳輸方案(端到端的傳輸加密方式)。
注意:金鑰是一種引數,它是在明文轉換為密文或將密文轉換為明文的演算法中輸入的引數。金鑰分為對稱金鑰與非對稱金鑰。
最後聊聊統計資料庫的安全性,看關鍵詞,統計資料庫。那什麼是統計資料庫?
那麼為了實現這個功能,統計資料庫就會面臨一些特殊的安全性問題:
為了避免這些問題,會有相應的規則限制,從而達到統計資料庫安全:
最後達到資料庫安全機制的設計目標:
試圖破壞安全的人所花費的代價 >> 得到的利益