前言
? ? ? ? "<數據庫原理及應用>(MySQL版)".以下稱為"本書"中第5章前6節內容
引入
? ? ? ? 數據庫的安全性是非常重要的,表現在兩個方面:一數據的訪問權限,二數據的物理安全.本書在這一章前6節基本上都是理論性的內容,選擇其中重要部分進行解讀.
5.1數據庫安全性概述
大體在講解數據庫安全的重要性.其中提到了"自主"和"強制"存取的概念
自主存取控制
讀SELECT | 插入INSERT | 修改UPDATE | 刪除DELETE | |
用戶1 | Y | Y | Y | Y |
用戶2 | Y | N | N | N |
… | … | … | … | … |
用戶n | Y | Y | N | N |
表A的自主存取控制表 |
如上表,對于每個表都可以設置一個自主存取權限表,列出每個用戶的操作權限
索引Index | 資源Resource | 修改Alteration | 撤銷Drop | |
用戶1 | Y | Y | Y | Y |
用戶2 | Y | N | N | N |
… | … | … | … | … |
用戶n | Y | Y | N | N |
數據庫B的自主存取權限表 |
同理對于每個數據庫,也可設置一個權限表.
自主存取控制的優點是"精細",也是常見的方法.
強制存取控制
可以用兩個表來說明含義
用戶等級 | 數據等級 | |||
用戶1 | 1 | 數據1 | 2 | |
用戶2 | 2 | 數據2 | 4 | |
… | … | |||
用戶n | 6 | 數據n | 5 | |
用戶等級表 | 數據等級表 |
?用戶和數據(表或者數據庫)的關系是:當用戶等級數字小于數據等級數字,即擁有存取權限.例如用戶1的等級為1等(假設為最高等),則對所有表(或所有數據庫)的數據擁有權限.再例如用戶n的等級為3等,有個表的數據等級為2等.則用戶n被禁止訪問這個表(或者可訪問但禁止修改刪除).
5.2數據庫安全控制
? ? ? ? 本節從4個方面來說明數據庫安全性,圖5-1計算機系統的安全模型
1.用戶標識與鑒別能力
? ? ? ? 例如用戶名密碼輸入,搜索數據庫中的user表,查找用戶名,如果不能匹配,則顯示"該用戶不存在";匹配到之后用SELECT語句搜索其密碼,再用輸入密碼與表中密碼匹配,匹配成功允許登陸,否則顯示"密碼輸入不正確"---以上也是登陸的需求描述,可以根據需求寫出算法.
? ? ? ? 本書P137提到了"用戶的特有東西識別",例如先行用電子狗驗證,再識別用戶和密碼.
? ? ? ? 其余略
2.數據庫用戶存取權限控制
? ? ? ? 和5.1節中內容相關,此處的授權與取消等內容,在后面有詳細講述.
3.操作系統安全保護
? ? ? ? 數據庫管理軟件DBMS始終是安裝在操作系統上的.他與數據的交互依賴于操作系統.如果操作系統有漏洞可能導致數據泄露或被破壞.但對于非操作系統的數據庫程序員來說,要懂操作系統,本書并沒有相關講解.
4.數據加密存儲
? ? ? ? 即使數據被非法取得,數據的安全性也可以由加密來保護.在后面有所講述.
5.3視圖機制
? ? ? ? 前面提到過視圖的意思是:查詢語句文件化.通過一個表的查詢產生視圖,相當于生成表的副本.
? ? ? ? 視圖機制是在視圖(表副本)的基礎上,給不同用戶授予權限.
? ? ? ? ---筆者個人感覺用處不大,因為要建立視圖需要多占空間.直接在數據庫上定義權限更好.
5.4安全級別和審計追蹤
? ? ? ? 安全級別就是安全的等級.
? ? ? ? 本書P141倒數第二段提到了審計追蹤的概念:審計功能把用戶對數據庫的所有操作自動記錄下來放入"審計日志"(audit log)中,稱為審計追蹤.關于日志的建立,上一帖中的觸發器有講解.利用觸發器機制,建立日志,可查詢數據的變化.
5.5 數據加密
? ? ? ? 本書提到了兩種加密法:替換加密法和轉換加密法
替換加密法
? ? ? ? 原文的字符用其他某個域的符號代替.假設有一段原文:"我從山中來,帶著蘭花草."包括標點在內共12個字符,選取域符號為所有英文小寫字母{a,b,c,d,e,f,g,h,i,j,k,l,m,n.....z},表達為{abcdefghijkl},那么每個漢字分別有對應的字母.
? ? ? ? 假設有n個字符的原文,去除重復后有m個字符,選取域符號有k個,那么有k*(k-1)*...*(k-m-1)種組合.例如這里就有26*25*....*13種可能.
轉換加密法
? ? ? ? 原文字符重新排序.假設有n個字符,那么排序可能有n!種
圖示
????????如果要解密的話,可能有k*(k-1)*...*(k-m-1)*(n!)種組合.如果字數很多,理論上解密時間是很長很長的.
? ? ? ? 但這只是簡單描述數據加密情況,還有一些要考慮:
? ? ? ? 1>本書提到了替換加密法的問題:用多了可能被猜到.如果每次都用同一選取域,再根據寫作的行文風格,是有這種可能的.站在加密方,準備很多個選取域.
? ? ? ? 2>替換算法中間還可以增加,例如前一半的字符采用選取域A,后一半的字符采用選取域B
聲明
? ? ? ? 像以前的一些電影上一樣,解密靠一本書或者字典.就是說密碼破解可能很難,但設置容易.數據加密和解密是專門一門學科,某度可以搜"密碼學",涵蓋了概率論,數字邏輯,數論等許多和數學相關的學科.筆者只是一時興起,僅根據本書內容做一點發散思考.
5.6統計數據庫的安全性
? ? ? ? 本書講了不少,最后結論統計數據庫基本上都不安全.但防范起來很簡單,給很少的搜索權限即可
小結
? ? ? ? 數據庫安全性理論部分的解讀
? ? ? ?
????????