一、設計目标:
采用Mybatis插件機制,攔截器Interceptor實作對SQL的CRUD操作進行攔截,實作字段加解密處理。
二、實作方案:
a.在apollo上配置需要加解密表和字段,例如:
data:
security:
encryption-map:
"t_user": ["password","username"]
b.對Mybatis的基礎元件Executor的query和update方法(包括insert、update、delete語句)進行攔截
c.對sql通路請求進行攔截,判斷目前的sql執行類型,如果是select語句,根據配置的加解密表和字段,對請求的敏感明文字段進行加密,對傳回的結果敏感屬性進行解密處理
d.如果是update語句,對更新的敏感字段和where條件中的敏感字段進行加密
e.如果是delete語句對,where條件中的敏感字段進行加密處理
f.業務服務使用: 1.apollo 按規則配置加密表和字段 2.內建sdk maven依賴
g.加密元件啟動執行時序圖
三、加解密方案整體設計
四.加解密方案使用示例:使用者服務
五.密鑰變更處理(慎重)
當某個應用定期更換密鑰時,一個應用相當于擁有多個版本的密鑰,需要重新整理資料庫曆史資料,用最版版本密鑰加密資料。