SensitiveDataFilter
SpanOutputProcessor qui masque les informations sensibles dans les champs des spans.
Application automatique par défautLien direct vers Application automatique par défaut
Observability ajoute automatiquement un SensitiveDataFilter aux spanOutputProcessors de chaque instance configurée afin que les secrets soient masqués avant d'atteindre les Exporters, tels que l'Exporter cloud de Mastra. Le filtre s'exécute en dernier, après tous les Processors fournis par l'utilisateur, afin que les données sensibles introduites ou révélées par les Processors en amont soient tout de même masquées. Il n'est pas nécessaire de l'ajouter manuellement, sauf si vous souhaitez personnaliser ses options.
Pour désactiver ou personnaliser le filtre appliqué automatiquement, utilisez l'option sensitiveDataFilter de la configuration du registre Observability :
import { Observability } from '@mastra/observability'
new Observability({
configs: {/* ... */},
// disable the auto-applied filter
sensitiveDataFilter: false,
// or customize it
// sensitiveDataFilter: { sensitiveFields: ['mySecret'], redactionStyle: 'partial' },
})
Si une configuration inclut déjà un SensitiveDataFilter dans spanOutputProcessors, le filtre automatique est ignoré afin d'éviter un double masquage. Les valeurs ObservabilityInstance préinstanciées ne sont pas modifiées. Si nécessaire, ajoutez vous-même un SensitiveDataFilter à leurs Processors.
ConstructeurLien direct vers Constructeur
new SensitiveDataFilter(options?: SensitiveDataFilterOptions)
SensitiveDataFilterOptionsLien direct vers sensitivedatafilteroptions
interface SensitiveDataFilterOptions {
/**
* List of sensitive field names to redact.
* Matching is case-insensitive and normalizes separators
* (api-key, api_key, Api Key → apikey).
* Defaults include: password, token, secret, key, apikey, auth,
* authorization, bearer, bearertoken, jwt, credential,
* clientsecret, privatekey, refresh, ssn.
*/
sensitiveFields?: string[]
/**
* The token used for full redaction.
* Default: "[REDACTED]"
*/
redactionToken?: string
/**
* Style of redaction to use:
* - "full": always replace with redactionToken
* - "partial": show 3 characters from the start and end, redact the middle
* Default: "full"
*/
redactionStyle?: RedactionStyle
}
RedactionStyleLien direct vers redactionstyle
type RedactionStyle = 'full' | 'partial'
MéthodesLien direct vers Méthodes
processLien direct vers process
process(span: AnySpan): AnySpan
Traite un span en filtrant les données sensibles dans ses principaux champs : attributes, metadata, input, output et errorInfo.
Renvoie : un nouveau span dans lequel les valeurs sensibles sont masquées.
shutdownLien direct vers shutdown
async shutdown(): Promise<void>
Aucun nettoyage n'est nécessaire pour ce Processor.
PropriétésLien direct vers Propriétés
readonly name = 'sensitive-data-filter';
Champs sensibles par défautLien direct vers Champs sensibles par défaut
Lorsqu'aucun champ personnalisé n'est fourni :
[
'password',
'token',
'secret',
'key',
'apikey',
'auth',
'authorization',
'bearer',
'bearertoken',
'jwt',
'credential',
'clientsecret',
'privatekey',
'refresh',
'ssn',
]
Comportement du traitementLien direct vers Comportement du traitement
Correspondance des champsLien direct vers Correspondance des champs
- Sans tenir compte de la casse :
APIKey,apikeyetApiKeycorrespondent tous - Sans tenir compte des séparateurs :
api-key,api_keyetapiKeysont traités de manière identique - Correspondance exacte : après normalisation, les champs doivent correspondre exactement
tokencorrespond àtoken,TokenetTOKENtokenne correspond ni àpromptTokensni àtokenCount
Styles de masquageLien direct vers Styles de masquage
Masquage complet (par défaut)Lien direct vers Masquage complet (par défaut)
Toutes les valeurs correspondantes sont remplacées par redactionToken.
Masquage partielLien direct vers Masquage partiel
- Affiche les 3 premiers et les 3 derniers caractères
- Les valeurs de 6 caractères ou moins sont entièrement masquées
- Les valeurs qui ne sont pas des chaînes sont converties en chaînes avant le masquage partiel
Gestion des erreursLien direct vers Gestion des erreurs
Si le filtrage d'un champ échoue, celui-ci est remplacé par :
{
error: {
processor: 'sensitive-data-filter'
}
}
Champs traitésLien direct vers Champs traités
Le filtre traite récursivement :
span.attributes- Métadonnées et propriétés du spanspan.metadata- Métadonnées personnaliséesspan.input- Données d'entréespan.output- Données de sortiespan.errorInfo- Informations sur l'erreur
Gère de manière sûre les objets imbriqués, les tableaux et les références circulaires.