本文結合資料庫系統,講述現有資料庫系統中應用加密技術的不同之處,以及如何根據業務需求去選擇合適的加密技術。
引言
日常生活中會通過添加門禁的方式來限制不同的人員進入指定地區,如分別在小區入口、單元樓入口、以及入戶門添加門禁:小區門禁能夠防止小區外部人員進入,單元樓門禁能夠防止非本樓人員進入,入戶門門禁能夠防止非本戶人員進入。顯然,同樣都是使用門禁系統,在不同位置、不同地區添加門禁所達到的限定效果是不同的。加密技術也是如此,採用加密技術對系統中的敏感性資料進行加密保護是很直觀的,但同樣是對敏感性資料進行加密,在系統關鍵路徑中的不同位置、不同粒度資料應用加密,能達到的預期安全效果也是完全不同的。
資料庫加密技術簡介
雲端硬碟加密是指在建立ECS執行個體(選擇系統硬碟、資料盤)或者單獨建立資料盤時為雲端硬碟勾選加密選項,建立完成後ECS執行個體作業系統內的資料會在雲端硬碟所在宿主機(ECS執行個體伺服器)被自動加密,無需自建和維護密鑰管理基礎設施,就能保護資料的隱私性和自主性,為業務資料提供安全邊界。雲端硬碟加密可以解決資料在裝置(IaaS層)中落盤安全問題。更多資訊,請參見加密雲端硬碟。
Transparent Data Encryption(簡稱TDE)。在將資料庫記憶體資料寫入檔案系統前,在引擎內部對資料先進行加密,然後將加密後的密文結果寫入到檔案系統。TDE可以解決資料在檔案系統(PaaS層)中落盤安全問題。更多資訊,請參見設定透明資料加密TDE。
選擇列加密(全密態基礎版)對查詢結果在離開資料庫前進行加密,並將密文結果返回給資料庫用戶端,由具備密鑰的用戶端後續自行解密,使得資料在除了用戶端以及資料庫內的外部流動中全程以密文形式存在。選擇列加密可以解決線上資料鏈路的運行時安全。更多資訊,請參見功能概述。
潛在資料庫攻擊行為
資料庫是一個系統應用工程,在每一個系統環節都存在潛在的安全威脅。現有資料庫面臨的安全問題以及可能的攻擊路徑如下圖所示(詳情請參見Oracle’s Maximum Security Architecture for Database Security):
下表將對圖例中的不同攻擊進行介紹:
圖例攻擊 | 攻擊說明 | 攻擊方式 |
Attack Admins | 攻擊系統管理員,例如OS管理員。系統管理員具備高許可權,一旦攻擊者擷取管理員帳號,可以管理和訪問所有的儲存、系統、以及外設。在資料庫情境下,可以對系統管理員進一步細分如下:
| OS系統漏洞 管理員賬密泄露 系統配置不當 |
Attack Users | 攻擊終端使用者,例如資料庫使用者。終端使用者可以串連資料庫系統、並訪問部分資料,攻擊者擷取使用者帳號後可以訪問該使用者下資料(例如邏輯拖庫),甚至通過提權方式(例如SQL注入)獲得管理員權限 | 使用者賬密泄露 邏輯拖庫 |
Attack Apps | 攻擊應用服務,例如黑入網站伺服器。相比於防護更嚴密的後端資料庫,應用服務是公開可訪問的,暴露面更大,更加容易被攻破。 | 應用服務漏洞 OS系統漏洞 |
Attack Network | 攻擊網路連接,例如監聽攔截網路資料。網路攻擊通常以旁路方式進行,不易於被檢測。 | 網路監聽/攔截 |
Bypass Database | 繞過資料庫系統擷取資料,以旁路方式竊取資料庫資料,例如PaaS人員可Copy資料庫落盤的資料檔案、備份檔案等(即物理拖庫)。 | 物理拖庫 |
Bypass OS | 繞過OS檔案系統擷取資料,以旁路方式竊取磁碟上資料,例如IaaS人員可直接Copy雲端硬碟/磁碟資料。 | 掛載攻擊 |
Exploit Database | 利用資料庫的系統缺陷,例如代碼bug,直接或間接訪問資料庫。 | 資料庫系統漏洞 |
Target Data Copies | 很多系統中是直接將生產資料同步到開發測試庫進行使用的,而缺少對開發測試庫上的資料安全防護,攻擊開發測試庫會比攻擊生產庫更容易。 | 以上均可能 |
針對這些不同系統應用路徑下的潛在資料庫安全威脅,通常需要一個整體的安全解決方案來應對,這可能囊括了SSL與認證服務、認證與存取控制、白名單與安全性群組、資料加密與脫敏、安全審計等在內的不同安全技術和管理手段。後續小節將對資料加密進行介紹。
資料庫加密技術能力矩陣
現有加密技術在資料庫中的應用主要有雲端硬碟加密、透明資料加密以及選擇列加密。下表從不同維度給出了不同資料庫加密技術的特性、以及能解決的安全問題。使用者可以結合目標要解決的問題、以及實際情境下業務對加密粒度、改造成本、以及效能的考量,選擇合適的加密技術。
資料庫加密技術 | 雲端硬碟加密(DiskEncryption) | 透明資料加密 (TDE) | 選擇列加密 (全密態基礎版) |
能解決的問題 | Bypass OS、Attack Admins(IaaS) | Bypass Database、Bypass OS、Attack Admins(PaaS&IaaS) | Attack Users、Attack Apps、Attack Admins(DBA 1️⃣)、Attack Network、Target Data Copies |
資料庫營運人員(如DBA)可見資料 | 可見 | 可見 | 不可見 |
PaaS營運人員(如OS)可見資料 | 可見 | 不可見 | 可見 1️⃣ |
IaaS營運人員(如物理PE)可見資料 | 不可見 | 不可見 | 可見 1️⃣ |
加密粒度 | 執行個體 | 表/庫 | 列 |
業務改造 | 無 | 無 | 需要將JDBC替換為EncJDBC,無需代碼改造。 |
效能 | 損耗極小,幾乎無損失。 |
|
|
1️⃣全密態基礎版無法防止PaaS以及IaaS層營運人員訪問資料明文。使用者可以選用全密態基礎版的安全升級版本,全密態硬體加固版,結合可信硬體技術,能夠抵禦來自PaaS以及IaaS層的攻擊。
資料庫加密技術原理對比
架構視角
下圖從架構視角,展示了不同加密方式在資料庫系統中的作用位置:
雲端硬碟加密作用在宿主機/ECS OS層面上,對OS檔案進行加解密,同一個宿主機/ECS上的所有資料庫執行個體共用雲端硬碟加密。
TDE作用在資料庫執行個體上,對資料庫快取檔案進行加解密,每個執行個體單獨生效。
列加密作用在資料庫執行個體上,對資料庫記憶體查詢結果進行加解密,返回密文資料給到應用程式,每個執行個體單獨生效。
列加密、TDE、或雲端硬碟加密可以疊加組合使用。
資料視角
下圖從資料視角,展示了不同加密方式下,資料在資料庫系統中的明文和密文狀態。
列加密+TDE疊加組合加密方式可以確保資料全鏈路以密文方式存在。
不同資料庫加密技術差異匯總
儲存安全技術 | 雲端硬碟加密 | TDE | 選擇列加密 |
作用位置 | OS | 資料庫核心 | 資料庫核心 |
作用範圍 | 宿主機/ECS執行個體 | 資料庫執行個體 | 資料庫執行個體 |
加密粒度 | 執行個體 | 庫/表 | 列 |
應用感知 | 對應用透明 | 對應用透明 | 應用需切換JDBC |
總結
簡要介紹了現有的資料庫加密技術,從使用者視角給出資料庫當前面臨的安全威脅以及適用的資料庫加密技術,並從原理層面解釋造成不同資料庫加密技術能力差異的原因。使用者可以結合具體的應用情境,根據目標安全訴求、業務改造成本、效能等不同維度因素,選擇適用的資料庫加密技術。