天天看點

Oracle資料庫安全面面觀

專家簡介

張文宇:10年以上it服務相關工作經驗,長期從事系統、網絡及資料庫方面的規劃設計、工程實施與運維管理工作,具備豐富的營運商、醫療等行業項目經驗。目前專注項目管理、解決方案、售前及咨詢類工作。持有oracle 8i ocp,10g ocm,及思科、微軟等廠商産品認證。

1概述 

資料庫中儲存的資料涉及各類賬号、密碼、個人隐私、安全資訊等敏感資訊,核心資料是企業的命脈。通過建立完善的資訊安全系統,保護企業核心資料尤其是企業商業機密,防止從内、外部洩密,已經成為目前衆多企業的共識。

随着資訊化建設的不斷發展,it安全建設的重點,已經從傳統的網絡安全、桌面安全、系統安全、應用安全和身份認證管理安全等領域,轉向了如何加強it系統核心的資料庫安全防範。

資料庫成為企業資訊資産的同時, 也被越來越多的不良之徒所觊觎。資料被違規通路、删、改、複制和缺乏審計的安全問題, 已經成為it系統最大的威脅。根據ioug 和verizon business的最新市場調查,2010 年全球造成嚴重後果的it安全事件中92%是針對資料庫的侵入,89%的黑客采用了sql注入技術,84%的外部攻擊利用了管理不善的資料庫使用者權限。

那麼,如何才能更有效地保護資料庫不受侵害?如何解決非法通路的監控與審計?如何達到《資訊安全等級保護條例》的資訊安全合規要求?怎樣才能滿足中國sox《企業内部控制基本規範》的規定?

本文從資料安全角度簡述資料庫安全的管理,從邏輯安全與實體安全兩個方面進行論述。

2安全狀況分析 

調查結果顯示92%的記錄源自被侵入的資料庫伺服器,也就是說資料庫安全是確定資料安全的關鍵。

Oracle資料庫安全面面觀

-- databases and file servers, both repositories of so much valuable information, are also targeted regularly.

近年一些著名的洩密門:

省級電信公司的增值服務客戶資訊被競争對手掌握

某移動公司的儲值卡資料被篡改、作案者賣卡獲利380萬

某地社保核心參數被修改,導緻當月所有繳費金額錯誤

某地社保受益賬戶修改,詐領養老金事件

資料洩漏的途徑離不開以下三個層面:

存儲層:直接盜走資料檔案或備份檔案,異地還原後得到資料;

資料通路:通過人為擷取dba等高權限使用者的密碼,或通過權限提升等漏洞得到一個高權限使用者身份,進行資料竊取;

應用層:破解或通過工作便利擷取應用中的資料庫使用者密碼,繞開業務系統直接通路所有資料(因業務系統中往往對操作範圍進行限定,隻可獲得局部資料)。

資料庫的安全漏洞與威脅類别繁多,入侵資料庫的常見手段不下幾十種,攻擊者最常使用的有:

通過暴力破解資料庫使用者密碼,操縱資料庫

利用預設密碼的漏洞通路資料庫

利用權限提升的漏洞得到高權限使用者身份,控制資料庫

利用pl/sql注入等,擷取通路權限提升,操縱資料庫

利用管理漏洞,獲知dba等合法使用者名的密碼,操縱資料庫

入侵到資料庫伺服器主機,拷貝資料檔案、或備份檔案

Oracle資料庫安全面面觀

3資料邏輯安全防禦措施 

如前所述,真正行之有效的資料庫防護的技術手段應該是從根源上,進行核心資料的增強通路控制。包括存儲層上利用加密技術保護核心資料項、通路控制上采用獨立的權限控制增強技術防止dba等高權限使用者,應用層保證資料庫使用者與業務系統的綁定無法繞開。

本文後續重點介紹資料庫層面的資料安全防禦措施。

Oracle資料庫安全面面觀

3.1 使用者管理

首先應針對資料庫賬号,将其按照功能進行分類,例如:資料庫預設賬号、程式賬号、維護賬号等。

Oracle資料庫安全面面觀

資料庫使用者/使用者組應配置相應的安全規則,如下:

Oracle資料庫安全面面觀

使用使用者profile進行屬性控制,針對不同類型的使用者,使用不同的profile屬性:

Oracle資料庫安全面面觀

3.2 權限管理

