A partir da versão 1.317.0 do agente do browser, a ofuscação também pode ser configurada via plataforma New Relic e NerdGraph para métodos de instalação do browser por copiar/colar e NPM, e aplicativos injetados por APM. Você pode configurar regras de ofuscação diretamente no seu JavaScript para instalações por copiar/colar ou NPM.
Embora a New Relic recomende evitar informações confidenciais na estrutura pública do seu aplicativo, também entendemos que isso nem sempre é possível. Você pode configurar o agente do browser para ofuscar seletivamente os dados em cada carga enviada. Isso pode ser útil se seu aplicativo usar dados confidenciais em locais capturados pelo agente, como caminhos de navegação, mensagens de erro e muito mais.
Configurar regras de ofuscação
Você pode criar regras de ofuscação usando um dos seguintes métodos:
Importante
A partir da versão 1.317.0 do agente do browser, A ofuscação pode ser configurada por meio da plataforma New Relic e do NerdGraph para métodos de instalação de copiar/colar, de navegador NPM e aplicativos injetados pelo APM.
Você pode criar regras de ofuscação de ingestão diretamente da plataforma New Relic para mascarar dados confidenciais antes que sejam coletados. Essas regras se aplicam a todos os eventos do browser. As regras configuradas por meio da plataforma New Relic ou do NerdGraph se aplicam a aplicativos injetados pelo APM, instalações de copiar/colar e instalações do NPM. No entanto, as instalações de copiar/colar e do NPM podem substituir manualmente as regras configuradas na plataforma New Relic adicionando a propriedade obfuscate à sua configuração init.
Dica
Configuração inicial: para ver as configurações de regras de ofuscação na plataforma New Relic, você deve primeiro habilitar a captura de carga AJAX. Quando a captura de carga estiver habilitada, a seção de regras de ofuscação será exibida em seu Application settings. Você pode então desabilitar a captura de carga enquanto mantém suas regras de ofuscação personalizadas.
Em Ingest obfuscation rules, clique em Add a rule.
No campo Original value, insira um padrão regex para corresponder aos dados confidenciais que você deseja mascarar.
No campo Replace with, insira um valor neutro ou de substituição.
No dropdown Choose where to store, selecione os tipos de atributos de evento aos quais você deseja aplicar a regra de ofuscação.
Clique em Add rule para criar. A regra de ofuscação é aplicada aos dados correspondentes em todos os eventos do navegador antes da ingestão.
Você pode configurar o agente do browser para ofuscar seletivamente os dados em cada carga enviada. Isso é útil se seu aplicativo usar dados confidenciais em locais capturados pelo agente, como caminhos de navegação, mensagens de erro e muito mais.
A partir do agente browser versão 1216 e superior, a regra de ofuscação poderá ser aplicada à carga de colheita de saída.
Para configurar essas regras, configure a seguinte propriedade do agente do browser:
A propriedade init.obfuscate contém uma matriz de seletores e substituições que serão utilizadas para modificar cada colheita antes do envio.
Você precisará editar manualmente sua seção de configuração do JavaScript e definir a matriz obfuscate para conter suas condições de ofuscação.
Recomendações
Ao configurar esta propriedade, recomendamos o seguinte:
Use padrões regex intencionais para ofuscar apenas o que precisa de ofuscação.
A ofuscação excessiva pode ter efeitos colaterais, como menor granularidade ao agrupar dados e menor capacidade de digerir o que o agente capturou.
Substitua seus dados confidenciais por termos neutros e genéricos que também indiquem quais dados foram editados.
Exemplo: /account-id/g --> ACCOUNT_ID
Copiar/colar instalação
Se você estiver usando o método de instalação copiar/colar, adicione a seguinte configuração às configurações JavaScript do seu browser antes do carregador do agente:
window.NREUM.init={
...<other init properties>...,
obfuscate:[
{
regex:<RegExp| string>,
replacement:<string>,
eventFilter:[<string>]// Optional: specific event types to apply this rule to
},
...<other obfuscation rules>...
]
}
Instalação NPM
Se você estiver usando o método de instalação do browser NPM, adicione a seguinte configuração ao inicializar o agente browser:
newBrowserAgent({
init:{
...<other init properties>...,
obfuscate:[
{
regex:<RegExp| string>,
replacement:<string>,
eventFilter:[<string>]// Optional: specific event types to apply this rule to
},
...<other obfuscation rules>...
]
}
})
Exemplos: definir o escopo da ofuscação para tipos de evento específicos
Por padrão, as regras de ofuscação se aplicam a todos os tipos de evento capturados pelo agente do browser. No entanto, você pode definir o escopo das regras para tipos de evento específicos usando a propriedade de matriz eventFilter.
Isso é particularmente útil ao capturar cargas AJAX, onde você pode querer ofuscar dados sensíveis em corpos de request/resposta sem afetar outros eventos.
Dica
Se você omitir a propriedade eventFilter, a regra se aplicará a todos os tipos de evento, mantendo a compatibilidade com as configurações existentes.
window.NREUM.init={
...<other init properties>...,
obfuscate:[
{
regex:/user-id/g,
replacement:'USER_ID',
eventFilter:['AjaxRequest']// Optional: only apply to specific event types
},
]
}
newBrowserAgent({
init:{
...<other init properties>...,
obfuscate:[
{
regex:/account-id/g,
replacement:'ACCOUNT_ID',
eventFilter:['AjaxRequest','JavaScriptError']// Optional: apply to multiple event types
Quando você habilita a captura de carga AJAX, o agente do browser inclui regras de ofuscação padrão para proteger tipos comuns de dados confidenciais. Essas regras são criadas apenas na primeira vez que você habilita a captura de carga AJAX. Se você desabilitar e reabilitar este recurso, as regras padrão não serão recriadas:
Dica
Essas regras se aplicam a todos os aplicativos que têm a captura de carga AJAX ativada. Você pode personalizar ou desativar essas regras na plataforma New Relic ou usando o NerdGraph. Recomendamos manter essas regras ativadas, a menos que a configuração cause falsos positivos em seu caso de uso específico, pois a captura de carga fornece proteção importante para tipos comuns de dados confidenciais.
Dois padrões regex detectam e mascaram formatos comuns de cartão de crédito:
Ambos os padrões substituem os números de cartão de crédito detectados por XXXX-XXXX-XXXX-XXXX.
O seguinte padrão regex detecta e mascara números comuns de Seguro Social com XXX-XX-XXXX:
{
regex:/\b\d{3}-?\d{2}-?\d{4}\b/g,
replacement:'XXX-XX-XXXX',
eventFilter:['AjaxRequest']
}
Ofuscação e identificação do usuário
Se você usar a API newrelic.setUserId() para identificar usuários, esteja ciente de que as regras de ofuscação se aplicam a todos os dados coletados pelo agente do browser, incluindo o atributo enduser.id definido por setUserId().
Isso pode criar conflitos se você estiver usando endereços de e-mail ou outras PII como identificadores de usuário enquanto também ofusca esse mesmo tipo de dados em cargas AJAX.
Cenário de Exemplo
Suponha que você:
Use endereços de e-mail como IDs de usuário: newrelic.setUserId('user@example.com')
Configurar ofuscação para mascarar endereços de e-mail em corpos de request/resposta AJAX
O problema: como as regras de ofuscação se aplicam a todos os dados de evento (não apenas à carga AJAX), o atributo enduser.id também será ofuscado, aparecendo como EMAIL_REDACTED em vez do e-mail real.
Soluções
A abordagem recomendada é usar um identificador não confidencial para setUserId(), como:
Um ID de usuário com hash aplicado ou criptografado
Se você precisar usar endereços de e-mail como IDs de usuário, crie regras de ofuscação que tenham como destino caminhos JSON ou nomes de atributo específicos, em vez de corresponder a padrões de e-mail globalmente:
{
// More specific: only match emails in known sensitive fields
regex:/("customerEmail"\s*:\s*")[^"]+(@[^"]+")/g,
replacement:'$1EMAIL_REDACTED$2',
eventFilter:['AjaxRequest']
}
Essa abordagem requer testes cuidadosos para garantir que você esteja capturando todos os dados sensíveis enquanto evita falsos positivos.
Cuidado
Sempre teste suas regras de ofuscação minuciosamente em um ambiente de desenvolvimento antes de implantar na produção. Use a guia de rede das ferramentas de desenvolvedores do browser para inspecionar as cargas reais sendo enviadas para o New Relic.