難読化ルールを使用すると、エージェントがNew Relicに送信する前に機密データをマスクできます。各ルールは、正規表現パターンと置換文字列のペアです。エージェントは、すべての送信イベントのすべての文字列属性値に順番にルールを適用します — QoEイベントやクラッシュから回復したイベントも含まれます。
構成
Objective-C
NRVAVideoConfiguration *config = [[[[NRVAVideoConfiguration builder] withApplicationToken:@"YOUR_NEW_RELIC_TOKEN"] withObfuscationRules:@[ @{ @"regex": @"account-\\d+", @"replacement": @"ACCOUNT_ID" }, @{ @"regex": @"token=[^&\"]+", @"replacement": @"token=REDACTED" }, ]] build];[[[NRVAVideo newBuilder] withConfiguration:config] build];Swift
let config = NRVAVideoConfiguration.builder() .withApplicationToken("YOUR_NEW_RELIC_TOKEN") .withObfuscationRules([ ["regex": "account-\\d+", "replacement": "ACCOUNT_ID"], ["regex": "token=[^&\"]+", "replacement": "token=REDACTED"], ]) .build()NRVAVideo.newBuilder().with(configuration: config).build()使い方
- エージェントは、生のJSONペイロードに対してではなく、文字列属性値ごとにルールを適用します — 数値およびブール値の属性は影響を受けません。
- すべてのルールは、通常、ライブ、QoE、およびクラッシュから復旧したイベントを含む、送信されるすべてのイベントに対して実行されます。
- ルールは宣言した順序で実行されます。2つのルールが同じ値に一致する可能性がある場合、順序が重要になります。
- エージェントは
applicationTokenやHTTP認証ヘッダーを難読化することはありません — 難読化はイベント属性値にのみ適用されます。
エッジケース
| シナリオ | 行動 |
|---|---|
| ルールが設定されていない | エージェントは、パフォーマンスに影響を与えることなく、すべての属性値を変更せずにそのまま渡します。 |
| 空の置換文字列 | エージェントは、値から一致したコンテンツを削除します。 |
| 無効な正規表現パターン | withObfuscationRules: イベントが送信される前の設定時にNSInvalidArgumentExceptionをスローします。 |
| 非文字列属性値 | エージェントは属性をスキップします。文字列値のみが処理されます。 |
| 不正な形式のルール配列エントリ | エージェントはディクショナリではないエントリをスキップし、ログに警告を書き込みます。 |
applicationToken およびHTTP認証ヘッダー | これらがイベント属性に含まれることはなく、難読化ルールの影響も受けません。 |
| ルールの順序 | ルールは、配列で宣言されている順序で実行されます。 |
| 破滅的なバックトラッキング | NSRegularExpression iOSには組み込みのタイムアウトがありません。無制限のネストされた数量子を持つパターンは避けてください(たとえば、(a+)+)。デプロイする前に、最悪のケースの入力に対してルールをテストしてください。 |