資料脫敏可以有效地減少敏感性資料在加工、傳輸、使用等環節中的暴露,降低敏感性資料泄露的風險,保護使用者權益。本文介紹Log Service資料加工過程中常見的脫敏情境、對應的脫敏方法及樣本。
背景資訊
使用敏感性資料包括手機號、銀行卡號、郵箱、IP地址、AK、社會安全號碼網址、訂單號、字串等情境中,您需要為敏感性資料進行脫敏操作。在Log Service資料加工服務中,常見的脫敏方法有Regex替換(關鍵函數regex_replace)、Base64轉碼(關鍵函數base64_encoding)、MD5編碼(關鍵函數md5_encoding)、str_translate映射(關鍵函數str_translate)、GROK捕獲(關鍵函數grok)等。更多資訊,請參見Regex函數、GROK函數和編碼解碼函數。
情境1:手機號脫敏
- 脫敏方法
日誌中包含不希望被暴露的手機號,可採用Regex,運用regex_replace函數脫敏。
- 樣本
- 原始日誌
iphone: 13900001234
- 加工規則
e_set( "sec_iphone", regex_replace(v("iphone"), r"(\d{0,3})\d{4}(\d{4})", replace=r"\1****\2"), )
- 加工結果
iphone: 13900001234 sec_iphone: 139****1234
- 原始日誌
情境2:銀行卡資訊脫敏
- 脫敏方法
日誌中包含銀行卡或者信用卡資訊,可採用Regex,運用regex_replace函數脫敏。
- 樣本
- 原始日誌
content: bank number is 491648411333978312 and credit card number is 4916484113339780
- 加工規則
e_set( "bank_number", regex_replace( v("content"), r"([1-9]{1})(\d{14}|\d{13}|\d{11})(\d{4})", replace=r"****\3" ), )
- 加工結果
content: bank number is 491648411333978312 and credit card number is 4916484113339780 bank_number: bank number is ****8312 and credit card number is ****9780
- 原始日誌
情境3:郵箱地址脫敏
- 脫敏方法
日誌中包含郵箱資訊,可採用Regex,運用regex_replace函數脫敏。
- 樣本
- 原始日誌
content: email is username@example.com
- 加工規則
e_set( "email_encrypt", regex_replace( v("content"), r"[A-Za-z\d]+([-_.][A-Za-z\d]+)*(@([A-Za-z\d]+[-.])+[A-Za-z\d]{2,4})", replace=r"****\2", ), )
- 處理後資料
content: email is username@example.com email_encrypt: email is ****@example.com
- 原始日誌
情境4:AK脫敏
- 脫敏方法
日誌中包含AccessKey資訊,可採用Regex,應用regex_replace函數。
- 樣本
- 原始日誌
content: ak id is <testAccessKey ID> and ak key is <testAccessKey Secret>
- 加工規則
e_set( "akid_encrypt", regex_replace( v("content"), r"([a-zA-Z0-9]{4})(([a-zA-Z0-9]{26})|([a-zA-Z0-9]{12}))", replace=r"\1****", ), )
- 加工結果
content: ak id is <testAccessKey ID> and ak key is <testAccessKey Secret> akid_encrypt: ak id is rDhc**** and ak key is XQr1****
- 原始日誌
情境5:IP地址脫敏
- 脫敏方法
日誌中包含IP地址資訊,可同時運用regex_replace函數和grok函數,對IP地址進行正則捕獲後而脫敏。
- 樣本
- 原始日誌
content: ip is 192.0.2.10
- 加工規則
e_set("ip_encrypt",regex_replace(v('content'), grok('(%{IP})'), replace=r"****"))
- 加工結果
content: ip is 192.0.2.10 ip_encrypt: ip is ****
- 原始日誌
情境6:身份證脫敏
- 脫敏方法
日誌中包含身份證資訊,可同時運用regex_replace函數和grok函數,對社會安全號碼進行正則捕獲後而脫敏。
- 樣本
- 原始日誌
content: Id card is 111222190002309999
- 加工規則
e_set( "id_encrypt", regex_replace(v("content"), grok("(%{CHINAID})"), replace=r"\1****") )
- 加工結果
content: Id card is 111222190002309999 id_encrypt: Id card is 111222****
- 原始日誌
情境7:網址脫敏
- 脫敏方法
對日誌內容中的網址做脫敏處理,並且將脫敏的資料轉成明文格式,可運用Base64編碼解碼函數,對網址進行轉碼。
- 樣本
- 原始日誌
url: https://www.aliyun.com/sls?logstore
- 加工規則
e_set("base64_url",base64_encoding(v("url")))
- 加工結果
url: https://www.aliyun.com/sls?logstore base64_url: aHR0cHM6Ly93d3cuYWxpeXVuLmNvbS9zbHM/bG9nc3RvcmU=
說明 如果想對base64_url
進行解碼,可以使用base64_decoding(v("base64_url"))
DSL文法規則。
- 原始日誌
情境8:訂單號脫敏
- 脫敏方法
對日誌內容中的訂單號做脫敏處理,同時不希望其他人能夠解碼,可運用MD5編碼函數,對訂單號進行編碼。
- 樣本
- 原始日誌
orderId: 20210101123456
- 加工規則
e_set("md5_orderId",md5_encoding(v("orderId")))
- 加工結果
orderId: 20210101123456 md5_orderId: 9c0ab8e4d9f4eb6fbd5c508bbca05951
- 原始日誌
情境9:字串脫敏
- 脫敏方法
您希望日誌中的關鍵字符串不被暴露,可通過str_translate函數制訂映射規則,對關鍵字符或字串進行映射脫敏。
- 樣本
- 原始日誌
data: message level is info_
- 加工規則
e_set("data_translate", str_translate(v("data"),"aeiou","12345"))
- 加工結果
data: message level is info data_translate: m2ss1g2 l2v2l 3s 3nf4
- 原始日誌