Alibaba Cloud Simple Log Service (SLS) は、データマスキングのための `mask` 関数を提供しています。`mask` 関数は、従来の正規表現方式の制限を克服し、機密データを保護し、コンプライアンス要件を満たす上で、より多用途で効果的です。このトピックでは、典型的なシナリオでこの関数を使用する方法について説明します。
制限
`mask` 関数は、データ変換 (新バージョン) および 書き込みプロセッサー でのみ利用可能です。
データマスキングソリューションの概要
背景
AI の時代において、データは急速に増加しています。個人情報の保護は、ビジネスコンプライアンスの重要な一部となっています。GDPR、データセキュリティ法、個人情報保護法などの法律では、機密データの取り扱いに関する厳しい要件が定められています。
正規表現によるマスキング
Alibaba Cloud SLS は、包括的なデータマスキングシステムを提供しています。データインジェストとマスキングを組み合わせた柔軟なパイプラインをサポートし、さまざまなビジネスニーズに対応します。
LoongCollector クライアント側のマスキング:
コレクション構成でデータマスキングプラグインを設定し、正規表現マッチングを使用して機密フィールドを置き換えることができます。
regexp_replace 関数 を構造化プロセス言語 (SPL) 文で使用して、サーバー側でパフォーマンス専有型のマスキングを実行できます。
LoongCollector/SDK と書き込みプロセッサーを組み合わせたマスキング:
LoongCollector クライアントまたは SDK (ソフトウェア開発キット) がデータインジェストを処理します。その後、書き込みプロセッサー が regexp_replace 関数 を使用してマスキングを実行します。この方法により、クライアント側の高いリソース使用量を防ぐことができます。
アップグレードされたマスキングソリューション:mask 関数
正規表現によるマスキングは、複雑で、処理が遅く、適応が難しい場合があります。これらの問題に対処するため、SLS は新しい `mask` 関数を提供しています。この関数は、よりシンプルで、高速かつインテリジェントなデータマスキングソリューションを提供します。
mask 関数
関数構文
mask(field, varchar params)パラメーター
パラメーター | 説明 |
field | マスキング対象のデータを含むソースフィールドの名前。 |
param | このパラメーターは JSON 配列です。1 つ以上の param ルール を定義できます。 |
param ルール
パラメーター | 必須 | 説明 |
mode | はい | マスキングモードを選択します:
|
types | `mode` が | 組み込みルールのリスト:
|
keys | `mode` が | 照合するキーワードのリストを定義します。例: |
maskChar | いいえ | マスキングに使用される文字。デフォルトは |
keepPrefix | いいえ | フィールドの先頭に保持する文字数。たとえば、 |
keepSuffix | いいえ | フィールドの末尾に保持する文字数。たとえば、 |
例
例 1:トランザクションデータのマスキング
ある DeFi プラットフォームは、毎日数千のオンチェーン取引を処理します。各トランザクションは詳細なログを生成します。これらのログには、ウォレットアドレス、トランザクションハッシュ、ユーザーペルソナなどの機密データが含まれています。データ保護規制に準拠するため、ログがビジネス分析やトラブルシューティングに引き続き使用できるようにしながら、この機密データをマスキングする必要があります。この例では、`wallet address`、`address`、`source IP`、`phone number`、`transaction hash` の各フィールドをマスキングし、トレーサビリティのために各フィールドの先頭 3 文字と末尾 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":"オンチェーン トランザクションは正常に確認されました","confirmationDetails":{"transactionHash":"0x2baf892e9a164b1979","status":"success","blockNumber":45101239,"gasUsed":189543,"effectiveGasPrice":"58.2 Gwei","userProfileSnapshot":{"wallet":"0x71C7656EC7a5f6d8A7C4","sourceIp":"203.0.113.55","phone":"19901012345","address":"No. 1000 Wenming Road, Pudong New Area, Shanghai","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": "オンチェーン トランザクションの確認に成功しました", "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": "Shanghai*********No. 00", "birthday": null}}}
例 2:Nginx ログ内の機密 URI パラメーターのマスキング
ある E コマースプラットフォームの API ゲートウェイは、毎日数百万のリクエストを処理します。この例では、リクエスト URI 内の `uid` および `token` パラメーターをマスキングし、各パラメーターの先頭 2 文字と末尾 2 文字を保持する方法を示します。
生データ
これは、ユーザー ID とセッション認証情報を含む典型的な 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