官术网_书友最值得收藏!

4.2 數據庫安全性控制概述

視頻二維碼(掃碼觀看)

◆非法使用數據庫的情況

·編寫合法程序繞過DBMS及其授權機制

·直接或編寫應用程序執行非授權操作

·通過多次合法查詢數據庫從中推導出一些保密數據

例:某數據庫應用系統禁止查詢單個人的工資,但允許查任意一組人的平均工資。用戶甲想了解張三的工資,于是他:

首先查詢包括張三在內的一組人的平均工資,然后查用自己替換張三后這組人的平均工資,從而推導出張三的工資

·破壞安全性的行為可能是無意的,故意的,惡意的。

·計算機系統中,安全措施是一級一級層層設置。

計算機系統的安全模型:

◆數據庫安全性控制的常用方法

·用戶標識和鑒定

·存取控制

·視圖

·審計

·密碼存儲

4.2.1 用戶標識與鑒別

◆用戶標識與鑒別(Identification & Authentication)

·系統提供的最外層安全保護措施。

基本方法

·系統提供一定的方式讓用戶標識自己的名字或身份

·系統內部記錄著所有合法用戶的標識;

·每次用戶要求進入系統時,由系統核對用戶提供的身份標識;

·通過鑒定后才提供機器使用權;

·用戶標識和鑒定可以重復多次。

◆用戶標識

◆口令

·系統核對口令以鑒別用戶身份

◆用戶名和口令易被竊取

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

·系統提供一個隨機數

·用戶根據自己預先約定的計算過程或者函數進行計算

·系統根據用戶計算結果是否正確鑒定用戶身份

◆有些DBMS除了訪問DBMS的賬號外,為了訪問制定的數據庫,還需要另外的賬號

4.2.2 存取控制

◆存取控制機制組成

·定義用戶權限

·合法權限檢查

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

◆常用存取控制方法

·自主存取控制(Discretionary Access Control,簡稱DAC):用戶對不同的數據對象有不同的存取權限,不同用戶對同一對象有不同的權限,可轉授用戶存取權限。

C2級靈活

·強制存取控制(Mandatory Access Control,簡稱MAC):每一數據對象標以一定密級,每一用戶對應某一級別的許可證,只有具有合法許可證的用戶才可以存取某一對象。

B1級嚴格

◆常用存取控制方法

·自主存取控制DAC

同一用戶對于不同的數據對象有不同的存取權限

不同的用戶對同一對象也有不同的權限

用戶還可將其擁有的存取權限轉授給其他用戶

·強制存取控制MAC

每一個數據對象被標以一定的密級

每一個用戶也被授予某一個級別的許可證

對于任意一個對象,只有具有合法許可證的用戶才可以存取

4.2.3 自主存取控制方法

◆定義存取權限

·存取權限由兩個要素組成:

數據對象

操作類型

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

◆用戶權限組成

數據對象

操作類型

◆定義用戶存取權限

定義用戶可以在哪些數據庫對象上進行哪些類型的操作

◆定義存取權限稱為授權

◆關系數據庫系統中存取控制對象

關系數據庫中的存取權限:

4.2.4 授權與回收

視頻二維碼(掃碼觀看)

一、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;

【例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 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不能再傳播此權限。

下表是執行了【例1】到【例7】的語句后,學生-課程數據庫中的用戶權限定義表:

二、REVOKE

◆授予的權限可以由DBA或其他授權者用REVOKE語句收回

◆REVOKE語句的一般格式為:

REVOKE <權限>[,<權限>]… [ON <對象類型> <對象名>] FROM <用戶>[,<用戶>]…;

【例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處獲得的權限

執行【例8】到【例10】的語句后,學生-課程數據庫中的用戶權限定義表:

小結:SQL靈活的授權機制

◆DBA:擁有所有對象的所有權限

·不同的權限授予不同的用戶

◆用戶:擁有自己建立的對象的全部的操作權限

·GRANT:授予其他用戶

◆被授權的用戶

·“繼續授權”許可:再授予

◆所有授予出去的權力在必要時又都可用REVOKE語句收回

三、創建數據庫模式的權限

