pureXML 與 LBAC 結合的文檔級安全模型
DB2 9 引入 pureXML 原生存儲與标签訪問控制 (LBAC),使在單一 XML 列中實現文檔級、節點級甚至屬性級安全成為可能。這對於醫療記錄、法律文檔、金融報表等混合敏感度數據極具價值。
架構原理
- XML 數據模型:文檔以層次樹結構存儲,每個元素/屬性可關聯安全標籤。
- LBAC 標籤組件:定義數組 (層級)、樹 (組織架構)、集合 (項目/類別) 三類組件,組合成安全標籤。
- 安全策略:綁定標籤到表的 XML 列,指定 READ/WRITE 控制規則。
實施步驟
- 創建安全標籤組件:
CREATE SECURITY LABEL COMPONENT dept_tree TREE 'ROOT';
- 創建安全策略:
CREATE SECURITY POLICY doc_sec_pol COMPONENTS dept_tree;
- 創建安全標籤 (如部門標籤):
- 創建帶 XML 列的表並啟用 LBAC:
CREATE TABLE patient_records (
id INT PRIMARY KEY,
doc XML,
SECURITY LABEL doc_sec_pol
);
- 為 XML 節點賦予安全標籤 (通過 INSERT/UPDATE 觸發器或應用邏輯):
查詢行為與性能
SELECT 查詢自動過濾無讀取權限的節點,返回「虛擬文檔」視圖。XPath/XQuery 執行計劃中包含 LBAC 謂詞下推,索引可加速授權檢查。寫入操作 (INSERT/UPDATE/DELETE) 驗證用戶寫入標籤是否支配目標節點標籤。
典型應用場景
- 電子病歷 (EHR):醫生僅見本科室病歷,管理員見管理信息,研究員見脫敏後的統計數據。
- 合同管理:法務見完整條款,銷售僅見商務條款,財務見付款條款。
- 多租戶 SaaS:單表隔離多客戶 XML 數據,標籤映射租戶 ID。
注意事項與限制
- LBAC 不支持 XML 索引鍵中直接引用安全標籤,需通過生成列輔助。
- 大量細粒度標籤可能增加優化器開銷,建議標籤數量控制在百級以內。
- 備份/恢復、HADR、複製均保留標籤元數據,跨庫遷移需同步安全策略定義。
總結
DB2 9 pureXML + LBAC 提供了業界領先的文檔級安全能力,將安全控制下沉到數據層,消除應用層繁雜的過濾邏輯,確保數據在任何訪問路徑下均受保護。