楊 蘇(河南牧業(yè)經(jīng)濟學(xué)院,鄭州 450044)
?
數(shù)據(jù)庫安全性設(shè)計
楊蘇
(河南牧業(yè)經(jīng)濟學(xué)院,鄭州450044)
摘要:數(shù)據(jù)庫的共享使用是其一個重要的作用和功能,但是數(shù)據(jù)共享如果不加入一些規(guī)則和限制會給數(shù)據(jù)庫帶來安全性問題。我們應(yīng)該明白數(shù)據(jù)庫系統(tǒng)中的數(shù)據(jù)共享不能是無條件的共享。如何保護數(shù)據(jù)庫防止一些用戶因不當(dāng)?shù)募安缓戏ǖ氖褂迷斐蓴?shù)據(jù)更改、破壞或泄漏,這就需要使用一些技術(shù)手段。本文主要以O(shè)racle數(shù)據(jù)庫為對象研究如何運用安全措施保證數(shù)據(jù)庫的安全。
關(guān)鍵詞:數(shù)據(jù)庫;數(shù)據(jù)共享;Oracle數(shù)據(jù)庫;數(shù)據(jù)庫安全
現(xiàn)在信息系統(tǒng)的開發(fā)中數(shù)據(jù)庫的設(shè)計所在比重越來越大,防止數(shù)據(jù)庫不被非法訪問、破壞和提高數(shù)據(jù)庫的性能是數(shù)據(jù)庫設(shè)計非常重要的環(huán)節(jié),數(shù)據(jù)庫安全性設(shè)計和性能優(yōu)化已被廣大系統(tǒng)開發(fā)者所重視。
2.1用戶標識與鑒別
在我們使用的計算機系統(tǒng)中,安全措施是分很多層次的,用戶標識與鑒別是系統(tǒng)所能夠提供的安全保護措施中最外面的一層。其方法是由系統(tǒng)為用戶提供一定的方式和規(guī)則讓用戶標識自己的名字或身份,以便每次用戶登陸系統(tǒng)時,對比數(shù)據(jù)庫記錄的合法用戶信息,通過驗證方能訪問數(shù)據(jù)庫。具體設(shè)計數(shù)據(jù)庫時我們可以創(chuàng)建sys_user表,這些用戶的標識和鑒別信息在sys_user表中保存,用戶每次登錄系統(tǒng)時應(yīng)用程序都會對比用戶所輸入的用戶名和密碼與數(shù)據(jù)庫這樣就可以確定用戶是否合法。
2.2存取控制
數(shù)據(jù)庫安全中最重要的一方面是確保只允許有一定資格的用戶去訪問數(shù)據(jù)庫中特定的表或者數(shù)據(jù),這主要是通過數(shù)據(jù)庫系統(tǒng)的存取控制實現(xiàn)的。目的是將用戶權(quán)限等級到數(shù)據(jù)字典中。用戶只訪問他有權(quán)訪問的數(shù)據(jù)。每當(dāng)用戶進行某些數(shù)據(jù)的查詢、插入、修改、刪除等操作時,先對其進行一些檢查,主要檢查這些用戶的操作權(quán)限,若用戶的操作請求超出了或者不符合系統(tǒng)定義的權(quán)限,系統(tǒng)將拒絕用戶執(zhí)行此操作。
比如:管理人員可以被允許訪問系統(tǒng)內(nèi)全部的數(shù)據(jù);單個部門只能訪問本部門的在建以及歷史數(shù)據(jù)。
2.3定義視圖
視圖是從一個或者多個表(視圖)中所導(dǎo)出的表,其結(jié)構(gòu)的構(gòu)成和數(shù)據(jù)確立是建立在查詢這些表(視圖)基礎(chǔ)上的。視圖并不是真是存在的表而是一張?zhí)摫?,視圖所對應(yīng)的數(shù)據(jù)是在視圖所引用的基礎(chǔ)表中存儲的。
在關(guān)系數(shù)據(jù)庫中,可以根據(jù)實際的需求為特定的用戶定義特定的視圖。讓表中的一部分數(shù)據(jù)只對一部分特定的用戶可見。如果一些數(shù)據(jù)是保密的,就可以使用視圖把這些數(shù)據(jù)隱藏起來,使沒有獲得授權(quán)的用戶不能看到這些數(shù)據(jù)。對數(shù)據(jù)庫提供安全保護。
比如某公司有A、B兩個部門,A部門只能訪問本部門的在建、歷史項目數(shù)據(jù);其他項目的數(shù)據(jù)對其是不可見的??梢詾锳項目建立“部門人力資源視圖”,從數(shù)據(jù)庫“部門人力資源信息表”查看A項目的人員情況。
2.4使用存儲過程
存儲過程通過隔離的方法提高了數(shù)據(jù)庫的安全性,通過授權(quán)可以讓用戶只能執(zhí)行存儲構(gòu)成而不能直接訪問數(shù)據(jù)庫對象。建立一個存儲過程是很靈活的,并且可以實現(xiàn)一定的邏輯處理。
2.5充分利用系統(tǒng)全局區(qū)域SGA(System Global Area)
我們用Oracle設(shè)計數(shù)據(jù)庫,當(dāng)我們啟動Oracle的數(shù)據(jù)庫時,系統(tǒng)為了儲存用戶所需要數(shù)據(jù)及Oracle正常運行所必備系統(tǒng)信息,首先會在內(nèi)存內(nèi)規(guī)劃出來一個固定的區(qū)域使用。這個區(qū)域我們稱為系統(tǒng)全局區(qū)(System Global Area),簡稱SGA。數(shù)據(jù)庫管理員可以依據(jù)數(shù)據(jù)庫實際運行狀況根據(jù)需要調(diào)整數(shù)據(jù)庫系統(tǒng)全局區(qū)(SGA區(qū))的數(shù)據(jù)庫緩沖區(qū)、共享池和日志緩沖區(qū)的大小。只有合理設(shè)置這些內(nèi)存緩沖區(qū),才可很大加快數(shù)據(jù)的查詢速度,只要所使用的內(nèi)存區(qū)足夠大就可以把絕大多數(shù)的數(shù)據(jù)都存儲在內(nèi)存中,只有那些不活躍的不經(jīng)常使用的數(shù)據(jù),才從磁盤中讀取。這里有一點是需要注意的,SGA區(qū)并不是我們想象的越大越好,SGA區(qū)如果過大就會占用操作系統(tǒng)所使用的內(nèi)存從而引起虛擬內(nèi)存的頁面交換,這樣的話反而會降低系統(tǒng)運行性能, SGA的尺寸不大于物理內(nèi)存的一半是我們所設(shè)計的原則。
在 Oracle8i 中,SGA 的大小不是手動設(shè)置而是由初始化參數(shù)文件內(nèi)的一些參數(shù)所設(shè)定,這其中有不是很方便的地方是每次調(diào)整后必須等重新激活數(shù)據(jù)庫這才能生效。從Oracle9i 以后,DBA 可以動態(tài)配置內(nèi)存的大?。贿@樣的數(shù)據(jù)庫技術(shù)我們稱為「dynamicSGA」。有了dynamic SGA ,SGA的各組成區(qū)域都可以動態(tài)地進行規(guī)劃與調(diào)整,而不需先關(guān)閉數(shù)據(jù)庫。
數(shù)據(jù)庫管理員只有認真分析Oracle在其運行使用過程中可能出現(xiàn)的各種安全性問題,綜合運用上面介紹的規(guī)律,Oracle數(shù)據(jù)庫才能高效、安全、可靠地運行。這里還需要指出的是,數(shù)據(jù)庫的安全是一個系統(tǒng)工程,涉及到方方面面,我們設(shè)計的時候要考慮到各個方面綜合分析,不能只根據(jù)一個特定時間點的安全情況就斷定數(shù)據(jù)庫安全運行的好與壞。
參考文獻:
[1]聶軍.論數(shù)據(jù)庫安全性設(shè)計[J].中國現(xiàn)代教育裝備,2009(01).
[2]凃云杰.云背景下的數(shù)據(jù)庫安全性研究[J].價值工程,2015(21).
[3]常紅梅.基于存儲過程的數(shù)據(jù)庫安全性實踐初論[J].網(wǎng)絡(luò)安全技術(shù)與應(yīng)用,2014(04).
[4]郭霞.基于Oracle數(shù)據(jù)庫性能優(yōu)化技術(shù)研究[J].電腦知識與技術(shù),2011(07).
DOI:10.16640/j.cnki.37-1222/t.2016.11.234