根據最佳實踐,針對權限管理建議從使用者權限、賬号角色管理、資料字典保護、dba組權限限制方面做到如下幾點:

根據使用者的業務需要,配置其所需的最小權限

使用資料庫角色(role)來管理對象的權限

啟用資料字典保護,隻有sysdba使用者才能通路資料字典基礎表

限制在dba組中的作業系統使用者數量,通常dba組中隻有oracle安裝使用者

Oracle資料庫安全面面觀

遵循權限最小化原則,使用角色對使用者進行授權。

Oracle資料庫安全面面觀

3.3 日志安全管理

日志安全方面,可從登入日志、記錄檔、系統安全事件、資料庫審計政策四個方面考慮:

記錄登入日志:資料庫應配置日志功能,對使用者登入進行記錄,記錄内容包括使用者登入使用的賬号、登入是否成功、登入時間以及遠端登入時使用者使用的ip位址。

記錄記錄檔:資料庫應記錄使用者對資料庫的操作,包括但不限于以下内容:賬号建立、删除,權限、密碼修改,讀取與修改資料庫配置,讀取與修改業務使用者的敏感資料。記錄需要包含使用者賬号、操作時間、操作内容以及操作結果幾個方面。

記錄系統安全事件:配置在系統層面記錄安全事件,友善管理人員分析。

資料庫審計政策:根據業務要求制定資料庫審計政策。

3.4 資料庫審計

需要特别強調一下資料庫審計方面的内容,audit審計的種類可大緻分為如下幾種:

強制審計:為每一次執行個體啟動寫出審計記錄到os檔案,shutdown以及權限登入的記錄存放在$oracle_home/rdbms/audit 目錄下。其中對sys使用者的審計記錄sysdba/sysoper等權限使用者的操作,審計記錄存放在os 檔案,syslog中。

标準審計:記錄使用者針對資料庫對象、語句、權限級别的行為。審計記錄可以存放在os檔案、xml檔案或資料庫中(aud$基表),分為如下級别:

◎對象級别審計

◎權限級别審計

◎語句級别審計

細粒度控制:基于使用者通路的資料記錄使用者行為。 審計記錄存放在資料庫内(fga_log$)或者xml檔案中。

标準審計包括:sql語句審計、系統權限審計與對象權限審計三類,流程及說明如下:

Oracle資料庫安全面面觀
Oracle資料庫安全面面觀

sql 語句審計:幻燈片中顯示的語句可審計影響表的任何資料定義語言 (ddl) 語句,包括 create table、drop table 和 truncate table 等。可按使用者名或者按成功或失敗來設定 sql 語句審計的重點:  

sql> audit table by hr whenever not successful;

系統權限審計:可用來審計行使的任何系統權限(如 drop any table)。可按使用者名或者成功或失敗設定審計的重點。預設情況下,審計設定為 by access。每次行使經審計的系統權限時,都會生成一條審計記錄。可選擇使用 by session 子句将這些記錄組成一組,以便每個會話隻生成一條記錄。(這樣,如果一個使用者針對另一個使用者的表發出了多條更新語句,則隻收集一條審計記錄。)請考慮使用 by session 子句來限制由于審計系統權限而對性能和存儲産生的影響。

對象權限審計:可用來審計關于表、視圖、過程、序列、目錄和使用者定義資料類型的操作。這種審計類型可按成功或失敗設定審計的重點,而且可以按會話或通路權限分組。與系統權限審計不同,預設情況下,對象權限審計按會話分組。如果要為每個操作分别生成一條審計線索記錄,必須顯式指定 by access。

細粒度審計fine grained auditing (fga)

fga 政策通過dbms_fga包與表/視圖/同義詞關聯起來,例如:

Oracle資料庫安全面面觀

除腳本外,推薦使用oracle audit vault 實時審計資料庫活動。

Oracle資料庫安全面面觀

oracle audit vault 實時審計資料庫活動執行個體:

Oracle資料庫安全面面觀
Oracle資料庫安全面面觀

3.5 敏感資料管理

資料安全主要針對資料庫敏感資料進行安全保護,例如:姓名、電話、身份證号碼、銀行賬号、使用者密碼等,包括:敏感資料的屏蔽、資料脫敏、資料加密三個方面,如下圖:

Oracle資料庫安全面面觀

工具方面推薦使用oracle database vault 在資料庫内部實施安全政策。

Oracle資料庫安全面面觀

