全部產品
Search
文件中心

Simple Log Service:使用mask函數進行資料脫敏

更新時間:Dec 05, 2025

阿里雲Log Service(SLS)推出 mask 脫敏函數。相比傳統正則脫敏方案的局限性,mask 函數在適用情境上更具優勢,並結合典型情境展示其在Sensitive Data Discovery and Protection與合規要求中的價值。

使用限制

目前mask函數僅適用於資料加工(新版)寫入處理器

脫敏方案概述

背景

隨著AI時代互動資料的快速增長,個人隱私資訊的安全保護成為企業合規經營的重要組成部分。GDPR、《資料安全法》、《個人資訊保護法》等法律法規對企業處理敏感資訊提出了嚴格要求。

正則脫敏

阿里雲Log Service(SLS)提供了一套完善的資料脫敏體系,支援多種靈活的採集+脫敏Pipeline組合流程,以滿足不同業務情境的需求。

  • LoongCollector端側脫敏:

    • 通過在採集配置中配置資料脫敏外掛程式,利用正則匹配實現對敏感欄位的替換。

    • 通過SPL語句使用regexp_replace函數,在服務側完成高效能脫敏處理。

  • LoongCollector/SDK + 寫入處理器聯合脫敏:

脫敏升級方案:mask函數

針對Regex脫敏存在的配置複雜、效能瓶頸和情境適配難等問題,SLS推出全新的mask脫敏函數,以提供更便捷、高效和智能的資料脫敏解決方案。

mask函數

函數文法

mask(field, varchar params)

參數說明

參數

說明

field

需要脫敏資料的原始欄位名稱。

param

該參數是JSON數組,可以定義一條或多條param參數規則

param參數規則

參數

是否必填

說明

mode

選擇脫敏模式:

  • keyword:關鍵字匹配,智能識別任意文本中符合"key":"value"、'key':'value'或key=value等常見KV對格式的敏感資訊。

  • buildin:內建規則匹配。

types

mode選擇buildin 模式必填

內建規則列表:

  • CREDIT_CARD:匹配信用卡/借記卡號(16-19位元字,支援 Visa=4, MC=51-55/2221-2720, Amex=34/37, Discover=6011/65, UnionPay=62 支援當前幾種格式)。

  • IP_ADDRESS:匹配 IPv4 地址(格式:xxx.xxx.xxx.xxx)。

  • EMAIL:匹配標準電子郵件地址。

    • 形態:local-part@domain.tld

    • 規則: local 支援字母數字、底線、連字號和點;必須有且僅一個 @;domain 允許字母數字與連字號,必須包含點,末尾 TLD 至少 2 字元。

keys

mode選擇keyword模式必填

定義需匹配的關鍵字列表,如 ["userName", "wallet"]

maskChar

用於脫敏的字元,預設為 *

keepPrefix

保留欄位開頭的字元數,例如 keepPrefix:3 保留前3位字元。

keepSuffix

保留欄位結尾的字元數,例如 keepSuffix:3 保留後3位字元。

樣本

樣本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.1
  • SPL語句

    在資料處理器中使用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