データを変換、出荷、または使用するときに、データマスキングルールを設定して、機密データの公開を減らすことができます。 これにより、データリークのリスクを効率的に軽減できます。 このトピックでは、さまざまなシナリオで関数を使用して機密データをマスクする方法について説明します。
背景情報
データマスキングは、携帯電話番号、銀行カード番号、電子メールアドレス、IPアドレス、AccessKeyペア、ID番号、URL、注文番号、文字列などの機密データをマスクするために一般的に使用されます。 Log Serviceコンソールでデータを変換する場合、正規表現による置換 (キー関数regex_replace) 、Base64トランスコード (キー関数base64_encoding) 、MD5エンコーディング (キー関数md5_encoding) 、str_translateマッピング (キー関数str_translate) 、grokキャプチャ (キー関数grok) 。 詳細については、「正規表現関数」、「Grok機能」、および「エンコードとデコード関数」をご参照ください。
シナリオ1: マスクの携帯電話番号
ソリューション
ログエントリの携帯電話番号をマスクするには、regex_replace関数を使用します。
例
生のログエントリ
iphone: 13900001234
ドメイン固有言語 (DSL) オーケストレーション
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
Scenario 2: Mask銀行カード情報
ソリューション
ログエントリの銀行カード情報 (銀行カード番号など) をマスクするには、regex_replace関数を使用します。
例
生のログエントリ
content: bank number is 491648411333978312 and credit card number is 4916484113339780
DSL オーケストレーション
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_replace関数を使用します。
例
生のログエントリ
content: email is username@example.com
DSL オーケストレーション
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: AccessKeyペアのマスク
ソリューション
ログエントリのAccessKeyペアをマスクするには、regex_replace関数を使用します。
例
生のログエントリ
content: ak id is <testAccessKey ID> and ak key is <testAccessKey Secret>
DSL オーケストレーション
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関数を使用します。
例
生のログエントリ
content: ip is 192.0.2.10
DSL オーケストレーション
e_set("ip_encrypt",regex_replace(v('content'), grok('(%{IP})'), replace=r"****"))
結果
content: ip is 192.0.2.10 ip_encrypt: ip is ****
Scenario 6: Mask IDカード番号
ソリューション
ログエントリのIDカード番号をマスクするには、regex_replace関数とgrok関数を使用します。
例
生のログエントリ
content: Id card is 111222190002309999
DSL オーケストレーション
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: マスクURL
ソリューション
ログエントリのURLをマスクするには、URLをプレーンテキストに変換し、Base64エンコードおよびデコード関数を使用してURLをトランスコードします。
例
生のログエントリ
url: https://www.aliyun.com/sls?logstore
DSL オーケストレーション
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")
関数を使用します。
シナリオ8: マスク注文番号
ソリューション
ログエントリの注文番号をマスクし、他のユーザーが注文番号をデコードできないようにするには、MD5エンコード関数を使用して注文番号をエンコードします。
例
生のログエントリ
orderId: 20210101123456
DSL オーケストレーション
e_set("md5_orderId",md5_encoding(v("orderId")))
結果
orderId: 20210101123456 md5_orderId: 852751f9aa48303a5691b0d020e52a0a
シナリオ9: マスク文字列
ソリューション
Toは弦ログエントリ、使用することができstr_翻訳機能マッピング設定するためのルールを弦。
例
生のログエントリ
data: message level is info_
DSL オーケストレーション
e_set("data_translate", str_translate(v("data"),"aeiou","12345"))
結果
data: message level is info data_translate: m2ss1g2 l2v2l 3s 3nf4