◆DBA在創建用戶時實現

◆CREATE USER語句格式

CREATE USER <username> [WITH][DBA | RESOURCE | CONNECT];

權限與可執行的操作對照表:

授權的一些其他問題

◆如果一個用戶創建了一個對象(關系/視圖/角色),則擁有對此基表的全部權限(包括授予別人權限的權限)!

◆SQL授權的一些缺陷:

·不能實現元組級的授權(可以通過視圖或觸發器來實現)

·視圖的一些問題

4.2.5 數據庫角色

◆數據庫角色:被命名的一組與數據庫操作相關的權限

·角色是權限的集合

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

·簡化授權的過程

一、角色的創建

CREATE ROLE <角色名>;

二、給角色授權

GRANT <權限>[,<權限>]… ON <對象類型>對象名 TO <角色>[,<角色>]…;

三、將一個角色授予其他的角色或用戶

GRANT <角色1>[,<角色2>]… TO <角色3>[,<用戶1>]… [WITH ADMIN OPTION];

四、角色權限的收回

REVOKE <權限>[,<權限>]… ON <對象類型> <對象名> FROM <角色>[,<角色>]…;

【例11】通過角色來實現將一組權限授予一個用戶。

步驟如下:

1.首先創建一個角色R1

CREATE ROLE R1;

2.然后使用GRANT語句,使角色R1擁有Student表的SELECT、UPDATE、INSERT權限

GRANT SELECT,UPDATE,INSERT ON TABLE Student TO R1;

3.將這個角色授予王平,張明,趙玲。使他們具有角色R1所包含的全部權限

GRANT R1 TO 王平,張明,趙玲;

4.可以一次性通過R1來回收王平的這3個權限

REVOKE R1 FROM 王平;

【例12】角色的權限修改

GRANT DELETE ON TABLE Student TO R1;

【例13】

REVOKE SELECT ON TABLE Student FROM R1;

4.2.6 強制存取控制方法

◆自主存取控制缺點

可能存在數據的“無意泄露”

◆原因:這種機制僅僅通過對數據的存取權限來進行安全控制,而數據本身并無安全性標記。

◆解決:對系統控制下的所有主客體實施強制存取控制策略。

◆強制存取控制(MAC)

·保證更高程度的安全性

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

·適用于對數據有嚴格而固定密級分類的部門

軍事部門

政府部門

◆主體是系統中的活動實體

·DBMS所管理的實際用戶

·代表用戶的各進程

◆客體是系統中的被動實體,是受主體操縱的

·文件

·基表

·索引

·視圖

◆敏感度標記(Label)

·絕密(Top Secret)

·機密(Secret)

·可信(Confidential)

·公開(Public)

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

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

◆強制存取控制規則

(1)僅當主體的許可證級別大于或等于客體的密級時,該主體才能讀取相應的客體

(2)僅當主體的許可證級別等于客體的密級時,該主體才能寫相應的客體

◆修正規則

·主體的許可證級別<=客體的密級→主體能寫客體

◆規則的共同點

禁止了擁有高許可證級別的主體更新低密級的數據對象

MAC與DAC

◆DAC與MAC共同構成DBMS的安全機制

◆實現MAC時要首先實現DAC

原因:較高安全性級別提供的安全保護要包含較低級別的所有保護

·DAC+MAC安全檢查示意圖

◆先進行DAC檢查,通過DAC檢查的數據對象再由系統進行MAC檢查,只有通過MAC檢查的數據對象方可存取。

主站蜘蛛池模板: 安阳县| 朝阳市| 青龙| 景宁| 桐庐县| 长白| 吉安县| 海淀区| 田阳县| 河北省| 济南市| 澜沧| 泗阳县| 理塘县| 澎湖县| 镇江市| 即墨市| 万宁市| 九龙城区| 本溪市| 长武县| 成安县| 芦山县| 兴宁市| 南充市| 莆田市| 醴陵市| 浦城县| 彰武县| 娄底市| 图们市| 东阿县| 新昌县| 中卫市| 商城县| 北安市| 共和县| 济阳县| 灌阳县| 高清| 惠东县|