As regras de ofuscação permitem mascarar dados confidenciais antes que o agente os transmita para a New Relic. Cada regra é um padrão regex emparelhado com uma string de substituição. O agente aplica as regras em ordem a cada valor de atributo de string em cada evento de saída — incluindo QoE events e eventos recuperados de falhas.
Como funciona
- Você define uma lista de objetos
ObfuscationRule, cada um com um padrão de regex e uma string de substituição. - Passe a lista para
.withObfuscationRules()no construtor de configuração. - Logo antes de cada transmissão HTTP,
ObfuscationEngineitera cada atributo de string de cada evento no lote e aplica as regras em ordem. - Apenas valores de string são processados — inteiros, longs, booleanos e nulos são passados inalterados.
- Os objetos de evento originais nunca sofrem mutação, portanto, lotes com falha podem ser repetidos de forma limpa sem dupla ofuscação.
Configuração
import com.newrelic.videoagent.core.ObfuscationRule;import java.util.Arrays;import java.util.List;
// Define rules — each rule is a regex pattern and a replacement string.// Rules are applied in order on every string attribute of every outgoing event.List<ObfuscationRule> obfuscationRules = Arrays.asList( // Mask account IDs: "account-83729" → "ACCOUNT_ID" new ObfuscationRule("account-\\d+", "ACCOUNT_ID"),
// Mask auth tokens: "token=abc123xyz" → "token=REDACTED" new ObfuscationRule("token=[^&\"]+", "token=REDACTED"),
// Mask user path segments: "/users/john_doe" → "/users/USER_ID" new ObfuscationRule("/users/[^\"/]+", "/users/USER_ID"));
NRVideoConfiguration config = new NRVideoConfiguration.Builder("application-token") .autoDetectPlatform(getApplicationContext()) .withHarvestCycle(5 * 60) .withObfuscationRules(obfuscationRules) .build();
NRVideo.newBuilder(getApplicationContext()).withConfiguration(config).build();ObfuscationRule
new ObfuscationRule(String pattern, String replacement)Parâmetro | Tipo | Descrição |
|---|---|---|
|
| Uma string de padrão de regex Java. Compilado antecipadamente — um padrão inválido lança |
|
| A string a ser substituída para cada correspondência. Use |
obfuscationRules
Uma lista de objetos ObfuscationRule aplicados a cada atributo de string de cada evento de saída imediatamente antes da transmissão HTTP. As regras são executadas na ordem em que são declaradas — a saída de uma regra alimenta a próxima. Padrão: lista vazia (sem ofuscação).
Padrões comuns
O que mascarar | Padrão | Substituição |
|---|---|---|
IDs numéricos da conta |
|
|
Token de autenticação/bearer |
|
|
Segmentos de caminho do usuário |
|
|
Endereço de e-mail |
|
|
UUIDs |
|
|
Ordenação de regras
As regras são aplicadas da esquerda para a direita. A saída da regra N se torna a entrada da regra N + 1. A ordem importa quando a substituição de uma regra pode corresponder ao padrão de uma regra posterior.
// Rule 1 turns "/john" into "/USER", then Rule 2 sees "/USER_profile" and masks it.new ObfuscationRule("john", "USER"),new ObfuscationRule("USER_profile", "PROFILE")// Result: "/john_profile" → "/USER_profile" → "/PROFILE"Casos extremos
Situação | Comportamento |
|---|---|
Nenhuma regra configurada | No-op — zero sobrecarga, lista original retornada como está. |
O padrão não corresponde a nada | O valor é passado inalterado. |
Substituição vazia | O conteúdo correspondente é excluído. |
| Tratados como caracteres simples (não referências anteriores de regex). |
Valor Integer/Long/Boolean | Ignorado — apenas valores |
| Ignorado — sem NullPointerException. |
Padrão regex inválido |
|
|
|
O envio HTTP falha → nova tentativa de dead-letter | Os eventos originais (não ofuscados) são tentados novamente; a ofuscação é reaplicada corretamente na passagem de nova tentativa. |