使用oracle data masking 對生産資料進行不可逆的資料脫敏再用于非生産環境。

Oracle資料庫安全面面觀

3.6 資料庫漏洞管理

需要關注oracle官方定期釋出的更新檔集,其中會包含最新的安全更新檔,例如:

Oracle資料庫安全面面觀

做到以上,我們的資料庫就安全了嗎?不!我們還忘記了,資料庫實體安全!

4資料庫實體安全 

4.1 概述

資料庫的實體安全,主要指資料庫的應急/容災措施,安保層面暫不涉及。那麼,資料庫的容災有多重要呢?

隻有6%的公司可以在資料丢失後生存下來,43%的公司會徹底關門,51%的公司會在兩年之内消失。

在災難之後,如果無法在14天内恢複資訊作業,有75%的公司業務會完全停頓,43%的公司再也無法重新開業,20%的企業在兩年之内被迫宣告破産。

Oracle資料庫安全面面觀

資料大集中的同時也帶來風險的高度集中,系統集中的程度越高,系統故障影響業務的範圍越大,系統集中的程度越高,資料損壞将導緻大量的業務資料丢失。

資料高可用能夠保證業務的連續性,包括:保障關鍵業務應用、消除和減少當機時間;也必須做到保證資料的安全,因為資料是企業最重要的資産,要保證24x7的資料可通路。

常見影響業務連續性的因素包括計劃内與計劃外兩部分:

計劃内

軟體更新

備份、恢複、歸檔

資料中心遷移、整合

測試、容災演習等

計劃外

系統處理能力下降

人為操作故障:錯誤/惡意删除資料;錯誤/惡意執行程式或指令等

系統故障: ups故障、硬碟故障、cpu故障、資料庫軟體故障等

安全體系被攻破

供電系統癱瘓  空調故障

機房結構性破壞:水災、火災、地震等

社會性恐慌:瘟疫等

環境緊急事件:污染等

城市事件:動亂、罷工等

氣候災難:台風等

戰争、恐怖主義事件

4.2 容災系統建設考慮的因素

1.風險分析

各種風險發生的機率及風險發生後對業務的影響程度

2.業務關鍵等級劃分

關鍵業務/非關鍵業務

各項業務的容災名額(rpo/rto)

3.容災政策

同城異址容災/異地容災

容災層次:系統級、資料級、應用級和業務級

容災範圍:關鍵業務應急,全業務容災

營運方式:主備中心, 雙中心

容災規模:同級容災,降級容災

4.災難類型

需要考慮哪些災難?怎樣的災難?會使業務中斷多久?

5.恢複速度

災難發生後需要多久來啟動及運作系統?能否承受數天或數分鐘的等待?

6.恢複程度

需要恢複每條記錄和交易嗎?可以使用上星期或昨天的資料嗎?需要恢複一切嗎?有不相關的檔案嗎?什麼是合法隐含的要求?有少數的一組人輸入交易嗎?他們可以重新輸入災難期間丢失的交易嗎?這些交易十分重要而不容許丢失嗎?

7.可用的技術

必須結合考慮所選技術在本地區的适用性、實作條件以及在實施時是否受某些現有條件的制約?

8.方案總體成本

如果要做到rto和rpo越小,則投入的建設成本越大,從下面的曲線可以清楚地看到其相關性。

除實作災難備份需要多少投資外,還要考慮不實作災難備份會損失多少錢?

Oracle資料庫安全面面觀

4.3 容災備份技術規範簡介

企業營運系統的容災備份系統規劃和建設目标一般包括:

實作關鍵業務系統及其關聯系統的資料安全

減少計劃停機次數、時間,消除對核心資料的争用

将異地中心接管業務的時間控制在可以接受的範圍内

實作異地中心的軟硬體裝置和資料的複用

災難恢複的衡量名額主要有rto與rpo兩個:

恢複時間目标(rto,recovery time object),指最大計劃停機時間/意外停機時間,商業機構可容忍的最長停機時間是多少。

恢複點目标(rpo,recovery point object),指資料丢失限度,商業機構可承受的最大資料損失量是多少。

災備解決方案的七個級别(7 tiers for disaster recovery solution 國際标準share 78):

等級零:無異地備份

等級一:備份媒體異地存放

等級二:備份媒體異地存放及備用場地

等級三:備份媒體異地存放及備份中心

等級四:定時資料備份及備份中心

