1. 程式人生 > >《數據庫系統概論》 -- 4. 數據庫安全性

《數據庫系統概論》 -- 4. 數據庫安全性

role 安全控制 ole 強制 https 全功能 aud 進程 函數實現

背景

  非授權用戶對數據庫的惡意存取和破壞

數據庫中重要或敏感數據被泄露

安全環境的脆弱性

概念

  保護數據庫以防止不合法使用所造成的數據泄露、更改或破壞

安全標準

  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];

說明

DBA--系統中的超級用戶,可以創建用戶、模式、基本表、視圖,擁有所有數據庫對象的存取權限,還可以授權給一般用戶

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. 數據庫安全性