第四章——数据库安全性
生活随笔
收集整理的這篇文章主要介紹了
第四章——数据库安全性
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
數據庫安全性概述
- 數據庫的安全性是指保護數據庫以防止不合法使用所造成的數據泄露、更改或破壞
數據庫的不安全因素
安全標準簡介
- 《可信計算機系統評估準則關于可信數據庫系統的解釋》(TCSEC/Trusted Database Interpretation,TCSEC/TDI,即紫皮書)從4個方面來描述安全級別劃分指標,即安全策略、責任、保證和文檔。
- 根據計算機系統對各項指標的支持情況,TCSEC/TDI將系統劃分為4組(division)7個等級,依次是D、C(C1,C2)、B(B1,B2,B3)、A(A1),按系統可靠或可信程度逐漸增高。
| A1 | 驗證設計(verified design) |
| B3 | 安全域(security domains) |
| B2 | 結構化保護(structural protection) |
| B1 | 標記安全保護(labeled security protection) |
| C2 | 受控的存取保護(controlled access protection) |
| C1 | 自主安全保護(discretionary security protection) |
| D | 最小保護(minimal protection) |
數據庫安全性控制
用戶身份鑒別
- 用戶身份鑒別是數據庫管理系統提供的最外層安全保護措施。每個用戶在系統中都有一個用戶標識,每個用戶標識是由用戶名(user name)和用戶標識號(UID)兩部分組成。UID在系統的整個生命周期內是唯一的。系統內部記錄著所有合法用戶的標識,系統鑒別是指由系統提供一定的方式讓用戶標識自己的名字或者身份。每次用戶要求進入系統時,由系統進行核對,通過鑒定后才提供使用數據庫管理系統的權限。
靜態口令鑒別
- 這種方式是當前常用的鑒別方法。靜態口令一般由用戶自己設定,鑒別時只要按要求輸入正確的口令,系統將允許用戶使用數據庫管理系統。這些口令是靜態不變的,雖然簡單,但容易被攻擊,安全性較低。
- 在存儲和傳輸過程中口令信息不可見,均以密文方式存在。用戶身份鑒別可以重復多次。
動態口令鑒別
- 它是目前較為安全的鑒別方式。這種方式的口令是動態變化的,每次鑒別時均需使用動態產生的新口令登錄數據庫管理系統,即采用一次一密的方法。
- 與靜態口令鑒別相比,這種認證方式增加了口令被盜竊或破解的難度,安全性相對高一些。
生物特征鑒別
- 它是一種通過生物特征進行認證的技術,其中,生物特性是指生物體的唯一具有的,可測量、識別和驗證的穩定生物特征。
- 這種方式通過采用圖像處理和模式識別等技術實現了基于生物特征的認證,與傳統的口令鑒別相比,無疑產生了質的飛躍,安全性較高。
智能卡鑒別
- 智能卡是一種不可復制的硬件,內置集成電路的芯片,具有硬件加密功能。 智能卡由用戶隨身攜帶,登錄數據庫管理系統時用戶將智能卡插入專用的讀卡器進行身份驗證。由于每次從智能卡中讀取的數據是靜態的,通過內存掃描或網絡監聽等技術還是可能截取到用戶的身份驗證信息,存在安全隱患。 因此,實際應用中一般采用個人身份識別碼(PIN)和智能卡相結合的方式。
存取控制
- 存取控制機制主要包括用戶權限和合法權限檢查兩部分
(1)定義用戶權限,并將用戶權限登記到數據字典中
(2)合法權限檢查 - 定義用戶權限和合法權限檢查機制一起組成了數據庫管理系統的存取控制子系統
- C2級的數據庫管理系統支持自主存取控制(Discretionary Access Control,DAC),B1級的數據庫管理系統支持強制存取控制(Mandatory Access Control,MAC)。
- 這兩類方法的簡單定義是:
(1)在自主存取控制方法中,用戶對于不同的數據庫對象有不同的存取權限,不同的用戶對于同一種對象也有不同的權限,而且用戶還可將其擁有的存取權限傳授給其他用戶。因此自主存取控制非常靈活。
(2)在強制存取控制方法中,每一個數據庫對象被標以一定的密級,每一個用戶也被授予某一個級別的許可證。對于任意一個對象,只有具有合法許可證的用戶才可以存取。強制存取控制因此相對比較嚴格。
自主存取控制方法
- SQL標準也對自主存取控制提供支持,這主要通過SQL的GRANT語句和REVOKE語句來實現。
- 用戶權限是由兩個要素組成的:數據庫對象和操作類型。
- 在非關系系統中,用戶只能對數據進行操作,存取控制的數據庫對象也僅限于數據本身
- 在關系數據庫系統中,存取控制的對象不僅有數據本身(基本表中的數據、屬性列上的數據),還有數據庫模式(包括模式、基本表、視圖和索引的創建等)
授權:授予與收回
- SQL中使用GRANT和REVOKE語句向用戶授予或收回對數據的操作權限。GRANT語句向用戶授予權限,REVOKE語句收回已經授予用戶的權限。
GRANT
- GRANT語句的一般格式為:
GRANT <權限>[,<權限>]…
ON <對象類型><對象名>[,<對象類型><對象名>]…
TO <用戶>[,<用戶>]…
[WITH GRANT OPTION]; - 其語義為:將對指定操作對象的指定操作權限授予指定的用戶。發出該GRANT語句的可以是數據庫管理員,也可以是該數據庫對象的創建者(即屬主owner),還可以是已經擁有該權限的用戶。 接收權限的用戶可以是一個或多個具體用戶,也可以是PUBLIC,即全體用戶。
- 如果指定了WITH GRANT OPTION子句,則獲得某種權限的用戶還可以把這種權限再授予其他用戶。如果沒有指定WITH GRANT OPTION子句,則獲得某種權限的用戶只能使用該權限,不能傳播該權限。
- SQL標準允許具有WITH GRANT OPTION的用戶把相應權限或其子集傳遞授予其他用戶,但不允許循環授權,即授權者不能把權限再授回給授權者或其祖先。
REVOKE
- REVOKE語句的一般格式為:
REVOKE <權限>[,<權限>]…
ON <對象類型><對象名>[,<對象類型><對象名>]…
FROM <用戶>[,<用戶>]…[CASCADE | RESTRICT];
創建數據庫模式的權限
- GRANT和REVOKE語句向用戶授予或收回對數據的操作權限。對創建數據庫模式一類的數據庫對象的授權則由數據庫管理員在創建用戶時實現。
- CREATE USER語句一般格式如下:CREATE USER <username> [WITH][DBA | RESOURSE | CONNECT];
- 對CREATE USER語句說明如下:
- CREATE USER命名中如果沒有指定創建的新用戶的權限,默認該用戶擁有CONNECT權限。擁有CONNECT權限的用戶不能創建新用戶,不能創建模式,也不能創建基本表,只能登錄數據庫。由數據庫管理員或其他用戶授予他應有的權限,根據獲得的授權情況他可以對數據庫對象進行權限范圍內的操作。
- 擁有RESOURCE權限的用戶能創建基本表和視圖,成為所創建對象的屬主,但不能創建模式,不能創建新的用戶。數據庫對象的屬主可以用GRANT語句把該對象上的存取權限授予其他用戶。
- 擁有DBA權限的用戶是系統中的超級用戶,可以創建新的用戶、創建模式、創建基本表和視圖等;DBA擁有對所有數據庫對象的存取權限,還可以把這些權限授予一般用戶。
數據庫角色
- 數據庫角色是被命名的一組與數據庫操作相關的權限,角色是權限的集合。因此,可以為一組具有相同權限的用戶創建一個角色,使用角色來管理數據庫權限可以簡化授權的過程。
- 在SQL中首先用CREATE ROLE語句創建角色,然后用GRANT語句給角色授權,用REVOKE語句收回授予角色的權限。
- 創建角色的SQL語句格式是:CREATE ROLE <角色名>
給角色授權
GRANT <權限>[,<權限>]…
ON <對象類型>對象名
TO <角色>[,<角色>]…
將一個角色授予其他的角色或用戶
GRANT <角色1>[,<角色2>]…
TO <角色3>[,<用戶1>]…
[WITH ADMIN OPTION]
角色權限的收回
REVOKE <權限>[,<權限>]…
ON <對象類型><對象名>
FROM <角色>[,<角色>]…
強制存取控制方法
- 所謂強制存取控制是指系統為保證更高程度的安全性,按照TDI/TCSEC標準中安全策略的要求所采取的強制存取檢查手段。它不是用戶能直接感知或進行控制的。強制存取控制適用于那些對數據有嚴格而固定密級分類的部門。
- 在強制存取控制中,數據庫管理系統所管理的全部實體被分為主體和客體兩大類
主體是系統中的活動實體,既包括數據庫管理系統所管理的實際用戶,也包括代表用戶的各進程。
客體是系統中被動實體,是受主體操縱的,包括文件、基本表、索引、視圖等。 - 對于主體和客體,數據庫管理系統為它們每個實例(值)指派一個敏感度標記。敏感度標記被分為若干級別,例如絕密(Top Secret,TS)、機密(Secret,S)、可信(Confidential,C)、公開(Public,P)等。密級的次序是TS>=S>=C>=P。
- 主體的敏感度標記稱為許可證級別(Clearance level),客體的敏感度標記稱為密級(classification level)。 強制存取控制規則是通過對比主體敏感度標記和客體的敏感度標記,最終確定主體是否能夠存取客體。
- 當某一用戶(或某一主體)以標記label注冊入系統時,系統要求他對任何客體的存取必須遵循下面兩條規則:
(1)僅當主體的許可證級別大于或等于客體的密級時,該主體才能讀取相應的客體
(2)僅當主體的許可證級別小于或等于客體的密級時,該主體才能寫相應的客體 - 強制存取控制是對數據本身進行密級標記,無論數據如何復制,標記與數據是一個不可分的整體,只有符合密級標記要求的用戶才可以操縱數據,從而提供了更高級別的安全性。
- 較高安全性級別提供的安全保護要包含較低級別的所有保護,因此在實現強制存取控制時要首先實現自主存取控制,即自主存取控制與強制存取控制共同構成數據庫管理系統的安全機制。 系統首先進行自主存取控制檢查,對通過自主存取控制檢查的允許存取的數據庫對象再由系統自動進行強制存取控制檢查,只有通過強制存取控制檢查的數據庫對象方可存取。
視圖機制
- 可以為不同的用戶定義不同的視圖,把數據對象限制在一定的范圍內。也就是說,通過視圖機制把要保密的數據對無權存取的用戶隱藏起來,從而自動對數據提供一定程度的安全保護。
審計
- 為了使數據庫管理系統達到一定的安全級別,還需要在其他方面提供相應的支持。按照TDI/TCSEC標準中安全策略的要求,審計功能就是數據庫管理系統達到C2以上安全級別必不可少的一項指標。
- 審計功能把用戶對數據庫的所有操作自動記錄下來放入審計日志中。審計員可以利用審計日志監控數據庫中的各種行為,重現導致數據庫現有狀況的一系列事件,找出非法存取數據的人、時間和內容等。還可以通過對審計日志分析,對潛在的威脅提前采取措施加以防范。
- 審計通常是很費時間和空間的,所以數據庫管理系統往往都將審計設置為可選特征,允許數據庫管理員根據具體應用對安全性的要求靈活地打開或關閉審計功能。審計功能主要用于安全性要求較高的部門。
AUDIT語句和NOAUDIT語句
- AUDIT語句用來設置審計功能,NOAUDIT語句則取消審計功能。
- 審計一般可以分為用戶級審計和系統級審計。
用戶級審計是任何用戶可設置的審計,主要是用戶針對自己創建的數據庫表或視圖進行審計,記錄所有用戶對這些表或視圖的一切成功和(或)不成功的訪問要求以及各種類型的SQL操作。
系統級審計只能由數據庫管理員設置,用以檢測成功或失敗的登錄要求、監測授權和收回操作以及其他數據庫級權限下的操作。
例1:對修改SC表結構或修改SC表數據的操作進行審計
AUDIT ALTER,UPDATE
ON SC;
例2:取消對SC表的一切審計
NOAUDIT ALTER,UPDATE
ON SC;
- 審計設置以及審計日志一般都存儲在數據字典中。必須把審計開關打開(即把系統參數audit-trail設為true),才可以在系統表SYS_AUDITTRAIL中查看審計信息。
- 數據庫安全審計系統提供了一種事后檢查的安全機制。安全審計機制將特定用戶或者特定對象相關的操作記錄到系統審計日志中,作為后續對操作的查詢分析和追蹤的依據。通過審計機制,可以約束用戶可能的惡意操作。
數據加密
- 數據加密是防止數據庫數據在存儲和傳輸中失密的有效措施。加密的基本思想是根據一定的算法將原始數據——明文變換為不可直接識別的格式——密文,從而使得不知道解密算法的人無法獲知數據的內容。
- 數據加密主要包括存儲加密和傳輸加密。
- 對于存儲加密,一般提供透明和非透明兩種存儲加密方式。透明存儲加密是內核級加密保護方式,對用戶完全透明;非透明存儲加密則是通過多個加密函數實現的。
- 透明存儲加密是數據在寫到磁盤時對數據進行加密,授權用戶讀取數據時再對其進行解密。
- 常用的傳輸加密方式如鏈路加密和端到端加密。其中,鏈路加密對傳輸數據在鏈路層進行加密,它的傳輸信息由報頭和報文兩部分組成,前者是路由選擇信息,而后者是傳送的數據信息。這種方式對報文和報頭均加密。相對地,端到端加密對傳輸數據在發送端加密,接收端解密。它只加密報文,不加密報頭。與鏈路加密相比,它只在發送端和接收端需要密碼設備,而中間節點不需要密碼設備,因此它所需密碼設備數量相對較少。但這種方式不加密報頭,從而容易被非法監聽者發現并從中獲取敏感信息。
其他安全性保護
- 為滿足較高安全等級數據庫管理系統的安全性保護要求,在自主存取控制和強制存取控制之外,還有推理控制以及數據庫應用中隱蔽信道和數據隱私保護等技術。
- 推理控制(inference control)處理的是強制存取控制未解決的問題。
- 隱蔽信道(convert channel)處理內容也是強制存取控制為解決的問題。
- 數據隱私(data privacy)是控制不愿被他人知道或他人不便知道的個人數據的能力。
總結
以上是生活随笔為你收集整理的第四章——数据库安全性的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 数据库安全性之安全标准
- 下一篇: 上海社保基数又上涨,对积分、落户有什么影