すべてのプロダクト
Search
ドキュメントセンター

Simple Log Service:データマスキングに mask 関数を使用する

最終更新日:Dec 06, 2025

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

はい

マスキングモードを選択します:

  • keyword:キーワードマッチング。任意のテキスト内で、「"key":"value"」、「'key':'value'」、または「key=value」などの一般的なキーと値のペア形式の機密情報をインテリジェントに識別します。

  • buildin:組み込みルールマッチング。

types

`mode` が buildin に設定されている場合に必須です。

組み込みルールのリスト:

  • CREDIT_CARD:クレジットカードまたはデビットカード番号に一致します。これらの番号は 16~19 桁です。このルールは、Visa (4 で始まる)、Mastercard (51~55 または 2221~2720 で始まる)、Amex (34 または 37 で始まる)、Discover (6011 または 65 で始まる)、および UnionPay (62 で始まる) の形式をサポートします。

  • IP_ADDRESS:IPv4 アドレスに一致します。フォーマットは xxx.xxx.xxx.xxx です。

  • EMAIL: 標準のメールアドレスに一致します。

    • フォーマット: local-part@domain.tld

    • ルール:ローカルパートは、文字、数字、アンダースコア、ハイフン、ピリオドをサポートします。アットマーク (@) を 1 つだけ含む必要があります。ドメインパートは、文字、数字、ハイフンを許可します。ピリオドを含む必要があり、末尾のトップレベルドメイン (TLD) は 2 文字以上である必要があります。

keys

`mode` が keyword に設定されている場合に必須です。

照合するキーワードのリストを定義します。例:["userName", "wallet"]

maskChar

いいえ

マスキングに使用される文字。デフォルトは * です。

keepPrefix

いいえ

フィールドの先頭に保持する文字数。たとえば、keepPrefix:3 は最初の 3 文字を保持します。

keepSuffix

いいえ

フィールドの末尾に保持する文字数。たとえば、keepSuffix:3 は最後の 3 文字を保持します。

例 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.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