《數據庫系統概論》 -- 4. 數據庫安全性
背景
非授權用戶對數據庫的惡意存取和破壞
數據庫中重要或敏感數據被泄露
安全環境的脆弱性
概念
保護數據庫以防止不合法使用所造成的數據泄露、更改或破壞
安全標準
1985--TCSEC (Trusted Computer System Evaluation Criteria)
1996--CC (Common Criteria)
1999--CC V2.1成為國際標準
TSSEC
4組7個等級
D、C(C1,C2)、B(B1,B2,B3)、A(A1)
安全程度由低到高
CC
三部分組成:簡介和一般模型、安全功能要求、安全保證要求
安全保證要求:7大類、26個子類和74個組件。
根據系統對安全保證的要求提出了7級評估保證級(Evaluation Assurance Level)
EAL2、EAL3對應C1、C2;
EAL4、EAL5、EAL6對應B1、B2、B3;
EAL7對應A1
數據庫安全控制
用戶身份鑒別
靜態口令鑒別、動態口令鑒別、生物特征鑒別、智能卡鑒別
(智能卡:一種不可復制的硬件,內置集成電路芯片,具有硬件加密的功能)
存取控制
理解
C2級的DBMS支持自主存取控制(Discretionary Access Control)和強制存取控制(Mandatory Access Control)
DAC--權限管理GRANT、REVOKE、ROLE
創建用戶
格式 CREATE USER <username> [WITH] [DBA|RESOURCE|CONNECT];
說明
RESOURCE--可以創建基本表和視圖,成為所創建對象的屬主,不能創建模式,不能創建用戶
CONNECT--只能登錄數據庫,權限由數據庫管理員或其他用戶授予
授權
格式 GRANT <權限>[,<權限>...]
ON <對象類型> <對象名>[,<對象類型> <對象名>...]
[WHEN <條件表達式>]
TO <用戶|角色>[,<用戶|角色>...]
[WITH GRANT OPTION];
說明 用戶可以是PUBLIC,即全體用戶
WITH GRANT OPTION表明用戶可以將他所得到的權限繼續授權給其他人,但是不允許再授回給授權者或祖先授權者
在授予用戶在屬性列的INSERT權時,必須要包含主碼
SQL中,USER()代表當前用戶
舉例 把查詢Student表的權限授給用戶U1
GRANT SELECT
ON TABLE Student
TO U1;
把對Student表和Course表的全部操作權限授予U2和U3
GRANT ALL PRIVILEGES
ON TABLE Student, Course
TO U2, U3;
把對SC表的查詢權限授予所有用戶
GRANT SELECT
ON TABLE SC
TO PUBLIC;
把查詢Student表和修改學生學號的權限授予U4
GRANT SELECT, UPDATE(Sno)
ON TABLE Student
TO U4;
把對表SC的INSERT權限授予U5用戶,並允許將此權限再授予其他用戶
GRANT INSERT
ON TABLE SC
TO U5
WITH GRANT OPTION;
取消授權
格式 REVOKE <權限>[,<權限>...]
ON <對象類型> <對象名>[,<對象類型> <對象名>...]
FROM <用戶|角色>[,<用戶|角色>...] [CASCADE|RESTRICT];
說明 CASCADE--如果用戶已經授權給了其他用戶,則必須使用CASCADE,否則系統拒絕執行
舉例 把用戶U4修改學生學號的權限收回
REVOKE UPDATE(Sno)
ON TABLE Student
FROM U4;
收回所有用戶對表SC的查詢權限
REVOKE SELECT
ON TABLE SC
FROM PUBLIC;
把用戶U5對SC表的INSERT權限收回
REVOKE INSERT
ON TABLE SC
FROM U5 CASCADE;
角色
創建 CREATE ROLE <角色名>;
使用 將一個角色授予其他的角色或用戶
GRANT <角色>[,<角色>...]
TO <用戶|角色>[,<用戶|角色>...]
[WITH ADMIN OPTION]
去掉用戶的某角色
REVOKE <角色>[,<角色>...]
FROM <用戶>[,[用戶]...]
舉例 角色R1擁有Student表的SELECT、UPDATE、INSERT權限,授予王平、張明、趙玲三人R1角色,之後取消角色R1的INSERT和UPDATE權限,之後收回王平的R1角色
CREATE ROLE R1;
GRANT SELECT, UPDATE, INSERT ON TABLE Student TO R1;
GRANT R1 TO 王平,張明,趙玲;
REVOKE INSERT, UPDATE ON TABLE Student FROM R1;
REVOKE R1 FROM 王平;
MAC(強制存取控制策略)
概念 主體--系統中的活動實體,既包括實際用戶,也包括用戶的各進程
客體--系統中的被動實體,受主體操縱的文件、基本表、索引、試圖等
理解 系統為主體和客體的每個實例都指派一個敏感度標記(label)
敏感度標記級別:絕密TS、機密S、可信C、公開P
主體的label稱為許可證級別,客體的label稱為密級
MAC的規則
僅當主體的許可證級別高於客體的密級時,主體才能讀取該客體;
僅當主體的許可證級別低於客體的密級時,主體才能寫入該客體;
視圖機制
為不同的用戶定義不同的視圖,把數據對象限制在一定的範圍內
審計
理解 審計功能把用戶對數據庫的所有操作自動記錄下來放到審計日誌audit log中。
可以審計的事件包括服務器事件、系統權限、語句事件、模式對象事件、用戶鑒別、自主訪問控制和強制訪問控制事件
既能審計成功的操作,也可以審計失敗的操作
開啟審計功能,必須打開系統審計開關(系統參數audit_trail=true)
舉例 對修改SC表結構或修改SC表數據的操作進行審計
AUDIT ALTER, UPDATE ON SC;
取消對SC表的一切審計
NOAUDIT ALTER, UPDATE ON SC;
數據加密
存儲加密
透明存儲加密(內核級加密)
在創建表語句中說明需要加密的字段,即可實現:數據操作(增刪改查)由DBMS實現自動對數據進行加密解密工作
非透明存儲加密(通過多個加密函數實現)
傳輸加密
鏈路加密
在數據鏈路層進行加密,對報頭和報文都加密
端到端加密
與HTTPS原理相同,采用安全套接層協議SSL,是一種端到端的加密
1.通過CA證書確認通信雙方端點的可靠性
2.通過PKI協商加密算法和密鑰
3.傳輸可信數據
其他安全保護
推理控制:避免用戶利用其能夠訪問的數據推知更高密級的數據。如函數依賴推知他人工資
隱蔽信道:
數據隱私保護技術
《數據庫系統概論》 -- 4. 數據庫安全性