資料庫安全防護策略

企業漸漸設法面對個資法可能帶來的衝擊,除了對內部的人員訓練之外,也逐漸思考內部個資的控管與安全,到底個資的定義為何?哪裡有個資?該如何保護?個資的定義在個人資料保護法中已經有明確的解釋,而資料的保存除了紙本形式外,電子資料的保存無非是利用檔案或資料庫。非結構性的檔案資料,保護的方式可選擇 DLP (Data Leakage Prevention) 做為完整的解決方案,或是依據選定的範圍 (檔案傳遞、email、IM…等) 選擇單一產品來解決。提到資料庫,似乎變成一個非常棘手的問題,因為並非 IT、安控、稽核人員都有資料庫管理經驗,由 DBA 或程式開發人員來想辦法,似乎也有公正性上的爭議。

目前資料庫保護的解決方案趨勢有加密、遮罩與稽核,以下將探討這三種方式的區別。

  • 加密

    利用加密演算金鑰,將實體資料進行加密處理,常常被認為是最終極的保護方式。的確,在適當的環境及規劃下,透過加密是可以對資料做到最大化的保護。

    適當的環境指的是資料庫本身已經做好帳號與權限的控管,因為加密的方式會利用資料庫本身的帳號來指派加密金鑰使用權限,有權限的帳號才能做解密,取得正確的資料,否則將會顯示亂碼; 若資料庫有共用帳號的狀況,單一帳號就擁有很大的權限,而金鑰也只能指派給這些帳號使用,加密所能達到的效果將很有限; 而利用 AP name 來指派金鑰權限的方式,可以解決共用帳號的問題,但需要修改 AP。

    加密首要的問題在於效能的影響,在毫無頭緒的情況下,一般都認為所有欄位、Table都加密最簡單,但這樣加密的資料量非常大,對效能的影響也最大。因此,適當的規劃指的是將資料分級,只加密重要的欄位,將效能影響降到最低。

  • 遮罩

    遮罩其實也可視為加密的一種,重點在於沒有權限的帳號無法取得正確資料,也因此可以降低因資料外洩而衍生的訴訟問題。遮罩目前有兩種作法,簡單來說就是改 Query 或改資料。改 Query,是當使用者無存取資料權限時,修改 Query,將無存取權限的欄位遮掉,Query 進入資料庫前已經修改,所以資料庫回應的資料就已經被處理過,且 Query 修改只是一次性的,所以在大量撈取資料時效能相對來說會好一些。改資料,是收到資料庫回應資料後才進行遮罩處理,若資料庫回應的資料量很大,遮罩的處理時間也會拉長。

  • 稽核

    DBA 往往很難列舉出存取資料庫的人、事、時、地、物等舉證所需的關鍵資料,將存取資料庫的行為進行監控、側錄,記錄資料庫存取使用行為便是稽核類產品的重要任務之一,而資料的分析、篩選搜尋及報表的產製,這些都是有助於事後稽查的基本功能。
    其他如資料庫弱點掃描、資料庫資產清點、行為比對、告警功能等等則有助於事前及事中的防範,若還能加入線上更新機制的話,則可以加強有效性及準確性。
    一般往往會將稽核產品當成資料庫專屬的 log server,全都錄似乎可以一勞永逸,卻忽略了儲存空間及事件查詢效率等後續問題,建置初期若能對資料庫進行機敏資料的清查並就重點來記錄,將可更有效率的使用,節省儲存成本並大幅節省事件搜尋與追查的時間。