等級五:實時資料備份及備份中心

等級六:零資料丢失

業務恢複要求名額級别分類:

rto從低到高分為5個級别,其中1級為最進階别:

Oracle資料庫安全面面觀

rpo從低到高分為5個級别,其中1級為最進階别:

Oracle資料庫安全面面觀

4.4 常見的資料保護技術

常見的資料保護/災難備份政策主要分為四個大類:

傳統的錄音帶備份,本地或異地存放

智能存儲的遠端磁盤鏡像技術

◎存儲廠商的磁盤鏡像

◎虛拟存儲

卷組複制技術(主機)

基于資料庫日志的資料複制技術

◎資料庫自身的容災和複制技術 (oracle data guard)

◎開放的資料庫同步技術 (如oracle goldengate)

基于應用軟體

此處我們主要介紹基于資料庫日志的資料複制技術,包括dataguard/active dataguard與goldengate兩種oracle公司的産品。

差別于傳統的資料庫高可用性技術與遠端磁盤鏡像技術,基于資料庫日志的資料複制技術通過在生産與容災端的網絡上傳輸資料變更的部分,達到兩端資料庫的資料同步與一緻性。

Oracle資料庫安全面面觀

資料庫級别複制:oracle dg/adg

oracle dataguard/active dataguard通過網絡傳輸并應用資料庫歸檔/線上日志。

可以分為同步複制與異步複制兩種方式,使用同步複制可以實作資料的完全同步,即做到rpo=0,但也帶來對網絡狀況要求高、遠距離傳輸時容易影響應用等不利因素。采用異步複制,可以提供良好的性能,對生産端的影響非常小,相應的,無法做到rpo=0,災難發生時會有一定的資料損失,兩種方式的選擇要從容災系統建設的整體進行考慮。

Oracle資料庫安全面面觀

data guard日志的網絡傳輸:

Oracle資料庫安全面面觀

以active data guard為例,主要優勢展現在:

熱中心模式,容災資料庫可以處于熱中心模式,可以分擔業務查詢等業務壓力

實作方式、實施簡單

應用透明,支援資料庫所有特性

網絡傳輸效率高

故障隔離,防止資料塊損壞

active dataguard 效益分析:故障容錯性

Oracle資料庫安全面面觀

active dataguard 效益分析:附加意義—超越容災

Oracle資料庫安全面面觀

資料日志複制技術2:goldengate表級複制

不同于dg/adg技術,goldengate最大的特點是可以進行基于表級别的複制,如此便可以實作隻同步資料庫中的部分關鍵表,非常适合應用于輕量級的應急系統中。

Oracle資料庫安全面面觀
Oracle資料庫安全面面觀

5總結 

小結一下以上介紹的内容,怎樣做到資料保護的深度防禦和精确阻斷?如何做到:

敏感資料“看不見”

核心資料“拿不走”

運維操作“能審計”

Oracle資料庫安全面面觀

需要在資料安全管理的三個階段進行防範:

Oracle資料庫安全面面觀

需要針對資料庫安全性進行縱深防禦:

監視威脅并且在其到達資料庫之前阻止它們

跟蹤更改并審計資料庫活動

控制對資料庫中資料的通路

防止非資料庫使用者通路資料庫

從非生産資料庫中删除敏感資料

Oracle資料庫安全面面觀

從資料庫的角度出發,除了自帶的軟體安全功能,還可以結合人工管理的方式保障資料庫安全。

1.賬号管理

主機高權限賬号

資料庫高權限賬号

2.變更管理

制定變更流程,嚴格按照流程執行

編寫變更方案

進行方案評審

保留變更日志

3. 風險控制

定期梳理安全風險

最後,引用一篇文章“資料庫管理者們的七個安全好習慣”(www.darkreading.com/database/7-habits-of-highly-secure-database-admin/240164634)

他們了解敏感資料身在何處;

他們頻繁組織審計工作;

他們監控資料庫活動與系統變更;

他們通過加密防止資料庫内容洩露;

他們通過控制措施防止應用程式旁支攻擊(來源單純性,即隻允許利用相關接入應用通路儲存在資料庫中的資訊);

他們管理高權限使用者的通路流程;

他們隻在生産資料庫内處理生産資料。

<b></b>

<b>本文來自雲栖社群合作夥伴"dbaplus",原文釋出時間:2015-12-08</b>