コンテンツにスキップ

データ収集マスキング

フィールド名に基づいたグローバルな修正やマスキングのみを行う場合は、setDataModifier を使用することを推奨します。パフォーマンスオーバーヘッドが低くなります。1 つのデータ内の複数のフィールドを組み合わせて判断や置換を行う必要がある場合は、setLineDataModifier を使用してください。

コールバック内で複雑、長時間、または非同期の操作を実行しないでください。SDK のデータ書き込みパフォーマンスに影響を与える可能性があります。

DataModifier は、生のログ、ネイティブ RUM、および WebView RUM のタグとフィールドを処理します。null を返すと、元の値が保持されます。

LineDataModifier は、SDK のタグとフィールドがマージされた後に実行されます。コールバックは、そのデータの完全な Map を受け取ります。戻り値は、置換するフィールドのみを含むパッチです。元のデータに既に存在するフィールドのみが置換されます。null、空の Map、フィールド値が null、または存在しないフィールドを返しても、データは変更されません。

import {
  DataModifier,
  DataModifierValue,
  FTSDK,
  FTSDKConfig,
  LineDataModifier
} from '@guancecloud/ft_sdk/Index';

class FieldMasker implements DataModifier {
  /**
   * 単一のタグまたはフィールドを変更します。
   * null を返すと、元の値は変更されません。
   */
  modify(key: string, _value: DataModifierValue): DataModifierValue | null {
    if (key === 'device_uuid' || key === 'authorization') {
      return '[masked]';
    }
    return null;
  }
}

class RecordMasker implements LineDataModifier {
  /**
   * 単一のデータを変更します。
   * measurement はデータの指標タイプです(例: view、action、resource、longtask、error、df_rum_harmonyos_log)。
   * 変更するフィールドのみを含む Map を返します。null または空の Map を返すと、データは変更されません。
   */
  modify(measurement: string, data: Map<string, DataModifierValue>): Map<string, DataModifierValue> | null {
    const patch = new Map<string, DataModifierValue>();

    if (measurement === 'view' && data.has('view_url')) {
      patch.set('view_url', '[masked]');
    }
    if (data.get('message') === 'sensitive message') {
      patch.set('message', '[masked]');
    }

    return patch.size > 0 ? patch : null;
  }
}

const sdkConfig = FTSDKConfig.builder(datawayUrl, clientToken)
  .setDataModifier(new FieldMasker())
  .setLineDataModifier(new RecordMasker());

FTSDK.install(sdkConfig, this.context);

データ変更とブラックリストフィルタリングを同時に設定する場合、実行順序は次のとおりです。DataModifierLineDataModifier → ブラックリストフィルタリング → ローカルキャッシュへの書き込み。ローカルとリモートのブラックリストルールは、どちらも変更後のデータに基づいて判断されます。

DataModifierValue は、stringnumberbooleanobject をサポートします。オブジェクトは、ローカルキャッシュに書き込まれる前にシリアル化されます。どちらのタイプのコールバックも、フィールドを追加または削除したり、タグとフィールド間でデータを移動したりすることはできません。

フィードバック

このページは役に立ちましたか?