摘要:Oracle數據庫占據了目前世界主流商用數據庫系統市場80%以上的份額,該文詳細分析了Oracle 10g數據庫的安全體系結構,提出了一種較為完備的Oracle數據庫應用系統的安全策略。
關鍵詞:Oracle數據庫;安全性;策略
中圖分類號:TP311文獻標識碼:A 文章編號:1009-3044(2010)21-6058-02
隨著社會信息化進程的加速,數據庫系統得到了廣泛應用,它們擔負著存儲和管理信息的任務,集中存放了大量數據,因此數據庫的安全性受到人們的廣泛關注。
所謂數據庫的安全性是指數據庫的任何部分都不允許受到惡意侵害或未經授權的存取或修改。其主要內涵包括三個方面:1) 保密性,即不允許未授權的用戶存取信息。2) 完整性,即只允許被授權用戶修改數據。3) 可用性,即不應拒絕已授權用戶對數據的存取訪問。
數據庫系統受到的威脅主要有:對數據庫的不正確訪問,引起數據庫數據的錯誤;為了某種目的,故意破壞數據庫,使其不能恢復;非法訪問不該訪問的數據庫信息,且又不留痕跡;用戶通過網絡進行數據庫訪問時,有可能受到各種技術的攻擊;未經授權非法修改數據庫數據,使其失去真實性;硬件毀壞;自然災害;磁干擾等。為了保護數據庫的安全,目前常用的數據庫安全技術主要有用戶認證、訪問控制、信息流控制、推理控制、數據庫加密等,其中應用最廣也最為有效的是訪問控制技術。
1 Oracle 10g數據庫的安全體系結構
Oracle數據庫的安全級別為C2級,其安全原理基于最小特權,此原則認為用戶只應該具有完成其任務所必需的特權,而不應該具有更多的特權。Oracle 10g數據庫的安全性可以被分為3個層次:
1)系統安全性:指在系統級上控制訪問和使用數據庫的機制。包括有效的用戶名及其口令、用戶是否被授權連接到數據庫、用戶是否有足夠的磁盤空間來存放用戶模式對象、用戶的資源限制、是否啟動了數據庫的審計功能、用戶可以進行那些系統操作等。
2)數據庫安全性:指在實體級上控制訪問和使用數據庫的機制。包括用戶可以存取的方案對象及在該對象上可以進行那些操作等,即用戶必須具備存取該實體的權限。
3)網絡安全性:Oracle 10g數據庫主要是面向網絡提供服務的。其網絡傳輸的安全至關重要,包括登陸助手、目錄管理、標簽安全性等集成工具。Oracle通過分發Wallet、數字證書、SSL安全套接字和數字密鑰的辦法來確保網絡數據傳輸的安全性。
在Oracle的安全體系結構中,連接到數據庫的用戶有普通用戶和數據庫管理員用戶兩類。普通用戶主要是通過各種應用程序和查詢工具連接,使用數據庫賬戶和口令來驗證,必要時可實施Oracle高級數據加密技術;數據庫管理員用戶用sys、system或具有dba權限的賬戶連接,登錄系統時需采用口令文件驗證或操作系統驗證。
作為連接到數據庫的賬戶,必須首先是數據庫中的用戶,該用戶只有在數據庫中擁有必要的角色和權限,才能被數據庫認可并可在數據庫中進行相應的活動。在每個模式下,存儲的核心是數據庫的表。對于常規表,Oracle支持三個級別的安全性:表級、行級和列級。表級的安全性由表的擁有者通過表級授權來控制其他用戶;行級的安全性可通過視圖來實現;列級的安全性可直接定義在表上,也可以通過視圖定義表的垂直投影子集來實現。在很多情況下,一個表中存儲了分別屬于多個部門或個人的不同安全級別的數據,此時單純使用視圖很難從根本上解決此類安全問題,同時,用戶也可使用特殊工具繞過視圖直接去訪問表。對此,Oracle采用了虛擬私有數據庫VPD和標簽安全OLS兩項技術來實現有關行級數據的保護。這樣一來,不論用戶采用何種工具訪問數據庫,均受到VPD和OLS的制約,從而達到了按行訪問的目的。
當用戶連接數據庫時還需要通過系統概要文件對用戶所使用的資源進行限制,如訪問時間、登陸次數、占用CPU時間等。
2 Oracle 10g數據庫應用系統的安全策略設計
數據庫安全十分重要,但安全管理需要成本,過分的安全還會影響效率,因此,很多時候需要數據庫管理員在性能、時間和安全之間進行折中,從而制定出一個適合特定應用的、靈活的安全策略。在設計Oracle10g數據庫應用系統的安全策略時應從以下幾個方面著手:
2.1 建立Oracle 10g數據庫的安全機制及實施計劃
在設計數據庫過程中,首先規劃表空間和數據庫的模式,包括表和子程序對象、用戶的類型、這些用戶需要使用哪些數據以及需要什么樣的權限。然后,通過由表和用戶構成的對象/用戶權限CRUD關聯矩陣來明確與對象權限以及表與表空間的對應關系。
根據上述規劃,可以在數據庫中按照下列順序創建模式及對象并授權:
1)創建用于存儲用戶及其所屬對象的表空間。
2)在相應的表空間上創建用戶,指定其默認的表空間并授予用戶相應的角色和系統權限。
3)由用戶創建各種所需要的數據庫對象,并按照對象/用戶權限CRUD關聯矩陣為不同的用戶授予對象權限。
4)盡可能地使用同義詞和視圖來存取數據,以減少用戶對表的直接存取。
2.2 Oracle 10g數據庫內部的管理策略
Oracle數據庫系統安全管理的首要任務就是為每一個用戶創建相應的數據庫賬號,任何用戶對數據庫的任何操作都必須強制通過系統安全設置檢查后方能實施。在創建用戶時,必須使用安全參數對用戶進行限制,數據庫用戶的安全參數包括用戶名和口令、用戶默認表空間、臨時表空間、用戶存儲空間限制以及用戶資源文件限制等。
1)口令管理。數據庫系統安全依賴于口令,應使用較復雜的口令,系統以加密方式將口令存儲在數據字典中。Oracle 10g通過概要文件對口令進行管理,通常可在概要文件中啟用口令復雜性函數來校驗口令,該函數腳本在文件utlpwdmg.sql中,也可根據需要創建口令規則更為復雜的函數。
2)權限管理。Oracle數據庫安全管理機制主要是通過權限進行設置,通過權限設置防止非授權的數據庫存取、非授權的對具體對象的存取,只有通過權限的認證才可以存取數據庫中的數據。
對用戶授予權限時應本著授予最少權限的原則,特別是要謹慎授予帶有with admin option的權限。同時要限制授予數據庫對象用戶使用對象權限和system權限的數量以及使用具有sys權限的連接。特別不能授予一般用戶具有any的權限。
3)角色管理。Oracle 10g通過角色大大簡化了權限的管理,減輕了系統管理的開銷,減少了系統的安全漏洞。在實際應用中,根據部門和企業的安全政策、操作規則劃分出不同的數據庫角色。在創建角色時,可以為角色設置安全性。角色的安全性通過為角色設置口令字進行保護,只有提供正確的口令字才允許修改或設置角色;通過設置角色的生效或失效實現系統權限的可用或不可用,從而彌補了系統的權限沒有失效或生效的屬性。
4)資源管理
可通過使用概要文件限制每個用戶登錄的次數、限制連接會話、CPU使用時間和邏輯讀等,可通過使用默認的概要文件,也可通過create profile命令單獨創建自己的概要文件來實現。
5)審計策略
Oracle 10g數據庫審計具有審計發生在數據庫內部的所有操作的能力,有三種不同的審計類型:權限審計、語句審計和方案對象審計。
在默認情況下,數據庫的審計功能是關閉的。在必要的時候,數據庫管理員可以有選擇地靈活使用這些審計方法,對用戶監視,防止用戶對數據庫進行非法操作,以確保數據庫的安全;同時盡可能將審計事件的數量控制在合理的范圍內,以節省系統資源。
審計記錄可以寫入SYS.AUD$表或操作系統的審計跟蹤中。要注意保護審計記錄,否則,用戶可通過非法操作來刪除其審計蹤跡。Oracle 10g提供了兩個SQL腳本來管理與審計有關的數據字典視圖:CATAUDIT.SQL和CATNDAUD.SQL。數據字典包含與審計有關的兩類視圖:第一類確定哪些項目被審計,第二類建立在審計表上,表示從各種角度的審計記錄。
2.3 網絡數據通信的管理
1)采取各種措施保證網絡的安全,如避免未經授權的網絡訪問,包括保護網絡中的軟件以及路由器等;對網絡傳輸的數據進行加密;使用防火墻,將數據庫服務器置于防火墻保護之下;檢查網絡有效的IP地址。
2)檢查SSL。SSL是互聯網安全通信的標準協議,它提供了數據集成數據機密的機制,支持安全認證和加密。在檢查SSL時應注意以下幾點:應確保配置文件使用正確的SSL端口號;應確保SSL模式下通信雙方的一致性;要保證為tnsnames.ora和listener.ora文件中ADDRESS參數的protocol值指定tcp;服務器應支持客戶端密碼和證書密鑰算法。
3)sqlnet.ora文件。在服務器端的sqlnet.ora文件中添加tcp.invited.nodes和tcp.uninvited.nodes參數可決定哪些客戶機允許和不允許與服務器連接:
tcp.validnode_checking=yes
tcp.invited_nodes=(
tcp.excluded_nodes=(
4)監聽器的使用。在默認情況下,監聽器沒有設置口令。此時,遠程客戶機可以通過監聽控制器獲得監聽器的狀態信息。因此,應設置監聽器的口令,并限制其權限,使其不能在數據庫或Oracle服務器地址空間中讀寫文件。
在listener.ora參數文件中,讓admin_restrictions_
除了設置口令外,還應更改數據庫的端口號,對默認的端口號1521或不使用的端口應全部封鎖住。
5)在數據庫初始化參數文件init
2.4 其他安全措施
Oracle數據庫除上述基本的安全控制外,還另外提供了一些高級的安全性特性,如虛擬專用數據庫(VPD)、標簽安全、數據庫加密、精細粒度審計(FGA)、N-tier用戶驗證支持等。它們分別用于加強數據庫安全的不同部分,其中虛擬專用數據庫和標簽安全用于控制用戶僅僅存取數據庫中數據的某一個子集。數據庫加密是一種主動的信息安全防范措施,只對數據庫中機密程度較高的數據進行加密,可使用Oracle提供的系統包dbms_obfuscation_toolkit對其進行加密。精細粒度審計(FGA)特性用于監控/追蹤用戶的各種數據庫操作,N-tier用戶驗證支持則使數據庫可以通過諸如Kerberos或令牌卡等外部機制來取得第三方認證授權。
在Oracle_Home\\bin目錄下的wrap.exe封裝程序可加密PL/SQL源代碼,加密后的應用程序不能編輯也不能被實施逆向工程。此外,定期進行數據庫備份工作,以便在意外情況發生后,可以利用備份數據來恢復數據庫,也是保證Oracle數據庫系統安全的一個重要措施。
參考文獻:
[1] 薩師煊,王珊.數據庫系統概論[M].高等教育出版社,2000.
[2] 賈代平.Oracle DBA核心技術解析[M].電子工業出版社,2006.
[3] 任樹華.Oracle 10g應用指導與案例精講[M].機械工業出版社,2007.
[4] 黃健泉.Oracle數據庫安全解決方案探討[J].廣東通信技術.2005(8).