天天看點

Mybatis插件統一處理敏感資料加密實作方案

作者:嗯哼QQ

一、設計目标:

采用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.加密元件啟動執行時序圖

Mybatis插件統一處理敏感資料加密實作方案

三、加解密方案整體設計

Mybatis插件統一處理敏感資料加密實作方案

四.加解密方案使用示例:使用者服務

Mybatis插件統一處理敏感資料加密實作方案

五.密鑰變更處理(慎重)

當某個應用定期更換密鑰時,一個應用相當于擁有多個版本的密鑰,需要重新整理資料庫曆史資料,用最版版本密鑰加密資料。

繼續閱讀