筆記:數據庫安全實現的基本途徑、自發存取機制、視圖機制、審計技術

 

用戶標識

口令

    系統覈對口令以鑑別用戶身份

用戶名和口令易被竊取

    每個用戶預先約定好一個計算過程或者函數


存取控制機制

組成       

定義用戶權限

合法權限檢查

用戶權限定義和合法權檢查機制一起組成了DBMS的安全子系統

常用存取控制方法

自主存取控制(Discretionary Access Control ,簡稱DAC)  C2級  靈活

強制存取控制(Mandatory Access Control,簡稱 MAC) B1級 嚴格


自主存取(DAC)

通過 SQL 的 GRANT 語句和 REVOKE 語句實現

授權 GRANT

語義:(有該操作權限的用戶/DBA)將對指定操作對象的指定操作權限授予指定的用戶       

GRANT <權限>[,<權限>]...        

[ON <對象類型> <對象名>]        

TO <用戶>[,<用戶>]...        

[WITH GRANT OPTION]; //有這句話,表示可以把權限授予下一級用戶,不能循環

對象類型

對象

操 作 類 型

數據庫

模式

CREATE SCHEMA

 

基本表

CREATE TABLE,ALTER TABLE

模式

視圖

CREATE VIEW

 

索引

CREATE INDEX

數據

基本表和視圖

SELECT,INSERT,UPDATE,DELETE,REFERENCES,

ALL PRIVILEGES

數據

屬性列

SELECT,INSERT,UPDATE, REFERENCES(對列授權,須指出列名)

 

 

ALL PRIVILEGES

 收回 REVOKE

REVOKE <權限>[,<權限>]...      

[ON <對象類型> <對象名>]      

FROM <用戶>[,<用戶>]...;


舉例

grant

[例1] 把查詢Student表權限授給用戶U1

    grant select on table student to u1;

[例2] 把對Student表和Course表的全部權限授予用戶U2和U3

    grant all privileges on table student , course to u2,u3;

[例3] 把對錶SC的查詢權限授予所有用戶

    grant select on table sc to public;

[例4] 把查詢Student表和修改學生學號的權限授給用戶U4(對列授權,須指出列名)

    grant select,update(sno) on table student to u4;

[例5] 把對錶SC的插入權限授予U5用戶,並允許他再將此權限授予其他用戶

    grant insert on table sc to u5 with grant option;

執行例5後,U5不僅擁有了對錶SC的INSERT權限,還可以傳播此權限:  

[例6]

GRANT INSERT ON TABLE SC TO U6 

WITH GRANT OPTION;  

同樣,U6還可以將此權限授予U7:  

[例7]

GRANT INSERT ON TABLE SC TO U7;  

但U7不能再傳播此權限。

revoke

[例8] 把用戶U4修改學生學號的權限收回

    revoke update(sno) on table student from u4;

[例9] 收回所有用戶對錶SC的查詢權限

    revoke select on table sc from public;

[例10] 把用戶U5對SC表的插入權限收回

    revoke insert on table from u5 cascade;

將用戶U5的INSERT權限收回的時候必須級聯(CASCADE)

收回 系統只收回直接或間接從U5處獲得的權限


數據庫角色

角色是權限的集合

可以爲一組具有相同權限的用戶創建一個角色

簡化授權的過程

1創建用戶(DBA)

CREATE USER語句格式 

CREATE  USER  <username>  

[WITH][DBA | RESOURCE | CONNECT]

擁有的權限

可否執行的操作

CREATE USER

CREATE SCHEMA

CREATE TABLE

登錄數據庫 執行數據查詢和操縱

DBA

可以

可以

可以

可以

RESOURCE

不可以

不可以

不可以

不可以

CONNECT

不可以

不可以

不可以

可以,但必須擁有相應權限

2創建角色

CREATE  ROLE  <角色名>

3給角色授權  

GRANT  <權限>[,<權限>]…  

ON <對象類型>對象名    

TO <角色>[,<角色>]…

4將一個角色授予其他角色或用戶

GRANT  <角色1>[,<角色2>]…

TO  <角色3>[,<用戶1>]… [

WITH ADMIN OPTION]

5角色權限的收回

REVOKE <權限>[,<權限>]…

ON <對象類型> <對象名>

FROM <角色>[,<角色>]…


強制存取控制(MAC)

保證更高程度的安全性

用戶能不能直接感知或進行控制

適用於對數據有嚴格而固定密級分類的部門 :軍事部門  政府部門

權限:

敏感度標記(Label) :絕密(Top Secret) 機密(Secret) 可信(Confidential) 公開(Public)

主體就是使用客體的DBA、進程,客體就是基本表、視圖等。

主體的敏感度標記稱爲許可證級別(Clearance Level)

客體的敏感度標記稱爲密級(Classification Level)

 強制存取控制規則

 (1)主體>=客體時,主體才能客體

 (2)主體==客體時,主體才能客體

修正規則:主體<=客體,主體能寫客體///?爲什麼這裏變成了<=才能寫?

DAC與MAC共同構成DBMS的安全機制:實現MAC時要首先實現DAC


視圖機制

(建一個視圖,然後把視圖的查詢權限給用戶。其他數據用戶就找不到了)

保密的數據對無權存取這些數據的用戶隱藏

主要功能:提供數據獨立性, 間接實現:支持存取謂詞的用戶權限定義


審計技術

審計日誌(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

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章