Cette traduction automatique est fournie pour votre commodité.
En cas d'incohérence entre la version anglaise et la version traduite, la version anglaise prévaudra. Veuillez visiter cette page pour plus d'informations.
obfuscation des logs : hacher ou masquer des données sensibles dans votre log
Avec log règle d'obfuscation, vous pouvez empêcher l'enregistrement de certains types d'informations dans New Relic.
Exigences
Notre fonctionnalité obfuscation des logest disponible dans le cadre de notre option Data Plus.
Qu'est-ce que l'obfuscation des logs ?
Notre service masque automatiquement les modèles de numéros que nous identifions comme étant probablement des éléments sensibles, tels que les numéros de carte de crédit ou de sécurité sociale.
Si vous avez besoin d' obfuscation supplémentaire, une option consiste à ajuster la configuration du redirecteur de logque vous utilisez (par exemple, notre agent infrastructure ). Mais une option plus simple est d'utiliser notre fonctionnalité obfuscation des log , disponible avec Data Plus. Cette fonctionnalité vous permet de configurer log des règles d'obfuscation directement depuis logl'interface utilisateur de gestion des , ou via notre API NerdGraph, sans longue configuration manuelle. Vous définirez des expressions régulières correspondant à vos informations sensibles, puis créerez des règles pour masquer ces données. Vous pouvez choisir de masquer ou de hacher les informations sensibles.
Définitions
Voici quelques termes importants :
Obfuscation rules définir à quel log appliquer les actions obfuscation .
Obfuscation rule actions définir quel attribut regarder, quel texte obscurcir et comment obscurcir (soit par masquage, soit par hachage).
Obfuscation expressions sont des expressions régulières nommées identifiant le texte à obscurcir.
Masking supprime complètement les informations et les remplace par X caractères. Vous ne pouvez pas rechercher des valeurs spécifiques une fois cette opération effectuée.
Hashing cache des informations. Vous pouvez utiliser l'outil de hachage pour obtenir le hachage d'une valeur sensible, puis rechercher le log contenant ce hachage.
Comment fonctionne l'obfuscation
Les objets JSON affichés dans l'exemple suivant sont des simplifications de la charge utilisée par notre API NerdGraph. Cela vous aidera à mieux corréler les différentes opérations d'API avec leurs homologues équivalents de l'interface utilisateur.
Exemple : enregistrement du log avant obfuscation
Imaginez que vous avez l’enregistrement log suivant :
{
"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"
}
Cet enregistrement log contient plusieurs données sensibles. Idéalement, vous aimeriez que votre log ressemble à ceci :
{
"message":"The credit card number 9aa9bc1528859aee1b1df75795f1ebd54beb2f0d26c8a1d4580a71a07189cdd5 belongs to user user@email.com (born on XXXXXXXXXX) with SSN 30e6897f76dc102e32ee1d781c43417d259e586eac15c963d75ab8b5187769da",
Voici le processus de base que vous utiliseriez pour masquer les données sensibles dans cet exemple.
Vous décidez que vous souhaitez appliquer les actions obfuscation suivantes à tous les logs provenant de ce service :
HASH le numéro de carte de crédit présent dans l'attribut message et creditCardNumber .
MASK la date de naissance présente dans l'attribut message .
HASH le numéro de sécurité sociale présent dans les attributs message et ssn .
La première chose que vous devez faire est de définir une expression d'obfuscation qui vous permettra de capturer ces informations sensibles.
Conseil
Les exemples ci-dessous montrent des expressions régulières que vous utiliseriez directement dans l'interface utilisateur. Plus loin dans ce document, nous discutons de la manière dont vous pouvez utiliser les versions échappées de ces expressions régulières pour NerdGraph.
expression d'obfuscation
Définition
Numéro de Carte de Crédit
Nous devons capturer 4 groupes de 4 chiffres séparés par des tirets :
Nous devons capturer 3 groupes de 3, 2 et 4 chiffres séparés par des tirets :
{
"name":"Social Security Number",
"regex":"(d{3}-d{2}-d{4})"
}
Date de naissance (loginService spécifique)
Dans cet exemple, la date de naissance fait partie du service de connexion. Nous définissons la partie à obscurcir en fonction des informations de date dans les mots environnants "(born on 01/02/2003)":
{
"name":"Born date - loginService specific",
"regex":"born on (.*))"
}
Chaque expression d'obfuscation définit comment capturer certaines informations sensibles d'une chaîne (à l'aide d'une expression régulière) et l'associe à un nom convivial afin que vous puissiez facilement l'identifier plus tard.
les expressions d'obfuscation peuvent être réutilisables ; elles sont totalement indépendantes de la manière dont l'attribut log contenant les données sensibles est nommé. Par instance, l’expression de sécurité sociale définie ci-dessus pourrait être appliquée à un attribut log nommé ssn, socialSecurityNumber ou socSecNum.
Vous pouvez également créer des expressions d'obfuscation non réutilisables, comme Born date (loginService specific), qui sont étroitement couplées au format de l'attribut log . Par exemple, vous pouvez utiliser tout ce qui vient après born on et before.
Les groupes de capture d'expressions régulières imbriquées ne sont pas pris en charge
La responsabilité principale de cette fonctionnalité est de remplacer les données sensibles par le hacheur ou le masqueur de manière simple et performante. Si vous souhaitez ou devez regrouper différentes correspondances dans un groupe de capture, n'oubliez pas d'utiliser la syntaxe de groupe sans capture (?:{EXPRESSION}) pour éviter de créer des groupes de capture imbriqués. Par exemple, évitez (([A-Z]{12})|([a-z]{6})) et utilisez plutôt ((?:[A-Z]{12})|((?:[a-z]{6})).
Maintenant que nous avons défini comment capturer nos données sensibles, nous devons spécifier quels logs doivent être obscurcis (ceux du service de connexion) et comment (avec les actions obfuscation que nous avons définies). Pour y parvenir, nous définissons une règle d'obfuscation.
{
"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"
}
]
}
Cette règle contient trois éléments principaux :
composant règle d'obscurcissement
Description
Nom
Le nom permet d’identifier facilement ce que fait la règle. Dans cet exemple, cette règle définit comment masquer les différents attributs du log provenant du service de connexion.
Filtre
Le filtre utilise le format NRQL pour indiquer à notre système comment identifier le log cible provenant du service de connexion. Cet exemple de requête pour le log où serviceName = loginService et department = sales.
Actes
Enfin, cette règle définit l’ensemble des actions obfuscation à appliquer au log correspondant au filtre. Chaque action définit :
Quelle expression d'obfuscation créée précédemment utiliser pour extraire les informations sensibles de chaque ensemble d'attributs
Quelle méthode obfuscation (HASH_SHA256 ou MASK) appliquer pour obscurcir ces données
Notez que lors de la définition de la règle d'obfuscation via NerdGraph, vous devrez spécifier le id de l'expression d'obfuscation au lieu de leurs noms. Pour rendre l'exemple précédent plus lisible, nous avons utilisé l'expression d'obfuscation names à la place.
Comme dernier exemple, imaginons que nous devions également masquer le log provenant d'un autre service nommé « Checkout Service » qui possède un attribut serviceName = checkoutService ainsi qu'un attribut ccn contenant des informations de carte de crédit :
{
"message":"Order completed",
"ccn":"4321-5678-9876-2345",
"department":"sales",
"serviceName":"checkoutService"
}
Pour obscurcir le log de ce service, il suffirait de définir une autre règle d'obfuscation ciblant ce log spécifique, et il suffirait de réutiliser l'expression d'obfuscation Credit card number précédemment créée :
{
"name":"Obfuscate Checkout Service Logs",
"filter":"serviceName = 'checkoutService' AND department = 'sales'",
"actions":[
{
"attributes":["ccn"],
"expression":{"name":"Credit Card Number"},
"method":"HASH_SHA256"
}
]
}
Liste de contrôle : étapes pour masquer le log
Pour obscurcir votre log :
Étudiez la forme de votre log en identifiant les modèles de données sensibles qui y apparaissent. Par exemple:
Est-ce que tous vos logs contiennent des informations sensibles ? Ou pouvez-vous être plus précis (uniquement le log du service A ou de la région B) ?
Quelles informations sensibles contiennent-ils : numéros de carte de crédit, numéros de permis de conduire, cartes d’identité nationales, données biométriques, autres valeurs ?
Créez des expressions d’obfuscation pour identifier comment extraire les données sensibles.
Définir obfuscation des règles pour chaque ensemble de logs :
Définissez comment vous allez les capturer en utilisant NRQL.
Définissez quelles actions d’obfuscation doivent être appliquées à chacun d’eux. Demandez-vous : devrai-je interroger mon log à l’aide de ces informations sensibles plus tard (envisagez d’utiliser HASH), ou dois-je supprimer entièrement ces informations de mon log (envisagez d’utiliser MASK) ?
Conseil
L'interface utilisateur Logs obfuscation inclut un Hashing tool afin que vous puissiez trouver un hacher à partir d'une valeur connue et le copier pour l'utiliser avec d'autres expressions et règles.
Limites du processeur
L'obfuscation a des limites de CPU par minute. Si un compte atteint ces limites de ressources, le log ne sera pas obscurci comme prévu. Pour vérifier les limites de votre processeur, accédez à la page Limits de votre système dans l'interface utilisateur Data management .
Si vous dépassez les limites d' obfuscation par minute du processeur et que le log ne peut pas être obscurci ou haché, l'attribut auquel la règle d'obfuscation a été appliquée sera dropped et remplacé par un texte indiquant pourquoi l'attribut a été abandonné. Par exemple, si la règle d'obfuscation est appliquée au champ message et que la limite de CPU par minute est atteinte, le log résultant ressemblera à ceci :
{
...
"message":"<OBFUSCATION> The account is over its obfuscation per-minute limit, attribute dropped",
...
}
Cela permet d’éviter que des informations personnelles identifiables ou d’autres données sensibles soient ingérées par inadvertance.
De plus, l'erreur « NrIntegrationError » suivante sera enregistrée dans le compte :
{
"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
}
Pour évaluer le bon fonctionnement de vos règles d'obfuscation et voir lesquelles sont ignorées, accédez à Logs Obfuscation > Health. Les règles d'obfuscation sont gourmandes en ressources CPU, ces graphiques peuvent donc vous aider à déterminer quelles règles sont les plus impactées par les limitations de ressources.
expression d'obfuscation
Vous pouvez créer, lire, mettre à jour ou supprimer des expressions d'obfuscation en utilisant l'interface utilisateur de New Relic ou en utilisant NerdGraph, notre explorateur GraphQL .
one.newrelic.com > All capabilities > Logs > Obfuscation:Créez d'abord une ou plusieurs expressions d'obfuscation, puis créez votre règle d'obfuscation.
Utilisez l'une de ces options pour créer une expression d'obfuscation:
Saisissez un nom pour votre nouvelle règle d'obfuscation, ainsi qu'une expressions régulières correspondant aux données sensibles que vous souhaitez capturer. Utilisez la syntaxe RE2.
L'exemple suivant montre une expression d'obfuscation de base qui correspondra aux numéros de carte de crédit :
Using NerdGraph:
Utilisez la mutation logConfigurationsCreateObfuscationExpression sous logConfigurations. Reportez-vous à l’exemple renseigné dans GraphiQL ainsi qu’à la documentation associée dans api.newrelic.com/graphiql.
Important
Vous devez échapper aux expressions régulières lorsque vous les utilisez dans NerdGraph. Par exemple: ((?:(?: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})
Utilisez l'une de ces options pour interroger une expression d'obfuscation:
Sélectionnez l'onglet Expressions pour visualiser toutes les expressions d'obfuscation disponibles et leurs définitions.
Using NerdGraph:
Utilisez le récupérateur obfuscationExpressions sous actor.account.logConfigurations. Reportez-vous à l’exemple renseigné dans GraphiQL ainsi qu’à la documentation associée dans api.newrelic.com/graphiql.
Utilisez l'une de ces options pour mettre à jour une expression d'obfuscation:
Cliquez sur l'icône représentant des points de suspension ... à droite de l'expression d'obfuscation que vous souhaitez modifier, puis cliquez sur Edit.
Modifiez les champs selon vos besoins et cliquez sur Update.
Using NerdGraph:
Utilisez la mutation logConfigurationsUpdateObfuscationExpression sous logConfigurations. Reportez-vous à l’exemple renseigné dans GraphiQL ainsi qu’à la documentation associée dans api.newrelic.com/graphiql.
Important
Vous devez échapper aux expressions régulières lorsque vous les utilisez dans NerdGraph. Par exemple: ((?:(?: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})
Vous n'avez pas besoin de spécifier tous les champs d'une expression d'obfuscation lors de sa mise à jour, uniquement l'id (obligatoire) et les champs que vous souhaitez modifier.
Important
Vous ne pourrez pas supprimer une expression d'obfuscation si elle est actuellement utilisée par une règle d'obfuscation.
Utilisez l'une de ces options pour supprimer une expression d'obfuscation:
Cliquez sur l'icône représentant des points de suspension ... à droite de l'expression d'obfuscation que vous souhaitez supprimer, puis cliquez sur Delete.
Confirmez que vous souhaitez supprimer l’expression en cliquant sur Delete.
Using NerdGraph:
Utilisez la mutation logConfigurationsDeleteObfuscationExpression sous logConfigurations. Reportez-vous à l’exemple renseigné dans GraphiQL ainsi qu’à la documentation associée dans api.newrelic.com/graphiql.
La mutation renverra un instantané de l'expression avant d'être supprimée.
Exemples d'expressions
Ci-dessous, nous avons fourni quelques exemples d'expressions régulières pour masquer certains des types de données sensibles les plus courants. L'expression d'obfuscation doit être créée pour chaque compte New Relic où ces expressions seront utilisées.
Conseil
Les exemples suivants sont des expressions régulières que vous pouvez utiliser dans l'interface utilisateur. Pour les utiliser dans GraphQL, vous devez les échapper comme indiqué dans cet exemple.
Vous pouvez créer, lire, mettre à jour ou supprimer des règles d'obfuscation en utilisant l'interface utilisateur de New Relic ou en utilisant NerdGraph, notre explorateur GraphQL .
Utilisez l'une de ces options pour créer une règle d'obfuscation:
Entrez un nom pour votre nouvelle règle d'obfuscation, ainsi qu'un critère de correspondance (au format NRQL ) pour capturer l'ensemble cible de logs que vous souhaitez obscurcir.
Ajoutez un nouveau actions (le premier est ajouté automatiquement) pour spécifier l'expression d'obfuscation (regex) pour capturer chaque ensemble d'attributs, ainsi que s'il faut les MASK ou HASH.
Plusieurs attributs peuvent être spécifiés séparés par des virgules.
MASK remplacera tous les caractères correspondants par Xes. Si vous utilisez MASK, vous ne pourrez pas interroger une valeur obscurcie particulière ultérieurement.
HASH remplacera les données sensibles par la valeur Hacher SHA-256. Si vous utilisez HASH, vous pourrez les interroger à l'aide de notre outil de hachage, à condition de connaître sa valeur en clair.
Votre règle devrait ressembler à ceci :
Cliquez sur Create rule pour créer et activer votre règle d'obfuscation.
Using NerdGraph:
Utilisez la mutation logConfigurationsCreateObfuscationRule sous logConfigurations. Reportez-vous à l’exemple renseigné dans GraphiQL ainsi qu’à la documentation associée dans api.newrelic.com/graphiql.
Important
Vous devez spécifier l'obfuscation expressionId afin de la lier à une action d'obfuscation donnée. Pour récupérer cet identifiant, vous pouvez interroger le obfuscationRules.
Utilisez l'une de ces options pour interroger une règle d'obfuscation:
Sélectionnez l'onglet Rules (par défaut) pour afficher toutes les règles d'obfuscation disponibles et leurs définitions.
Using NerdGraph:
Utilisez le récupérateur obfuscationRules sous actor.account.logConfigurations. Reportez-vous à l'exemple renseigné dans GraphiQL ainsi qu'à la documentation associée dans api.newrelic.com/graphiql
Utilisez l'une de ces options pour mettre à jour une règle d'obfuscation:
Cliquez sur l'icône représentant des points de suspension ... à droite de la règle d'obfuscation que vous souhaitez modifier, puis cliquez sur Edit.
Modifiez les champs selon vos besoins et cliquez sur Update rule.
Using NerdGraph:
Utilisez la mutation logConfigurationsUpdateObfuscationRule sous logConfigurations. Reportez-vous à l’exemple renseigné dans GraphiQL ainsi qu’à la documentation associée dans api.newrelic.com/graphiql.
Important
Vous devez spécifier l'obfuscation expressionId afin de la lier à une action d'obfuscation donnée. Pour récupérer cet identifiant, vous pouvez utiliser le obfuscationRules, comme décrit dans [query the obfuscationRules]](#rules-read).
Vous n'avez pas besoin de spécifier tous les champs d'une règle d'obfuscation lors de sa mise à jour, uniquement les id (obligatoire) et les champs que vous souhaitez modifier. Voici un exemple pour mettre à jour uniquement le nom.
Utilisez l'une de ces options pour supprimer une règle d'obfuscation:
Cliquez sur l'icône représentant des points de suspension ... à droite de la règle d'obfuscation que vous souhaitez supprimer, puis cliquez sur Delete.
Confirmez que vous souhaitez supprimer l’expression en cliquant sur Delete.
Using NerdGraph:
Utilisez la mutation logConfigurationsDeleteObfuscationRule sous logConfigurations. Reportez-vous à l’exemple renseigné dans GraphiQL ainsi qu’à la documentation associée dans api.newrelic.com/graphiql.
La mutation renverra un instantané de la règle avant d'être supprimée.