資料庫總結第四章
第四章 資料庫安全性
資料庫安全性
- 問題的提出
- 資料庫的一大特點是資料可以共享
- 資料共享必然帶來資料庫的安全性問題
- 資料庫系統中的資料共享不能是無條件的共享
例: 軍事祕密、國家機密、新產品實驗資料、
市場需求分析、市場營銷策略、銷售計劃、
客戶檔案、醫療檔案、銀行儲蓄資料
-
- 資料庫的安全性是指保護資料庫以防止不合法使用所造成的資料洩露、更改或破壞 。
- 系統安全保護措施是否有效是資料庫系統主要的效能指標之一。
- 資料庫的安全性是指保護資料庫以防止不合法使用所造成的資料洩露、更改或破壞 。
- 4.1 資料庫安全性概述
- 4.1.1 資料庫的不安全因素
1.非授權使用者對資料庫的惡意存取和破壞
-
- 一些黑客(Hacker)和犯罪分子在使用者存取資料庫時獵取使用者名稱和使用者口令,然後假冒合法使用者偷取、修改甚至破壞使用者資料。
- 資料庫管理系統提供的安全措施主要包括使用者身份鑑別、存取控制和檢視等技術。
2.資料庫中重要或敏感的資料被洩露
-
- 黑客和敵對分子千方百計盜竊資料庫中的重要資料,一些機密資訊被暴露。
- 資料庫管理系統提供的主要技術有強制存取控制、資料加密儲存和加密傳輸等。
- 審計日誌分析
- 黑客和敵對分子千方百計盜竊資料庫中的重要資料,一些機密資訊被暴露。
3.安全環境的脆弱性
-
- 資料庫的安全性與計算機系統的安全性緊密聯絡
- 計算機硬體、作業系統、網路系統等的安全性
- 建立一套可信(Trusted)計算機系統的概念和標準
- 資料庫的安全性與計算機系統的安全性緊密聯絡
- 4.1.2 安全標準簡介
- 1985年美國國防部(DoD)正式頒佈《DoD可信計算機系統評估準則》(簡稱TCSEC或DoD85)
- 不同國家建立在TCSEC概念上的評估準則
- 歐洲的資訊科技安全評估準則(ITSEC)
- 加拿大的可信計算機產品評估準則(CTCPEC)
- 美國的資訊科技安全聯邦標準(FC)
- 歐洲的資訊科技安全評估準則(ITSEC)
- 1993年,CTCPEC、FC、TCSEC和ITSEC聯合行動,解決原標準中概念和技術上的差異,稱為CC(Common Criteria)專案
- 1999年 CC V2.1版被ISO採用為國際標準
2001年 CC V2.1版被我國採用為國家標準
- 目前CC已基本取代了TCSEC,成為評估資訊產品安全性的主要標準。
- TCSEC標準
- CC標準
- 1991年4月美國NCSC(國家電腦保安中心)頒佈了《可信計算機系統評估標準關於可信資料庫系統的解釋》( Trusted Database Interpretation 簡稱TDI)
- TDI又稱紫皮書。它將TCSEC擴充套件到資料庫管理系統
- TDI中定義了資料庫管理系統的設計與實現中需滿足和用以進行安全性級別評估的標準
- TCSEC/TDI標準的基本內容
- TCSEC/TDI,從四個方面來描述安全性級別劃分的指標
- 安全策略
- 責任
- 保證
- 文件
- TCSEC/TDI,從四個方面來描述安全性級別劃分的指標
- TCSEC/TDI安全級別劃分
- 四組(division)七個等級
- D
- C(C1,C2)
- B(B1,B2,B3)
- A(A1)
- 按系統可靠或可信程度逐漸增高
- 各安全級別之間具有一種偏序向下相容的關係,即較高安全性級別提供的安全保護要包含較低級別的所有保護要求,同時提供更多或更完善的保護能力
- 四組(division)七個等級
- D級
- 將一切不符合更高標準的系統均歸於D組
- 典型例子:DOS是安全標準為D的作業系統
- DOS在安全性方面幾乎沒有什麼專門的機制來保障
- C1級
- 非常初級的自主安全保護
- 能夠實現對使用者和資料的分離,進行自主存取控制(DAC),保護或限制使用者許可權的傳播。
- 現有的商業系統稍作改進即可滿足
- C2級
- 安全產品的最低檔次
- 提供受控的存取保護,將C1級的DAC進一步細化,以個人身份註冊負責,並實施審計和資源隔離
- 達到C2級的產品在其名稱中往往不突出“安全”(Security)這一特色
- 典型例子
- Windows 2000
- Oracle 7
- B1級
- 標記安全保護。“安全”(Security)或“可信的” (Trusted)產品。
- 對系統的資料加以標記,對標記的主體和客體實施強制存取控制(MAC)、審計等安全機制
- B1級典型例子
- 作業系統
- 惠普公司的HP-UX BLS release 9.09+
- 資料庫
- Oracle公司的Trusted Oracle 7
- Sybase公司的Secure SQL Server version 11.0.6
- 作業系統
- B2級
- 結構化保護
- 建立形式化的安全策略模型並對系統內的所有主體和客體實施DAC和MAC
- B3級
- 安全域
- 該級的TCB必須滿足訪問監控器的要求,審計跟蹤能力更強,並提供系統恢復過程
- A1級
- 驗證設計,即提供B3級保護的同時給出系統的形式化設計說明和驗證以確信各安全保護真正實現。
- CC
- 提出國際公認的表述資訊科技安全性的結構
- 把資訊產品的安全要求分為
- 安全功能要求
安全保證要求
- CC文字組成
- 簡介和一般模型
- 有關術語、基本概念和一般模型以及與評估有關的一些框架
- 安全功能要求
- 列出了一系列類、子類和元件
- 安全保證要求
- 列出了一系列保證類、子類和元件
- 提出了評估保證級(Evaluation Assurance Level,EAL),從EAL1至EAL7共分為七級
- 簡介和一般模型
CC評估保證級(EAL)劃分
評估保證級 |
定 義 |
TCSEC安全級別(近似相當) |
EAL1 |
功能測試(functionally tested) |
|
EAL2 |
結構測試(structurally tested) |
C1 |
EAL3 |
系統地測試和檢查(methodically tested and checked) |
C2 |
EAL4 |
系統地設計、測試和複查(methodically designed, tested, and reviewed) |
B1 |
EAL5 |
半形式化設計和測試(semiformally designed and tested) |
B2 |
EAL6 |
半形式化驗證的設計和測試(semiformally verified design and tested) |
B3 |
EAL7 |
形式化驗證的設計和測試(formally verified design and tested) |
A1 |
4.2 資料庫安全性控制
- 非法使用資料庫的情況
- 編寫合法程式繞過資料庫管理系統及其授權機制
- 直接或編寫應用程式執行非授權操作
- 通過多次合法查詢資料庫從中推匯出一些保密資料
- 計算機系統中,安全措施是一級一級層層設定
-
- 系統根據使用者標識鑑定使用者身份,合法使用者才准許進入計算機系統
- 資料庫管理系統還要進行存取控制,只允許使用者執行合法操作
- 作業系統有自己的保護措施
- 資料以密碼形式儲存到資料庫中
-
- 存取控制流程
- 首先,資料庫管理系統對提出SQL訪問請求的資料庫使用者進行身份鑑別,防止不可信使用者使用系統。
- 然後,在SQL處理層進行自主存取控制和強制存取控制,進一步可以進行推理控制。
- 還可以對使用者訪問行為和系統關鍵操作進行審計,對異常使用者行為進行簡單入侵檢測。
- 存取控制流程
- 資料庫安全性控制的常用方法
- 使用者標識和鑑定
- 存取控制
- 檢視
- 審計
資料加密
4.2.1 使用者身份鑑別
- 使用者身份鑑別
(Identification & Authentication)
-
- 系統提供的最外層安全保護措施
- 使用者標識:由使用者名稱和使用者標識號組成
(使用者標識號在系統整個生命週期內唯一)
- 使用者身份鑑別的方法
1.靜態口令鑑別
-
-
- 靜態口令一般由使用者自己設定,這些口令是靜態不變的
-
2.動態口令鑑別
-
-
- 口令是動態變化的,每次鑑別時均需使用動態產生的新口令登入資料庫管理系統,即採用一次一密的方法
-
3.生物特徵鑑別
-
-
- 通過生物特徵進行認證的技術,生物特徵如指紋、虹膜和掌紋等
-
4.智慧卡鑑別
-
-
- 智慧卡是一種不可複製的硬體,內建積體電路的晶片,具有硬體加密功能
-
- 4.2.2 存取控制
- 存取控制機制組成
- 定義使用者許可權,並將使用者許可權登記到資料字典中
- 使用者對某一資料物件的操作權力稱為許可權
- DBMS提供適當的語言來定義使用者許可權,存放在資料字典中,稱做安全規則或授權規則
- 合法許可權檢查
- 使用者發出存取資料庫操作請求
- DBMS查詢資料字典,進行合法許可權檢查
- 定義使用者許可權,並將使用者許可權登記到資料字典中
- 使用者許可權定義和合法權檢查機制一起組成了資料庫管理系統的存取控制子系統
- 常用存取控制方法
- 自主存取控制(Discretionary Access Control ,簡稱DAC)
- C2級
- 使用者對不同的資料物件有不同的存取許可權
- 不同的使用者對同一物件也有不同的許可權
- 使用者還可將其擁有的存取許可權轉授給其他使用者
- 自主存取控制(Discretionary Access Control ,簡稱DAC)
- 常用存取控制方法(續)
- 強制存取控制(Mandatory Access Control,簡稱 MAC)
- B1級
- 每一個數據物件被標以一定的密級
- 每一個使用者也被授予某一個級別的許可證
- 對於任意一個物件,只有具有合法許可證的使用者才可以存取
- 強制存取控制(Mandatory Access Control,簡稱 MAC)
- 4.2.3 自主存取控制方法
- 通過 SQL 的GRANT 語句和REVOKE 語句實現
- 使用者許可權組成
-
- 資料物件
- 操作型別
-
- 定義使用者存取許可權:定義使用者可以在哪些資料庫物件上進行哪些型別的操作
- 定義存取許可權稱為授權
- 關係資料庫系統中存取控制物件
物件型別 |
物件 |
操 作 類 型 |
資料庫 模式 |
模式 |
CREATE SCHEMA |
基本表 |
CREATE TABLE,ALTER TABLE |
|
檢視 |
CREATE VIEW |
|
索引 |
CREATE INDEX |
|
資料 |
基本表和檢視 |
SELECT,INSERT,UPDATE,DELETE,REFERENCES, ALL PRIVILEGES |
屬性列 |
SELECT,INSERT,UPDATE, REFERENCES,ALL PRIVILEGES |
4.2.4 授權:授予與回收
1.GRANT
- GRANT語句的一般格式:
GRANT <許可權>[,<許可權>]...
ON <物件型別> <物件名>[,<物件型別> <物件名>]…
TO <使用者>[,<使用者>]...
[WITH GRANT OPTION];
- 語義:將對指定操作物件的指定操作許可權授予指定的使用者
- 發出GRANT:
- 資料庫管理員
- 資料庫物件建立者(即屬主Owner)
- 擁有該許可權的使用者
- 按受許可權的使用者
- 一個或多個具體使用者
- PUBLIC(即全體使用者)
- 發出GRANT:
- WITH GRANT OPTION子句:
- 指定:可以再授予
- 沒有指定:不能傳播
- 不允許迴圈授權
- 對屬性列的授權時必須明確指出相應屬性列名
- 執行了例4.1~例4.7語句後學生-課程資料庫中的使用者許可權定義表
授權使用者名稱 |
被授權使用者名稱 |
資料庫物件名 |
允許的操作型別 |
能否轉授權 |
DBA |
U1 |
關係Student |
SELECT |
不能 |
DBA |
U2 |
關係Student |
ALL |
不能 |
DBA |
U2 |
關係Course |
ALL |
不能 |
DBA |
U3 |
關係Student |
ALL |
不能 |
DBA |
U3 |
關係Course |
ALL |
不能 |
DBA |
PUBLIC |
關係SC |
SELECT |
不能 |
DBA |
U4 |
關係Student |
SELECT |
不能 |
DBA |
U4 |
屬性列Student.Sno |
UPDATE |
不能 |
DBA |
U5 |
關係SC |
INSERT |
能 |
U5 |
U6 |
關係SC |
INSERT |
能 |
U6 |
U7 |
關係SC |
INSERT |
不能 |
2.REVOKE
- 授予的許可權可以由資料庫管理員或其他授權者用REVOKE語句收回
- REVOKE語句的一般格式為:
REVOKE <許可權>[,<許可權>]...
ON <物件型別> <物件名>[,<物件型別><物件名>]…
FROM <使用者>[,<使用者>]...[CASCADE | RESTRICT];
-
- 將使用者U5的INSERT許可權收回的時候應該使用CASCADE,否則拒絕執行該語句
- 如果U6或U7還從其他使用者處獲得對SC表的INSERT許可權,則他們仍具有此許可權,系統只收回直接或間接從U5處獲得的許可權
- 執行例4.8~4.10語句後學生-課程資料庫中的使用者許可權定義表
授權使用者名稱 |
被授權使用者名稱 |
資料庫物件名 |
允許的操作型別 |
能否轉授權 |
DBA |
U1 |
關係Student |
SELECT |
不能 |
DBA |
U2 |
關係Student |
ALL |
不能 |
DBA |
U2 |
關係Course |
ALL |
不能 |
DBA |
U3 |
關係Student |
ALL |
不能 |
DBA |
U3 |
關係Course |
ALL |
不能 |
DBA |
U4 |
關係Student |
SELECT |
不能 |
小結:SQL靈活的授權機制
- 資料庫管理員:
- 擁有所有物件的所有許可權
- 根據實際情況不同的許可權授予不同的使用者
- 使用者:
- 擁有自己建立的物件的全部的操作許可權
- 可以使用GRANT,把許可權授予其他使用者
- 被授權的使用者
- 如果具有“繼續授權”的許可,可以把獲得的許可權再授予其他使用者
- 所有授予出去的權力在必要時又都可用REVOKE語句收回
3.建立資料庫模式的許可權
- 資料庫管理員在建立使用者時實現
- CREATE USER語句格式
CREATE USER <username>
[WITH][DBA|RESOURCE|CONNECT];
注:
CREATE USER不是SQL標準,各個系統的實現相差甚遠
- CREATE USER語句格式說明
- 只有系統的超級使用者才有權建立一個新的資料庫使用者
- 新建立的資料庫使用者有三種許可權:CONNECT、RESOURCE和DBA
- 如沒有指定建立的新使用者的許可權,預設該使用者擁有CONNECT許可權。擁有CONNECT許可權的使用者不能建立新使用者,不能建立模式,也不能建立基本表,只能登入資料庫
- CREATE USER語句格式說明(續)
- 擁有RESOURCE許可權的使用者能建立基本表和檢視,成為所建立物件的屬主。但不能建立模式,不能建立新的使用者
- 擁有DBA許可權的使用者是系統中的超級使用者,可以建立新的使用者、建立模式、建立基本表和檢視等;DBA擁有對所有資料庫物件的存取許可權,還可以把這些許可權授予一般使用者
擁有的許可權 |
可否執行的操作 |
|||
CREATE USER |
CREATE SCHEMA |
CREATE TABLE |
登入資料庫 ,執行資料查詢和操縱 |
|
DBA |
可以 |
可以 |
可以 |
可以 |
RESOURCE |
不可以 |
不可以 |
不可以 |
不可以 |
CONNECT |
不可以 |
不可以 |
不可以 |
可以,但必須擁有相應許可權 |
4.2.5 資料庫角色
- 資料庫角色:被命名的一組與資料庫操作相關的許可權
- 角色是許可權的集合
- 可以為一組具有相同許可權的使用者建立一個角色
- 簡化授權的過程
- 1.角色的建立
- CREATE ROLE <角色名>
- 2.給角色授權
- GRANT <許可權>[,<許可權>]…
- ON <物件型別>物件名
- TO <角色>[,<角色>]…
3.將一個角色授予其他的角色或使用者
GRANT <角色1>[,<角色2>]…
TO <角色3>[,<使用者1>]…
[WITH ADMIN OPTION]
-
- 該語句把角色授予某使用者,或授予另一個角色
- 授予者是角色的建立者或擁有在這個角色上的ADMIN OPTION
- 指定了WITH ADMIN OPTION則獲得某種許可權的角色或使用者還可以把這種許可權授予其他角色
一個角色的許可權:直接授予這個角色的全部許可權加上其他角色
授予這個角色的全部許可權
4.角色許可權的收回
REVOKE <許可權>[,<許可權>]…
ON <物件型別> <物件名>
FROM <角色>[,<角色>]…
-
- 使用者可以回收角色的許可權,從而修改角色擁有的許可權
- REVOKE執行者是
- 角色的建立者
- 擁有在這個(些)角色上的ADMIN OPTION
- (3)將這個角色授予王平,張明,趙玲。使他們具有角色R1所包含的全部許可權
- GRANT R1
- TO 王平,張明,趙玲;
- (4) 可以一次性通過R1來回收王平的這3個許可權
- REVOKE R1
- FROM 王平;
4.2.6 強制存取控制方法
- 可能存在資料的“無意洩露”
- 原因:這種機制僅僅通過對資料的存取許可權來進行安全控制,而資料本身並無安全性標記
- 解決:對系統控制下的所有主客體實施強制存取控制策略
- 強制存取控制(MAC)
- 保證更高程度的安全性
- 使用者不能直接感知或進行控制
- 適用於對資料有嚴格而固定密級分類的部門
- 軍事部門
政府部門
-
- 在強制存取控制中,資料庫管理系統所管理的全部實體被分為主體和客體兩大類
- 主體是系統中的活動實體
- 資料庫管理系統所管理的實際使用者
- 代表使用者的各程序
- 客體是系統中的被動實體,受主體操縱
- 檔案、基本表、索引、檢視
- 敏感度標記(Label)
- 對於主體和客體,DBMS為它們每個例項(值)指派一個敏感度標記(Label)
- 敏感度標記分成若干級別
- 絕密(Top Secret,TS)
- 機密(Secret,S)
- 可信(Confidential,C)
- 公開(Public,P)
- TS>=S>=C>=P
- 主體的敏感度標記稱為許可證級別(Clearance Level)
- 客體的敏感度標記稱為密級(Classification Level)
- 強制存取控制規則
(1)僅當主體的許可證級別大於或等於客體的密級時,該主體才能讀取相應的客體
(2)僅當主體的許可證級別小於或等於客體的密級時,該主體才能寫相應的客體
- 強制存取控制(MAC)是對資料本身進行密級標記,無論資料如何複製,標記與資料是一個不可分的整體,只有符合密級標記要求的使用者才可以操縱資料。
- 實現強制存取控制時要首先實現自主存取控制
- 原因:較高安全性級別提供的安全保護要包含較低級別的所有保護
- 自主存取控制與強制存取控制共同構成資料庫管理系統的安全機制
- 先進行自主存取控制檢查,通過自主存取控制檢查的資料物件再由系統進行強制存取控制檢查,只有通過強制存取控制檢查的資料物件方可存取。
4.3 檢視機制
- 把要保密的資料對無權存取這些資料的使用者隱藏起來,對資料提供一定程度的安全保護
- 間接地實現支援存取謂詞的使用者許可權定義
4.4 審計(Audit)
- 什麼是審計
- 啟用一個專用的審計日誌(Audit Log)
將使用者對資料庫的所有操作記錄在上面
-
- 審計員利用審計日誌
監控資料庫中的各種行為,找出非法存取資料的人、時
間和內容
-
- C2以上安全級別的DBMS必須具有審計功能
- 審計功能的可選性
- 審計很費時間和空間
- DBA可以根據應用對安全性的要求,靈活地開啟或關閉審計功能
- 審計功能主要用於安全性要求較高的部門
1.審計事件
-
- 伺服器事件
- 審計資料庫伺服器發生的事件
- 系統許可權
- 對系統擁有的結構或模式物件進行操作的審計
- 要求該操作的許可權是通過系統許可權獲得的
- 語句事件
- 對SQL語句,如DDL、DML、DQL及DCL語句的審計
- 模式物件事件
- 對特定模式物件上進行的SELECT或DML操作的審計
- 伺服器事件
2.審計功能
-
- 基本功能
- 提供多種審計查閱方式
- 多套審計規則:一般在初始化設定
- 提供審計分析和報表功能
- 審計日誌管理功能
- 防止審計員誤刪審計記錄,審計日誌必須先轉儲後刪除
- 對轉儲的審計記錄檔案提供完整性和保密性保護
- 只允許審計員查閱和轉儲審計記錄,不允許任何使用者新增和修改審計記錄等
- 提供查詢審計設定及審計記錄資訊的專門檢視
- 基本功能
3. AUDIT語句和NOAUDIT語句
-
- AUDIT語句:設定審計功能
NOAUDIT語句:取消審計功能
- 使用者級審計
- 任何使用者可設定的審計
- 主要是使用者針對自己建立的資料庫表和檢視進行審計
- 系統級審計
- 只能由資料庫管理員設定
- 監測成功或失敗的登入要求、監測授權和收回操作以及其他資料庫級許可權下的操作
4.5 資料加密
- 資料加密
- 防止資料庫中資料在儲存和傳輸中失密的有效手段
- 加密的基本思想
- 根據一定的演算法將原始資料—明文(Plain text)變換為不可直接識別的格式—密文(Cipher text)
- 加密方法
- 儲存加密
- 傳輸加密
- 儲存加密
- 透明儲存加密
- 核心級加密保護方式,對使用者完全透明
- 將資料在寫到磁碟時對資料進行加密,授權使用者讀取資料時再對其進行解密
- 資料庫的應用程式不需要做任何修改,只需在建立表語句中說明需加密的欄位即可
- 透明儲存加密
核心級加密方法: 效能較好,安全完備性較高
-
- 非透明儲存加密
- 通過多個加密函式實現
- 非透明儲存加密
- 傳輸加密
- 鏈路加密
- 在鏈路層進行加密
- 傳輸資訊由報頭和報文兩部分組成
- 報文和報頭均加密
- 端到端加密
- 在傳送端加密,接收端解密
- 只加密報文不加密報頭
- 所需密碼裝置數量相對較少,容易被非法監聽者發現並從中獲取敏感資訊
- 鏈路加密
4.6 其他安全性保護
- 推理控制
- 處理強制存取控制未解決的問題
- 避免使用者利用能夠訪問的資料推知更高密級的資料
- 常用方法
- 基於函式依賴的推理控制
- 基於敏感關聯的推理控制
- 隱蔽通道
- 處理強制存取控制未解決的問題
- 資料隱私保護
- 描述個人控制其不願他人知道或他人不便知道的個人資料的能力
- 範圍很廣:資料收集、資料儲存、資料處理和資料釋出等各個階段
4.7 小結
- 資料的共享日益加強,資料的安全保密越來越重要。
- 資料庫管理系統是管理資料的核心,因而其自身必須具有一整套完整而有效的安全性機制。
- 實現資料庫系統安全性的技術和方法
- 使用者身份鑑別
- 存取控制技術:自主存取控制和強制存取控制
- 檢視技術
- 審計技術
- 資料加密儲存和加密傳輸
- 實現資料庫系統安全性的技術和方法