阿里雲Log Service(SLS)推出 mask 脫敏函數。相比傳統正則脫敏方案的局限性,mask 函數在適用情境上更具優勢,並結合典型情境展示其在Sensitive Data Discovery and Protection與合規要求中的價值。
使用限制
脫敏方案概述
背景
隨著AI時代互動資料的快速增長,個人隱私資訊的安全保護成為企業合規經營的重要組成部分。GDPR、《資料安全法》、《個人資訊保護法》等法律法規對企業處理敏感資訊提出了嚴格要求。
正則脫敏
阿里雲Log Service(SLS)提供了一套完善的資料脫敏體系,支援多種靈活的採集+脫敏Pipeline組合流程,以滿足不同業務情境的需求。
LoongCollector端側脫敏:
通過在採集配置中配置資料脫敏外掛程式,利用正則匹配實現對敏感欄位的替換。
通過SPL語句使用regexp_replace函數,在服務側完成高效能脫敏處理。
LoongCollector/SDK + 寫入處理器聯合脫敏:
LoongCollector端/SDK專註資料擷取,寫入處理器使用regexp_replace函數完成脫敏,避免端側資源過度佔用。
脫敏升級方案:mask函數
針對Regex脫敏存在的配置複雜、效能瓶頸和情境適配難等問題,SLS推出全新的mask脫敏函數,以提供更便捷、高效和智能的資料脫敏解決方案。
mask函數
函數文法
mask(field, varchar params)參數說明
參數 | 說明 |
field | 需要脫敏資料的原始欄位名稱。 |
param | 該參數是JSON數組,可以定義一條或多條param參數規則。 |
param參數規則
參數 | 是否必填 | 說明 |
mode | 是 | 選擇脫敏模式:
|
types | mode選擇 | 內建規則列表:
|
keys | mode選擇 | 定義需匹配的關鍵字列表,如 |
maskChar | 否 | 用於脫敏的字元,預設為 |
keepPrefix | 否 | 保留欄位開頭的字元數,例如 |
keepSuffix | 否 | 保留欄位結尾的字元數,例如 |
樣本
樣本1:交易資料脫敏
DeFi平台每日處理數萬筆鏈上交易,每筆交易都會產生包含使用者錢包地址、交易雜湊、使用者畫像等敏感資訊的詳細日誌。為了滿足資料保護法規要求,同時保證業務分析和故障排查的需要,需要對交易確認日誌中的錢包地址、地址資訊、來源IP、手機號、交易雜湊等敏感欄位進行脫敏,保留前後各3位字元以便業務追溯。
未經處理資料
2025-08-20 18:04:40,998 INFO blockchain-event-poller-3 [10.0.1.20] [com.service.listener.TransactionStatusListener:65] [TransactionStatusListener#handleSuccessfulTransaction]{"message":"On-chain transaction successfully confirmed","confirmationDetails":{"transactionHash":"0x2baf892e9a164b1979","status":"success","blockNumber":45101239,"gasUsed":189543,"effectiveGasPrice":"58.2 Gwei","userProfileSnapshot":{"wallet":"0x71C7656EC7a5f6d8A7C4","sourceIp":"203.0.113.55","phone":"19901012345","address":"上海市浦東新區文明路1000號","birthday":null}}}SPL語句
在資料處理器中使用以下SPL語句。
*| extend content = mask(content,'[ {"mode":"keyword","keys":["wallet","address","sourceIp","phone","transactionHash"], "maskChar":"*","keepPrefix":3,"keepSuffix":3} ]')輸出結果
2025-08-20 18:04: 40, 998 INFO blockchain-event-poller-3 [10.0.1.20][com.service.listener.TransactionStatusListener: 65]][TransactionStatusListener#handleSuccessfulTransaction]{"message": "0n-chain transaction successfully confirmed", "confirmationDetails": {"transactionHash": "0×2**************979", "status": "success", "blockNumber": 45101239, "gasUsed": 189543, "effectiveGasPrice": "58.2 Gwei", "userProfileSnapshot": {"wallet": "0x7****************7C4", "sourceIp": "203******.55", "phone": "199*****345", "address": "上海市*********00號", "birthday": null}}}
樣本2:Nginx日誌中敏感URI參數脫敏實踐
某電商平台的API Gateway每日處理數千萬次請求,現需要對URI裡的uid和token參數進行脫敏,保留前後各2位字元。
未經處理資料
這是一條典型的API訪問日誌URI,包含了使用者身份資訊和會話認證資訊。
http_protocol: HTTP/1.1 remote_addrs: 127.0.0.1 request_time: 5000 status: 302 time_local: 2025-08-19T18:52:03+08:00 uri: "uid=user12345&token=bf81639a41d604&from=web" user_agent: Mozilla/5.0(Windows NT 5.2; WOW64))AppleWebKit/535.1( (KHTML, like Gecko) Chrome/13.0.782.41 Safari/535.1SPL語句
在資料處理器中使用keyword模式,定位URI參數進行選擇性脫敏。
* | extend uri=mask(uri, '[ {"mode": "keyword", "keys": ["uid", "loginIp", "token"], "maskChar": "*", "keepPrefix": 2, "keepSuffix": 2} ]')輸出結果
http_protocol: HTTP/1.1 remote_addrs: 127.0.0.1 request_time: 5000 status: 302 time_local: 2025-08-19T18:52:03+08:00 uri: uid=us*****45&token=bf**********04&from=web user_agent: Mozilla/5.0(Windows NT 5.2; WOW64))AppleWebKit/535.1( (KHTML, like Gecko) Chrome/13.0.782.41 Safari/535.1