4.0 《数据库系统概论》数据库安全性详解---(存取控制、DACMAC、视图机制、审计Audit....)
文章目錄
- 0.思維導圖
- 1.數據庫安全性概述
- (1)為什么要研究數據庫的安全性?
- (2)安全標準簡介
- ① TCSEC/TDI標準的基本內容
- ② TCSEC/TDI安全級別劃分
- 2.數據庫安全性控制概述
- 3.數據庫安全性控制
- (1)用戶標識與鑒別(Identification & Authentication)
- ① 靜態口令鑒別
- ② 動態口令鑒別
- ③ 生物特征鑒別
- ④ 智能卡鑒別
- (2)存取控制
- ① 存取控制機制組成:
- (3)自動存取控制方法---DAC: Discretionary Access Control
- ① 授權與回收---針對用戶
- 1?? 授權---GRANT
- 2?? 回收---REVOKE
- 3?? 小結:SQL靈活的授權機制
- 4?? 創建數據庫模式的權限
- ② 數據庫角色---針對角色
- 1?? 角色的創建
- 2?? 給角色授權
- 3?? 將一個角色授予其他的角色或用戶
- 4?? 角色權限的收回
- (4)強制存取控制方法---MAC: Mandatory Access Control
- (5)DAC與MAC共同構成DBMS的安全機制
- 4.視圖機制
- 5.審計(Audit) ---日志
- 6.數據加密
- (1)存儲加密
- (2)傳輸加密
- ① 鏈路加密
- ② 端到端加密
- 7.統計數據庫安全性
0.思維導圖
1.數據庫安全性概述
(1)為什么要研究數據庫的安全性?
問題的提出:
- 數據庫的一大特點是數據可以共享
- 數據共享必然帶來數據庫的安全性問題
- 數據庫系統中的數據共享不能是無條件的共享
- 例: 軍事秘密、國家機密、新產品實驗數據、
市場需求分析、市場營銷策略、銷售計劃、
客戶檔案、醫療檔案、銀行儲蓄數據
非法使用數據庫的情況:
- 編寫合法程序繞過DBMS及其授權機制(黑客等)
- 直接或編寫應用程序執行非授權操作(黑客等)
- 通過多次合法查詢數據庫從中推導出一些保密數據(黑客等)
(2)安全標準簡介
① TCSEC/TDI標準的基本內容
- TCSEC/TDI,從四個方面來描述安全性級別劃分的指標
安全策略
責任
保證
文檔
② TCSEC/TDI安全級別劃分
-
按系統可靠或可信程度逐漸增高
-
各安全級別之間:偏序向下兼容
B2以上的系統:
- 還處于理論研究階段
- 應用多限于一些特殊的部門,如軍隊等
- 美國正在大力發展安全產品,試圖將目前僅限于少數領域應用的B2安全級別下放到商業應用中來,并逐步成為新的商業標準
2.數據庫安全性控制概述
- 用戶要求進入計算機系統時,系統首先根據輸入的用戶標識進行用戶身份鑒定,只有合法的用戶才準許進入計算機系統;對已進入系統的用戶,數據庫管理系統還要進行存取控制,只允許用戶執行合法操作;操作系統也會有自己的保護措施;數據最后還可以以密碼形式存儲到數據庫中(例如md5加密密碼等信息)。
數據庫安全性控制的常用方法:
- 用戶標識和鑒定
- 存取控制
- 視圖
- 審計
- 密碼存儲
3.數據庫安全性控制
(1)用戶標識與鑒別(Identification & Authentication)
- 是系統提供的最外層安全保護措施
- 用戶標識
每個用戶標識由用戶名(user name)和用戶標識號(UID)兩部分組成。
UID在系統的整個生命周期內是唯–的。系統內部記錄著所有合法用戶的標識 - 口令
系統核對口令以鑒別用戶身份 (口令可理解為密碼) - 用戶標識和口令易被竊取
每個用戶預先約定好一個計算過程或者函數
常用的用戶身份鑒別方法有以下幾種:
① 靜態口令鑒別
- 這種方式是當前常用的鑒別方法。
- 靜態口令一般由用戶自己設定,鑒別時只要按要求輸入正確的口令,系統將允許用戶使用數據庫管理系統。
- 這些口令是靜態不變的,在實際應用中,用戶常常用自己的生日、電話、簡單易記的數字等內容作為口令,很容易被破解。而一旦被破解,非法用戶就可以冒充該用戶使用數據庫。
- 這種方式雖然簡單,但容易被攻擊,安全性較低。
② 動態口令鑒別
- 它是目前較為安全的鑒別方式。
- 這種方式的口令是動態變化的,每次鑒別時均需使用動態產生的新口令登錄數據庫管理系統,即采用一次一密的方法。
- 常用的方式如短信密碼和動態令牌方式,每次鑒別時要求用戶使用通過短信或令牌等途徑獲取的新口令登錄數據庫管理系統。
- 與靜態口令鑒別相比,這種認證方式增加了口令被竊取或破解的難度,安全性相對高一些。
③ 生物特征鑒別
- 它是一種通過生物特征進行認證的技術,其中,生物特征是指生物體唯一具有的,可測量、識別和驗證的穩定生物特征,如指紋、虹膜和掌紋等。
- 這種方式通過采用圖像處理和模式識別等技術實現了基于生物特征的認證,- 與傳統的口令鑒別相比,無疑產生了質的飛躍,安全性較高。
④ 智能卡鑒別
- 智能卡是一種不可復制的硬件,內置集成電路的芯片,具有硬件加密功能。
- 智能卡由用戶隨身攜帶,登錄數據庫管理系統時用戶將智能卡插入專用的讀卡器進行身份驗證。
- 由于每次從智能卡中讀取的數據是靜態的,通過內存掃描或網絡監聽等技術還是可能截取到用戶的身份驗證信息,存在安全隱患。
- 因此,實際應用中一般采用個人身份識別碼(PIN)和智能卡相結合的方式。這樣,即使PIN或智能卡中有一種被竊取,用戶身份仍不會被冒充。
(2)存取控制
- 數據庫安全最重要的一點就是確保只授權給有資格的用戶訪問數據庫的權限,同時令所有未被授權的人員無法接近數據,這主要通過數據庫系統的存取控制機制實現。
① 存取控制機制組成:
-
定義用戶權限,并將用戶權限登記到數據字典中;
用戶對某一數據對象的操作權力稱為權限。 -
合法權限檢查,每當用戶發出存取數據庫的操作請求后(請求一般應包括操作類型、操作對象和操作用戶等信息),數據庫管理系統查找數據字典,根據安全規則進行合法權限檢查,若用戶的操作請求超出了定義的權限,系統將拒絕執行此操作。
定義用戶權限和合法權限檢查機制一起組成了數據庫管理系統的存取控制子系統。
- C2級的數據庫管理系統支持自主存取控制( Discretionary Access Control, DAC),
- B1級的數據庫管理系統支持強制存取控制( Mandatory Access Control, MAC)。
這兩類方法的簡單定義是:
- (1)在自主存取控制方法中,用戶對于不同的數據庫對象有不同的存取權限,不同的用戶對同一對象也有不同的權限,而且用戶還可將其擁有的存取權限轉授給其他用戶。因此自主存取控制非常靈活。
- (2)在強制存取控制方法中,每一個 數據庫對象被標以一定的密級,每一個用戶也被授予某一個級別的許可證。對于任意一個對象, 只有具有合法許可證的用戶才可以存取。強制存取控制因此相對比較嚴格。
(3)自動存取控制方法—DAC: Discretionary Access Control
- 通過 SQL 的 GRANT語句和 REVOKE語句實現
- 用戶權限組成
數據對象
操作類型 - 定義用戶存取權限:定義用戶可以在哪些數據庫對象上進行哪些類型的操作
- 定義存取權限稱為授權
① 授權與回收—針對用戶
1?? 授權—GRANT
GRANT語句的一般格式:GRANT <權限>[,<權限>]... [ON <對象類型> <對象名>]TO <用戶>[,<用戶>]...[WITH GRANT OPTION]; 語義:將對指定操作對象的指定操作權限授予指定的用戶發出GRANT:
- DBA
- 數據庫對象創建者(即屬主Owner)
- 擁有該權限的用戶
按受權限的用戶:
- 一個或多個具體用戶
- PUBLIC(全體用戶)
WITH GRANT OPTION子句:
- 指定:可以再授予
- 沒有指定:不能傳播
不允許循環授權:
[例1] 把查詢Student表權限授給用戶U1
GRANT SELECT ON TABLE Student TO U1;舉個例子而已,不同數據庫請參考相關文檔,先打基礎。有個印象,知道有這么個東西,其實很多數據庫管理系統已經將這些封裝好了,簡潔漂亮的UI,靈活的操作,基本不會用到語句來寫。話不多說,直接上圖:
[例2] 把對Student表和Course表的全部權限授予用戶U2和U3
GRANT ALL PRIVILIGES ON TABLE Student, Course TO U2, U3;[例3] 把對表SC的查詢權限授予所有用戶
GRANT SELECT ON TABLE SC TO PUBLIC;[例4] 把查詢Student表和修改學生學號的權限授給用戶U4
對屬性列的授權時必須明確指出相應屬性列名 GRANT UPDATE(Sno), SELECT ON TABLE Student TO U4;[例5] 把對表SC的INSERT權限授予U5用戶,并允許他再將此權限授予其他用戶
GRANT INSERT ON TABLE SC TO U5WITH GRANT OPTION;執行例5后,U5不僅擁有了對表SC的INSERT權限,
還可以傳播此權限:
[例6]
同樣,U6還可以將此權限授予U7:
[例7]
GRANT INSERT ON TABLE SC TO U7;
但U7不能再傳播此權限,因為沒有寫這條語句WITH GRANT OPTION。
2?? 回收—REVOKE
授予的權限可以由DBA或其他授權者用REVOKE語句收回
REVOKE語句的一般格式為:
[例8] 把用戶U4修改學生學號的權限收回
REVOKE UPDATE(Sno)ON TABLE Student FROM U4;[例9] 收回所有用戶對表SC的查詢權限
REVOKE SELECT ON TABLE SC FROM PUBLIC;[例10] 把用戶U5對SC表的INSERT權限收回
REVOKE INSERT ON TABLE SC FROM U5 CASCADE ;將用戶U5的INSERT權限收回的時候必須級聯(CASCADE)收回 系統只收回直接或間接從U5處獲得的權限
3?? 小結:SQL靈活的授權機制
- DBA:
擁有所有對象的所有權限
不同的權限授予不同的用戶 - 用戶:擁有自己建立的對象的全部的操作權限
GRANT:授予其他用戶 - 被授權的用戶
“繼續授權”(WITH GRANT OPTION)許可:可以再授予給其它用戶 - 所有授予出去的權力在必要時又都可用REVOKE語句收回
4?? 創建數據庫模式的權限
DBA在創建用戶時實現
CREATE USER語句格式CREATE USER <username> [WITH][DBA | RESOURCE | CONNECT]② 數據庫角色—針對角色
數據庫角色:被命名的一組與數據庫操作相關的權限
- 角色是權限的集合 ,結合我剛剛上面截得黑色背景圖片了解
- 可以為一組具有相同權限的用戶創建一個角色
- 簡化授權的過程
1?? 角色的創建
CREATE ROLE <角色名>
2?? 給角色授權
GRANT <權限>[,<權限>]… ON <對象類型>對象名 TO <角色>[,<角色>]…3?? 將一個角色授予其他的角色或用戶
GRANT <角色1>[,<角色2>]… TO <角色3>[,<用戶1>]… [WITH ADMIN OPTION]4?? 角色權限的收回
REVOKE <權限>[,<權限>]… ON <對象類型> <對象名> FROM <角色>[,<角色>]…[例11] 通過角色來實現將一組權限授予一個用戶。
步驟如下:
CREATE ROLE R1;
[例12] 角色的權限修改
GRANT DELETE ON TABLE StudentTO R1[例13] 角色權限的收回
REVOKE SELECT ON TABLE StudentFROM R1;(4)強制存取控制方法—MAC: Mandatory Access Control
自主存取控制缺點:
- 可能存在數據的“無意泄露”
- 原因:這種機制僅僅通過對數據的存取權限來進行安全控制,而數據本身并無安全性標記
- 解決:對系統控制下的所有主客體實施強制存取控制策略
強制存取控制(MAC):
- 保證更高程度的安全性
- 用戶能不能直接感知或進行控制,因為對數據進行了加密
- 適用于對數據有嚴格而固定密級分類的部門
*軍事部門
*政府部門
在強制存取控制中,數據庫管理系統所管理的全部實體被分為主體和客體兩大類。
-
主體是系統中的活動實體
DBMS所管理的實際用戶
代表用戶的各進程 -
客體是系統中的被動實體,是受主體操縱的
文件
基表
索引
視圖
對于主體和客體,數據庫管理系統為它們每個實例(值)指派一個敏感度標記(label)。
敏感度標記(Label)分為若干個級別:
- 絕密(Top Secret)
- 機密(Secret)
- 可信(Confidential)
- 公開(Public)
- 主體的敏感度標記稱為許可證級別(Clearance Level)
- 客體的敏感度標記稱為密級(Classification Level)
- 密級:T>=S>=C>=P
強制存取控制規則:
- (1)僅當主體的許可證級別大于或等于客體的密級時,該主體才能讀取相應的客體
- (2)僅當主體的許可證級別等于客體的密級時,該主體才能寫相應的客體
- 修正規則
主體的許可證級別 <=客體的密級→ 主體能寫客體
規則的共同點:
- 禁止了擁有高許可證級別的主體更新低密級的數據對象
(5)DAC與MAC共同構成DBMS的安全機制
- 實現MAC時要首先實現DAC
原因:較高安全性級別提供的安全保護要包含較低級別的所有保護 - 先進行DAC檢查,通過DAC檢查的數據對象再由系統進行MAC檢查,只有通過MAC檢查的數據對象方可存取。
4.視圖機制
把要保密的數據對無權存取這些數據的用戶隱藏起來,對數據提供一定程度的安全保護
- 主要功能是提供數據獨立性,無法完全滿足要求
- 間接實現了支持存取謂詞的用戶權限定義
[例14]建立計算機系學生的視圖,把對該視圖的SELECT權限授于王平,把該視圖上的所有操作權限授于張明
先建立計算機系學生的視圖CS_StudentCREATE VIEW CS_Student AS SELECT *FROM StudentWHERE Sdept='CS';在視圖上進一步定義存取權限:
GRANT SELECTON CS_Student TO 王平 ;GRANT ALL PRIVILIGESON CS_Student TO 張明;5.審計(Audit) —日志
什么是審計:
- 審計日志(Audit Log);
將用戶對數據庫的所有操作記錄在上面 - DBA利用審計日志
找出非法存取數據的人、時間和內容 - C2以上安全級別的DBMS必須具有
審計分為:
- 用戶級審計
針對自己創建的數據庫表或視圖進行審計 ;
記錄所有用戶對這些表或視圖的一切成功和(或)不成功的訪問要求以及各種類型的SQL操作 ; - 系統級審計
DBA設置 ;
監測成功或失敗的登錄要求 ;
監測GRANT和REVOKE操作以及其他數據庫級權限下的操作;
AUDIT語句:設置審計功能
NOAUDIT語句:取消審計功能
[例15]對修改SC表結構或修改SC表數據的操作進行審計
AUDIT ALTER,UPDATE ON SC;[例16]取消對SC表的一切審計
NOAUDIT ALTER,UPDATE ON SC;6.數據加密
-
數據加密
防止數據庫中數據在存儲和傳輸中失密的有效手段 -
數據加密分為存儲加密和傳輸加密
(1)存儲加密
- 對于存儲加密,一般提供透明和非透明兩種存儲加密方式。
透明存儲加密是內核級加密保護方式,對用戶完全透明
非透明存儲加密則是通過多個加密函數實現的。 - 透明存儲加密是數據在寫到磁盤時對數據進行加密,授權用戶讀取數據時再對其進行解密。由于數據加密對用戶透明,數據庫的應用程序不需要做任何修改,只需在創建表語句中說明需加密的字段即可。當對加密數據進行增、刪、改、查詢操作時,數據庫管理系統將自動對數據進行加、解密工作。基于數據庫內核的數據存儲加密、解密方法性能較好,安全完備性較高。
(2)傳輸加密
- 在客戶/服務器結構中,數據庫用戶與服務器之間若采用明文方式傳輸數據,容易被網絡惡意用戶截獲或篡改,存在安全隱患。因此,為保證二者之間的安全數據交換,數據庫管理系統提供了傳輸加密功能。
- 常用的傳輸加密方式如鏈路加密和端到端加密。
① 鏈路加密
- 鏈路加密對傳輸數據在鏈路層進行加密,它的傳輸信息由報頭和報文兩部分組成,前者是路由選擇信息,而后者是傳送的數據信息。這種方式對報文和報頭均加密。
② 端到端加密
- 端到端加密對傳輸數據在發送端加密,接收端解密。它只加密報文,不加密報頭。與鏈路加密相比,它只在發送端和接收端需要密碼設備,而中間節點不需要密碼設備,因此它所需密碼設備數量相對較少。但這種方式不加密報頭,從而容易被非法監聽者發現并從中獲取敏感信息。
7.統計數據庫安全性
- 統計數據庫
允許用戶查詢聚集類型的信息(如合計、平均值等)
不允許查詢單個記錄信息
- 統計數據庫中特殊的安全性問題:
隱蔽的信息通道
能從合法的查詢中推導出不合法的信息
統計數據庫安全性規則:
-
規則1:任何查詢至少要涉及N(N足夠大)個以上的記錄
-
規則2:任意兩個查詢的相交數據項不能超過M個
-
規則3:任一用戶的查詢次數不能超過1+(N-2)/M
數據庫安全機制的設計目標:
試圖破壞安全的人所花費的代價 >> 得到的利益
總結
以上是生活随笔為你收集整理的4.0 《数据库系统概论》数据库安全性详解---(存取控制、DACMAC、视图机制、审计Audit....)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 3.1.4 操作系统之内存的分配与回收
- 下一篇: 6.4 你真的了解电子邮件系统的组成和结