Download presentation
Presentation is loading. Please wait.
1
資料庫安全 (Database Security)
2
本章內容 15.1 前言 15.2 資料庫管理系統的安全威脅 15.3 資料庫安全實作 15.4 統計資料庫安全 15.5 任意性資料庫安全
15.1 前言 15.2 資料庫管理系統的安全威脅 15.3 資料庫安全實作 15.4 統計資料庫安全 15.5 任意性資料庫安全 15.6 多層式資料庫 15.7 資訊隱碼攻擊
3
15.1 前言 在介紹資料庫安全之前,必須先對資料庫系統有一初步瞭解,才能夠知道資料庫系統有那些安全上威脅,以及需要使用那些安全技術,才能夠彌補安全上的漏洞。
4
資料庫內資料之階層關係
5
資料庫與檔案差異 資料庫是由資料庫管理系統(DBMS)管理,而檔案是由作業系統(OS)所管理。 資料庫安全比作業系統安全更為明細。
資料庫比檔案更經常被存取及更新。 資料庫之存取經常須同時關聯到數個資料表,而檔案之存取則一時間僅處理單一檔案。
6
結構化查詢語言(SQL) SQL(Structured Query Language) 1. 註解標記 “--”
在「--」符號後面的說明將不會被程式解譯 2.新增一個資料庫 CREATE DATABASE TEST 3. 建立一個資料表 CREATE TABLE TestTable ( ID int, Name char(30))
7
SQL(續) 4. 在資料表中新增一筆記錄 INSERT TestTable (ID, Name) VALUES (100, ‘test’)
5. 從資料表中顯示指定欄位的資料 SELECT ID, Name FROM TestTable 6. 更改資料表中紀錄內容 UPDATE TestTable SET ID = 101 WHERE Name = test 7. 刪除符合的資料紀錄 DELETE FROM TestTable WHERE Name = test
8
SQL(續) 設我們要查詢職員資料表中居住在台中的職員資料,其SQL 指令為: SELECT * FROM 職員資料表
WHERE 地址 = ‘台中‘ ; 其查詢結果為: 身分證字號│ 姓名 │ 地址 │生日 B 黃品潔 台中
9
15.2 資料庫安全威脅 資料庫內機密資料被非法者所竊知 資料庫內資料被非法者所篡改及偽造 資料庫內資料被非法者所破壞,讓合法者不能存取
資料庫推論(Database Inference) 資料庫聚合(Database Aggregation) 木馬藏兵(Trojan horse) 秘道(Covert Channel) 以 1 次 1 個 bit 的方式慢慢洩漏資料
10
資料庫推論 如果已知{黃品潔}同學就讀資管系,而且該班只有她一位女同學,若想得知{黃品潔}同學的英文成績 請問資管系英文成績總分
> 405 請問資管系男同學英文成績總分 > 312 非法者因此可推論出{黃品潔}同學的英文成績為 > =93分。
11
資料庫聚合 資料庫聚合是指個別資料雖不具機密性,但聚合數筆資料後卻可獲得機密資訊。 職員職位資料表 職位薪資資料表
12
15.3 資料庫安全實作 好的資料庫應該具備下列特性: 資料分享、最小資料重複、資料一致性、資料完整性、及資料安全性。
資料庫安全分下列四類: 實體安全 建構在作業系統之安全 建構在資料庫管理系統之安全 以密碼學為基礎之安全 備份資料 分散式資料庫於網路上傳輸的資料 傳遞資料的完整性與不可否認性
13
15.4 統計資料庫安全 統計資料庫是一可提供平均值(AVERAGE)、總合(SUM)、及總數(COUNT)等統計資料之資料庫。
資料庫之推論問題(Inference Problem) 未經授權者不能直接查詢該女性之薪資資料,但他可以將統計查詢結果及一些已知資訊做分析比較,進而推導出該機密資料,統計資料庫之安全性控制,基本上就是要限制這類型統計查詢,以確保個別資料隱密性。 查詢統計的資料量太大或太小都有洩露機密的可能
14
推理問題解決方法 解決統計資料庫之推理問題,可分成下列三方向: 近似查詢法 限制查詢法 追蹤法
不回答正確的結果給查詢者,而將此結果做些微修改,以偽裝正確資料。 限制查詢法 對於敏感資料的查詢及其統計量可能會危及資料庫安全時,則系統拒絕回答。 追蹤法 在回答查詢時,先分析此查詢是否會被用來推理統計資料庫之敏感資料,若是則拒絕回答。
15
近似查詢法(Add Noise) 合成法(Combining Results) 隨機取樣法(Random Sample)
隨機誤差法(Random Data Perturbation)
16
近似查詢法-合成法 個別敏感資料,很容易被推導出來,但若把數個資料項合併成一資料項,使它較不具敏感性,這種方法稱為合成法。 合成法範例
抑制查詢量範例
17
近似查詢法-隨機取樣法 每次系統所回應查詢結果,並不是從整個資料庫核算出來,而是從資料庫中隨機取樣部份資料核算。例如,某一成績資料庫,內含100位女學生資料,當要查詢女學生之平均成績時,系統並不直接計算資料庫內100位女學生平均成績,而是隨機選取學生當中95位來計算其平均成績。 對同一查詢,取樣需相同,以免不同取樣的結果被拿來進行推論。 變形: 隨機取 5%,重覆外加 隨機取 5%,以其他值取代
18
近似查詢法-隨機誤差法 每次查詢再加上一誤差值,此誤差值可為正或為負數值,這方法比隨機取樣法更簡單且更有效率,而且不用擔心相同查詢會隨機選取不同樣本。 代價:需維護此誤差值。 Min-Shiang Hwang © The McGraw-Hill Companies, Inc., 2005
19
15.5 任意性資料庫安全 資料庫安全政策: 任意性(Discretionary, 自由裁決的)安全政策 強制性(Mandatory) 安全政策 系統中權力以整個關係表的內容為單位。對使用者而言,不是對整個關係表沒有權力就是對整個關係表的所有內容都有權力。擁有者具自由裁決權利。 優點:實行容易與理論基礎簡單 缺點:資料保密的單位太大
20
存取模式 如果張三具有[存取人事資料庫中薪水少於 3 萬元的人事資料權限,當{張三}以下列SQL查詢人事資料庫時:
SELECT SALARY FROM EMP WHERE SALARY <20000 系統轉成存取要求 {張三},EMP,SELECT,SALARY < 20000) 存取法則範例
21
資料庫存取控制處理 有時可以加上存取法則 的授權者及可否將此權 限傳播出去的 flag 資訊
22
關聯基表與視窗表 關聯基表是每筆資料錄均實際儲存在磁碟內做永久保存。 視窗表(view)則是由基表抽取出來部份或結合其他基表產生出之資料表。
23
如何產生視窗表 例如,我們想查詢所有部門之平均薪資。 SQL指令: CREATE VIEW AVGSAL AS
SELECT DEPARTMENT, AVG(SALARY) FROM EMP GROUP BY DEPARTMENT 視窗表(AVGSAL)之查詢結果
24
安全性控制 採用視窗表(View)的方法來隱藏敏感的資料,以防止未經授權的使用者 執行非法行為。
由授權系統決定每一個使用者對每一個資料表的使用權限,以控制使用者對資料庫之資料的存取權限。 例如: GRANT SELECT ON TABLE VSAL TO 張三 表示授予{張三}對視窗表VSAL具有存取資料(SELECT)的權限。
25
15.6 多層式資料庫 多層式資料庫是以第四章之強迫式存取策略(Mandatory Access Control)為基礎之資料庫。
依使用者職位或等級不同,而有不同之安全等級。
26
多層式資料表 多層式資料表,是指一般資料表內,每一基本資料項(Atomic)、資料錄(Tuple)、屬性(Attribute)或欄位、及資料表(Table)本身均有一相對應之安全等級。 多層式資料表
27
機密 (Secret) 等級使用者存取的資料
NULL
28
完整性規則 實體完整性規則 關聯基表(Base Relation)之主鍵(Primary Key),其所有屬性項均不可為虛值(Null Value)。 參考完整性規則 - 關聯基表之外鍵(Foreign Key)值必須存在於其他關聯基表之主鍵,否則此外鍵須為虛值。
29
資料多重性問題 假如,有一位一般使用者新增一筆(A03、黃品硯、60K)資料錄
此時資料庫管理系統 若以資料重複原因拒絕該一般使用者儲存,該使用者將知曉資料庫中有A03之資料,反而洩漏此資訊。 若資料庫管理系統允許儲存此筆資料,如此又將造成資料重複問題,這稱為資料多重性問題(Polyinstantiation)。
30
違反多層式實體完整性規則 違反實體完整性規則 具 S 等級的使用者看到:
31
違反多層式參考完整性規則 違反參考完整性規則 TS TS
32
多重列錄(Polyinstantiated Tuple)
新增一筆紀錄
33
多重資料 具 S 等級的使用者看到:
34
15.7 資訊隱碼攻擊 正常身份認證連線 SELECT * FROM member
WHERE UID = ‘& request(“ID”) &’ AND Passwd = ‘& request(“Pwd”) &’; With UID = ‘A ’ Passwd = ‘1234’ SELECT * FROM member WHERE UID = ‘A ’ AND Passwd = ‘1234’;
35
資訊隱碼攻擊(續) 正常連線狀態
36
SQL Injection攻擊 SELECT * FROM member
WHERE UID = ‘& request(“ID”) &’ AND Passwd = ‘& request(“Pwd”) &’; UID = ‘Admin’ -- ’ Passwd = ‘ ’ SELECT * FROM member WHERE UID = ‘Admin’ --’ AND Passwd = ‘ ’;
37
SQL Injection攻擊(續)
38
SQL Injection攻擊(續) SELECT * FROM member
WHERE UID = ‘& request(“ID”) &’ AND Passwd = ‘& request(“Pwd”) &’; UID = ‘ ’ OR 1=1 -- ’ Passwd = ‘12345’ SELECT * FROM member WHERE UID = ‘ ’ OR 1=1 --’ AND Passwd = ‘ 12345’;
39
SQL Injection其他輸入指令 輸入的SQL指令 產生的後果 ' ;SHUTDOWN-- 停止SQL伺服器
' ;DROP Database <資料庫名稱>-- 刪除資料庫 ' ;DROP Table <資料表名稱>-- 刪除資料表 ' ;DELETE FROM <資料表名稱>-- ' ;Truncate Table <資料表名稱>-- 清空資料表
40
SQL Injection的防範 1.網頁程式撰寫方面 2.資料庫管制方面 (1)過濾輸入條件 (2)過濾可能隱含的SQL指令
(3)針對輸入條件進行規範 2.資料庫管制方面 (1)SA管理帳號的密碼管控 (2)刪除多餘的公開資料表、範例等 (3)移除不必要但功能強大的延伸預存程序 (Extended Stored Procedure)
41
SQL Injection的防範(續) 3.網站伺服器方面 4.外部防護系統的控管 (1)定期修補作業系統與網站伺服器的漏洞
(2)避免ASP、PHP與JSP程式源碼 (Source Code)洩漏 (3)不提供錯誤訊息給使用者 4.外部防護系統的控管 (1)藉由防火牆系統管制連線 (2)藉由Host-based IDS或Application-based IDS監控系統運作
Similar presentations