Te ofrecemos esta traducción automática para facilitar la lectura.
En caso de que haya discrepancias entre la versión en inglés y la versión traducida, se entiende que prevalece la versión en inglés. Visita esta página para obtener más información.
Ofuscación de logs: hash o enmascarar datos sensibles en tu log
Con log de regla de ofuscación, puedes evitar que ciertos tipos de información se guarden en New Relic.
Requisitos
Nuestra característica de ofuscación de registros está disponible como parte de nuestra opción Data Plus.
Qué es ofuscación de logs?
Nuestro servicio enmascara automáticamente los patrones numéricos que identificamos como elementos probablemente confidenciales, como números de tarjetas de crédito o de Seguro Social.
Si necesita ofuscación adicional, una opción es ajustar la configuración del reenviador de registros que utiliza (por ejemplo, nuestro agente de infraestructura). Pero una opción más sencilla es utilizar nuestra característica de ofuscación de registros, disponible con Data Plus. Esta característica le permite configurar la regla de ofuscación log directamente desde la UI de administración de registros, o mediante nuestra API NerdGraph, sin una configuración manual prolongada. Definirá expresiones regulares que coincidan con su información confidencial y luego creará reglas para ofuscar esos datos. Puede elegir entre tener información confidencial enmascarada o hash.
Definiciones
Aquí hay algunos términos importantes:
Obfuscation rules
definir a qué log aplicar acciones de ofuscación.
Obfuscation rule actions
define qué atributo mirar, qué texto ofuscar y cómo ofuscar (ya sea mediante enmascaramiento o hash).
Obfuscation expressions
se denominan expresiones regulares que identifican qué texto ofuscar.
Masking
elimina completamente la información, reemplazándola con X caracteres. No puede buscar valores específicos una vez hecho esto.
Hashing
oculta información. Puede utilizar la herramienta de hash para obtener el hash de un valor confidencial y luego buscar el registro que contenga ese hash.
Cómo funciona la ofuscación
Los objetos JSON que se muestran en el siguiente ejemplo son simplificaciones de la carga utilizada por nuestra API NerdGraph. Esto le ayudará a correlacionar mejor las diferentes operaciones de API con sus contrapartes equivalentes de UI.
Ejemplo: registro log antes de la ofuscación
Imagine que tiene el siguiente registro log :
{
"message":"The credit card number 4321-5678-9876-2345 belongs to user user@email.com (born on 01/02/2003) with SSN 123-12-1234",
"creditCardNumber":"4321-5678-9876-2345",
"ssn":"123-12-1234",
"department":"sales",
"serviceName":"loginService"
}
Este log contiene varios datos confidenciales. Idealmente, le gustaría que su log terminara luciendo así:
{
"message":"The credit card number 9aa9bc1528859aee1b1df75795f1ebd54beb2f0d26c8a1d4580a71a07189cdd5 belongs to user user@email.com (born on XXXXXXXXXX) with SSN 30e6897f76dc102e32ee1d781c43417d259e586eac15c963d75ab8b5187769da",
Este es el proceso básico que usaría para ofuscar los datos confidenciales en este ejemplo.
Decides que quieres aplicar las siguientes acciones de ofuscación a todo el log proveniente de ese servicio:
HASH el número de tarjeta de crédito presente en el atributo message y creditCardNumber .
MASK la fecha de nacimiento presente en el atributo message .
HASH el número de Seguro Social presente en el atributo message y ssn .
Lo primero que debes hacer es definir alguna expresión de ofuscación que te permita capturar esta información sensible.
Sugerencia
Los siguientes ejemplos muestran expresiones regulares que usaría directamente en la UI. Más adelante en este documento, analizamos cómo se pueden utilizar versiones de escape de estas expresiones regulares para NerdGraph.
Expresión de ofuscación
Definición
Número de Tarjeta de Crédito
Necesitamos capturar 4 grupos de 4 dígitos separados por guiones:
Necesitamos capturar 3 grupos de 3, 2 y 4 dígitos separados por guiones:
{
"name":"Social Security Number",
"regex":"(d{3}-d{2}-d{4})"
}
Fecha de nacimiento (loginService específica)
En este ejemplo, la fecha de nacimiento es parte del servicio de inicio de sesión. Definimos la parte a ofuscar según la información de fecha en las palabras circundantes "(born on 01/02/2003)":
{
"name":"Born date - loginService specific",
"regex":"born on (.*))"
}
Cada expresión de ofuscación define cómo capturar información confidencial de una cadena (usando una expresión regular) y la asocia con algún nombre descriptivo para que pueda identificarla fácilmente más adelante.
La expresión de ofuscación puede ser reutilizable; son totalmente independientes de cómo se nombra el atributo log que contiene los datos confidenciales. Por ejemplo, la expresión del Seguro Social definida anteriormente podría aplicarse a un atributo log denominado ssn, socialSecurityNumber o socSecNum.
También puede crear expresiones de ofuscación no reutilizables, como Born date (loginService specific), que estén estrechamente acopladas al formato del atributo log . Por ejemplo, podrías usar lo que venga después de born on y before.
No se admiten grupos de captura de expresiones regulares anidados
La principal responsabilidad de esta característica es reemplazar datos sensibles con el hash o enmascarar de una manera fácil y eficaz. Si desea o necesita agrupar diferentes coincidencias dentro de un grupo de captura, recuerde utilizar la sintaxis de grupo sin captura (?:{EXPRESSION}) para evitar crear grupos de captura anidados. Por ejemplo, evite (([A-Z]{12})|([a-z]{6})) y en su lugar utilice ((?:[A-Z]{12})|((?:[a-z]{6})).
Ahora que hemos definido cómo capturar nuestros datos sensibles, necesitamos especificar qué registros deben ofuscarse (los del Servicio de inicio de sesión) y cómo (con las acciones de ofuscación que definimos). Para lograr esto, definimos una regla de ofuscación.
{
"name":"Obfuscate Login Service Logs",
"filter":"serviceName = 'loginService' AND department = 'sales'",
"actions":[
{
"attributes":["message","creditCardNumber"],
"expression":{"name":"Credit Card Number"},
"method":"HASH_SHA256"
},
{
"attributes":["message"],
"expression":{"name":"Born date - loginService specific"},
"method":"MASK"
},
{
"attributes":["message","ssn"],
"expression":{"name":"Social Security Number"},
"method":"HASH_SHA256"
}
]
}
Esta regla contiene tres componentes principales:
Componente de regla de ofuscación
Descripción
Nombre
El nombre ayuda a identificar fácilmente lo que hace la regla. En este ejemplo, esta regla define cómo ofuscar los diferentes atributos del registro provenientes del Servicio de inicio de sesión.
Filtrar
El filtro utiliza el formato NRQL para indicarle a nuestro sistema cómo identificar el registro de destino proveniente del servicio de inicio de sesión. Este ejemplo consulta para el registro donde serviceName = loginService y department = sales.
Comportamiento
Finalmente, esta regla define el conjunto de acciones de ofuscación a aplicar al registro que coincide con el filtro. Cada acción define:
¿Cuál expresión de ofuscación creada previamente se utilizará para extraer la información sensible de cada conjunto de atributos?
Qué método de ofuscación (HASH_SHA256 o MASK) se aplicará para ofuscar estos datos
Tenga en cuenta que al definir la regla de ofuscación a través de NerdGraph, deberá especificar el id de la expresión de ofuscación en lugar de sus nombres. Para hacer más legible el ejemplo anterior, utilizamos la expresión de ofuscación nombres.
Como ejemplo final, imagine que también necesitábamos ofuscar el registro proveniente de otro servicio llamado "Servicio de pago" que tiene un atributo serviceName = checkoutService así como un atributo ccn que contiene información de tarjeta de crédito:
{
"message":"Order completed",
"ccn":"4321-5678-9876-2345",
"department":"sales",
"serviceName":"checkoutService"
}
Para ofuscar el registro de este servicio, solo tendríamos que definir otra regla de ofuscación dirigida a estos registros específicos, y simplemente reutilizaríamos la Credit card number expresión de ofuscación creada previamente:
{
"name":"Obfuscate Checkout Service Logs",
"filter":"serviceName = 'checkoutService' AND department = 'sales'",
"actions":[
{
"attributes":["ccn"],
"expression":{"name":"Credit Card Number"},
"method":"HASH_SHA256"
}
]
}
Lista de verificación: pasos para ofuscar el registro
Para ofuscar su registro:
Estudie la forma de su registro identificando patrones de datos confidenciales que aparecen en ellos. Por ejemplo:
¿Todo su registro contiene información confidencial? ¿O puede ser más específico (solo el registro del servicio A o la región B)?
¿Qué información sensible contienen: números de tarjetas de crédito, números de licencia de conducir, documentos de identidad, datos biométricos, otros valores?
Cree expresiones de ofuscación para identificar cómo extraer datos confidenciales.
Definir reglas de ofuscación para cada conjunto de logs:
Defina cómo los capturará usando NRQL.
Defina qué acciones de ofuscación se deben aplicar a cada uno de ellos. Pregúntese: ¿Tendré que consultar mi registro utilizando esta información confidencial más adelante (considere usar HASH), o tendré que eliminar esta información por completo de mi registro (considere usar MASK)?
Sugerencia
La UI Logs obfuscation incluye un Hashing tool para que pueda encontrar un hash de un valor conocido y copiarlo para usarlo con otras expresiones y reglas.
Límites de CPU
La ofuscación tiene límites de CPU por minuto. Si una cuenta alcanza estos límites de recursos, el registro no se ocultará como se esperaba. Para verificar los límites de su CPU, vaya a la página Limits de su sistema en la UI Data management.
Si excede los límites de ofuscación por minuto de CPU y el registro no se puede ofuscar ni aplicar hash, el atributo al que se aplicó la regla de ofuscación será dropped y se reemplazará con un texto que indique por qué se eliminó el atributo. Por ejemplo, si se aplica la regla de ofuscación al campo message y se alcanza el límite de CPU por minuto, el log resultante se verá así:
{
...
"message":"<OBFUSCATION> The account is over its obfuscation per-minute limit, attribute dropped",
...
}
Esto es para evitar que la PII u otros datos confidenciales se ingieran sin darse cuenta.
Además, se registrará el siguiente `NrIntegrationError' en la cuenta:
{
"category":"RateLimit",
"level":"error",
"limitName":"Log API obfuscation per account per minute",
"message":"You’ve exceeded our limit of per-account obfuscation time per-minute for the Log ingestion pipeline. Please reduce your usage or contact New Relic support.",
"name":"ObfuscationTimeLimitReached",
"newRelicFeature":"Logs",
"rateLimitType":"ObfuscationTimePerMinute",
"timestamp":1678819264283
}
Para evaluar qué tan bien está funcionando su regla de ofuscación y ver cuáles se están saltando, vaya a Logs Obfuscation > Health. Las reglas de ofuscación consumen mucha CPU, por lo que estos gráficos pueden ayudarle a decidir qué reglas se ven más afectadas por las limitaciones de recursos.
Expresión de ofuscación
Puede crear, leer, actualizar o eliminar expresión de ofuscación utilizando la New Relic UI o utilizando NerdGraph, nuestro Explorador GraphQL.
one.newrelic.com > All capabilities > Logs > Obfuscation: Primero crea una o más expresiones de ofuscación, luego crea tu regla de ofuscación.
Utilice cualquiera de estas opciones para crear una expresión de ofuscación:
Ingrese un nombre para su nueva regla de ofuscación, así como una expresión regular que coincida con los datos confidenciales que desea capturar. Utilice la sintaxis RE2.
El siguiente ejemplo muestra una expresión de ofuscación básica que coincidirá con números de tarjetas de crédito:
Using NerdGraph:
Utilice la mutación logConfigurationsCreateObfuscationExpression en logConfigurations. Consulte el ejemplo completo en GraphiQL, así como la documentación relacionada en api.newrelic.com/graphiql.
Importante
Debes escapar de las expresiones regulares cuando las uses en NerdGraph. Por ejemplo: ((?:(?:4\\d{3})|(?:5[1-5]\\d{2})|6(?:011|5[0-9]{2}))(?:-?|\\040?)(?:\\d{4}(?:-?|\\040?)){3}|(?:3[4,7]\\d{2})(?:-?|\\040?)\\d{6}(?:-?|\\040?)\\d{5})
Utilice cualquiera de estas opciones para consultar una expresión de ofuscación:
y, en el panel de navegación izquierdo, seleccione
Obfuscation
.
Seleccione la pestaña
Expressions
para ver todas las expresiones de ofuscación disponibles y sus definiciones.
Using NerdGraph:
Utilice el buscador obfuscationExpressions en actor.account.logConfigurations. Consulte el ejemplo completo en GraphiQL, así como la documentación relacionada en api.newrelic.com/graphiql.
Utilice cualquiera de estas opciones para actualizar una expresión de ofuscación:
Haga clic en el icono de puntos suspensivos ... en el lado derecho de la expresión de ofuscación que desea editar y haga clic en Edit.
Modifique los campos según sea necesario y haga clic en Update.
Using NerdGraph:
Utilice la mutación logConfigurationsUpdateObfuscationExpression en logConfigurations. Consulte el ejemplo completo en GraphiQL, así como la documentación relacionada en api.newrelic.com/graphiql.
Importante
Debes escapar de las expresiones regulares cuando las uses en NerdGraph. Por ejemplo: ((?:(?:4\\d{3})|(?:5[1-5]\\d{2})|6(?:011|5[0-9]{2}))(?:-?|\\040?)(?:\\d{4}(?:-?|\\040?)){3}|(?:3[4,7]\\d{2})(?:-?|\\040?)\\d{6}(?:-?|\\040?)\\d{5})
No es necesario especificar todos los campos de una expresión de ofuscación al actualizarla, solo el id (obligatorio) y los campos que desea modificar.
Importante
No podrá eliminar una expresión de ofuscación si actualmente está siendo utilizada por una regla de ofuscación.
Utilice cualquiera de estas opciones para eliminar una expresión de ofuscación:
Haga clic en el icono de puntos suspensivos ... en el lado derecho de la expresión de ofuscación que desea eliminar y haga clic en Delete.
Confirme que desea eliminar la expresión haciendo clic en Delete.
Using NerdGraph:
Utilice la mutación logConfigurationsDeleteObfuscationExpression en logConfigurations. Consulte el ejemplo completo en GraphiQL, así como la documentación relacionada en api.newrelic.com/graphiql.
La mutación devolverá una instantánea de la expresión antes de ser eliminada.
Expresiones de muestra
A continuación, proporcionamos algunos ejemplos de expresiones regulares para ofuscar algunos de los tipos de datos confidenciales más comunes. La expresión de ofuscación debe crearse para cada cuenta New Relic donde se utilizarán esas expresiones.
Sugerencia
Los siguientes ejemplos son expresiones regulares que podría utilizar en la UI. Para usarlos en GraphQL, deberá escaparlos como se muestra en este ejemplo.
Ingrese un nombre para su nueva regla de ofuscación, así como un criterio coincidente (en formato NRQL ) para capturar el conjunto objetivo de registros que desea ofuscar.
Agregue un nuevo actions (el primero se agrega automáticamente) para especificar la expresión de ofuscación (regex) para capturar cada conjunto de atributos, así como si se deben MASK o HASH .
Se pueden especificar varios atributos separados por comas.
MASK reemplazará todos los caracteres coincidentes con Xes. Si usa MASK, no podrá consultar un valor ofuscado en particular más adelante.
HASH reemplazará los datos confidenciales con el valor hash SHA-256. Si utiliza HASH, podrá consultarlos utilizando nuestra herramienta hash, siempre que conozca su valor de texto sin cifrar.
Tu regla debería verse así:
Haga clic en Create rule para crear y activar su regla de ofuscación.
Using NerdGraph:
Utilice la mutación logConfigurationsCreateObfuscationRule en logConfigurations. Consulte el ejemplo completo en GraphiQL, así como la documentación relacionada en api.newrelic.com/graphiql.
Importante
Debe especificar la ofuscación expressionId para vincularla a una acción de ofuscación determinada. Para recuperar esta identificación, puede consultar el obfuscationRules.
Utilice cualquiera de estas opciones para consultar una regla de ofuscación:
Seleccione la pestaña Rules (predeterminada) para ver todas las reglas de ofuscación disponibles y sus definiciones.
Using NerdGraph:
Utilice el buscador obfuscationRules en actor.account.logConfigurations. Consulte el ejemplo completo en GraphiQL, así como la documentación relacionada en api.newrelic.com/graphiql
Utilice cualquiera de estas opciones para actualizar una regla de ofuscación:
Haga clic en el icono de puntos suspensivos ... en el lado derecho de la regla de ofuscación que desea editar y haga clic en Edit.
Modifique los campos según sea necesario y haga clic en Update rule.
Using NerdGraph:
Utilice la mutación logConfigurationsUpdateObfuscationRule en logConfigurations. Consulte el ejemplo completo en GraphiQL, así como la documentación relacionada en api.newrelic.com/graphiql.
Importante
Debe especificar la ofuscación expressionId para vincularla a una acción de ofuscación determinada. Para recuperar esta identificación, puede usar obfuscationRules, como se describe en [consulta el obfuscationRules]](#rules-read).
No es necesario especificar todos los campos de una regla de ofuscación al actualizarla, solo el id (obligatorio) y los campos que deseas modificar. A continuación se muestra un ejemplo para actualizar solo el nombre.
Utilice cualquiera de estas opciones para eliminar una regla de ofuscación:
Haga clic en el icono de puntos suspensivos ... en el lado derecho de la regla de ofuscación que desea eliminar y haga clic en Delete.
Confirme que desea eliminar la expresión haciendo clic en Delete.
Using NerdGraph:
Utilice la mutación logConfigurationsDeleteObfuscationRule en logConfigurations. Consulte el ejemplo completo en GraphiQL, así como la documentación relacionada en api.newrelic.com/graphiql.
La mutación devolverá una instantánea de la regla antes de ser eliminada.