Processeur Sensitive Data Scanner

Ce produit n'est pas pris en charge par le site Datadog que vous avez sélectionné. ().
Disponible pour:

Logs

Présentation

Le processeur Sensitive Data Scanner analyse les logs pour détecter et masquer ou hacher des informations sensibles telles que les PII, les PCI et les données sensibles personnalisées. Vous pouvez choisir parmi la bibliothèque de règles prédéfinies de Datadog ou saisir des règles Regex personnalisées pour rechercher des données sensibles.

Vous pouvez configurer le pipeline et le processeur dans le UI, l’API ou Terraform.

Consultez les bonnes pratiques pour optimiser les performances pour obtenir des conseils sur la réduction de l’utilisation des ressources.

Configurez le processeur dans le UI

Pour configurer le processeur :

  1. Définissez un filter query. Consultez Logs Search Syntax pour plus d’informations.
    • Seuls les événements correspondant au filtre sont analysés et traités.
    • Tous les événements, qu’ils correspondent ou non à la requête de filtrage, sont envoyés à l’étape suivante du pipeline.
  2. Cliquez sur Add Scanning Rule.
  3. Sélectionnez l’une des options suivantes:
  1. Dans le menu déroulant, sélectionnez la règle de bibliothèque que vous souhaitez utiliser.
  2. Les mots-clés recommandés sont automatiquement ajoutés en fonction de la règle de bibliothèque sélectionnée. Une fois la règle d’analyse ajoutée, vous pouvez ajouter des mots-clés supplémentaires ou supprimer des mots-clés recommandés.
  3. Dans la section Define rule target and conditions, sélectionnez si vous souhaitez analyser Entire Event, Specific Attributes ou Exclude Attributes dans le menu déroulant.
    • Si vous analysez l’événement entier, vous pouvez éventuellement exclure des attributs spécifiques de l’analyse. Utilisez la notation de chemin (outer_key.inner_key) pour accéder aux clés imbriquées. Pour les attributs spécifiés contenant des données imbriquées, toutes les données imbriquées sont exclues.
    • Si vous analysez des attributs spécifiques, indiquez les attributs que vous souhaitez analyser. Utilisez la notation de chemin (outer_key.inner_key) pour accéder aux clés imbriquées. Pour les attributs spécifiés avec des données imbriquées, toutes les données imbriquées sont analysées.
  4. Pour Define actions on match, sélectionnez l’action que vous souhaitez effectuer pour les informations correspondantes. Remarque : La rédaction, la rédaction partielle et le hachage sont tous des actions irréversibles.
    • Redact : Remplace toutes les valeurs correspondantes par le texte que vous spécifiez dans le champ Replacement text.
    • Partially Redact : Remplace une partie spécifiée de toutes les données correspondantes. Dans la section Redact, spécifiez le nombre de caractères que vous souhaitez masquer et quelle partie des données correspondantes masquer.
    • Hash : Remplace toutes les données correspondantes par un identifiant unique. Les octets UTF-8 de la correspondance sont hachés avec l’empreinte 64 bits de FarmHash.
  5. Facultativement, cliquez sur Add Field pour ajouter des tags que vous souhaitez associer aux événements correspondants.
  6. Ajoutez un nom pour la règle d’analyse.
  7. Facultativement, ajoutez une description pour la règle.
  8. Cliquez sur Save.

Ajoutez des mots-clés supplémentaires

Après avoir ajouté des règles d’analyse depuis la bibliothèque, vous pouvez modifier chaque règle séparément et ajouter des mots-clés supplémentaires au dictionnaire de mots-clés.

  1. Accédez à votre pipeline.
  2. Dans le processeur Sensitive Data Scanner avec la règle que vous souhaitez modifier, cliquez sur Manage Scanning Rules.
  3. Activez Use recommended keywords si vous souhaitez que la règle les utilise. Sinon, ajoutez vos propres mots-clés dans le champ Create keyword dictionary. Vous pouvez également exiger que ces mots-clés se trouvent à un nombre spécifié de caractères d’une correspondance. Par défaut, les mots-clés doivent se trouver dans les 30 caractères précédant une valeur correspondante.
  4. Cliquez sur Update.
  1. Dans la section Define match conditions, spécifiez le motif regex à utiliser pour la correspondance avec les événements dans le champ Define the regex. Consultez Rédaction de règles de parsing Grok efficaces avec des expressions régulières pour plus d’informations. Sensitive Data Scanner prend en charge les expressions régulières compatibles Perl (PCRE), mais les motifs suivants ne sont pas pris en charge :
    • Rétro-références et sous-expressions de capture (lookarounds)
    • Assertions arbitraires de largeur nulle
    • Références de sous-routine et motifs récursifs
    • Motifs conditionnels
    • Verbes de contrôle de retour sur trace (backtracking)
    • La directive \C « single-byte » (qui rompt les séquences UTF-8)
    • La correspondance de nouvelle ligne \R
    • La directive de réinitialisation du début de correspondance \K
    • Appels et code intégré
    • Groupement atomique et quantificateurs possessifs
  2. Saisissez des exemples de données dans le champ Add sample data pour vérifier que votre motif regex est valide.
  3. Pour Create keyword dictionary, ajoutez des mots-clés afin d’affiner la précision de la détection lors de la correspondance avec des conditions regex. Par exemple, si vous recherchez un numéro de carte de crédit Visa à seize chiffres, vous pouvez ajouter des mots-clés tels que visa, credit et card. Vous pouvez également exiger que ces mots-clés se trouvent à un nombre spécifié de caractères d’une correspondance. Par défaut, les mots-clés doivent se trouver dans les 30 caractères précédant une valeur correspondante.
  4. Dans la section Define rule target and conditions, sélectionnez si vous souhaitez analyser Entire Event, Specific Attributes ou Exclude Attributes dans le menu déroulant.
    • Si vous analysez l’événement entier, vous pouvez éventuellement exclure des attributs spécifiques de l’analyse. Utilisez la notation de chemin (outer_key.inner_key) pour accéder aux clés imbriquées. Pour les attributs spécifiés contenant des données imbriquées, toutes les données imbriquées sont exclues.
    • Si vous analysez des attributs spécifiques, indiquez les attributs que vous souhaitez analyser. Utilisez la notation de chemin (outer_key.inner_key) pour accéder aux clés imbriquées. Pour les attributs spécifiés avec des données imbriquées, toutes les données imbriquées sont analysées.
  5. Pour Define actions on match, sélectionnez l’action que vous souhaitez effectuer pour les informations correspondantes. Remarque : La rédaction, la rédaction partielle et le hachage sont tous des actions irréversibles.
    • Redact : Remplace toutes les valeurs correspondantes par le texte que vous spécifiez dans le champ Replacement text.
    • Partially Redact : Remplace une partie spécifiée de toutes les données correspondantes. Dans la section Redact, spécifiez le nombre de caractères que vous souhaitez masquer et quelle partie des données correspondantes masquer.
    • Hash : Remplace toutes les données correspondantes par un identifiant unique. Les octets UTF-8 de la correspondance sont hachés avec l’empreinte 64 bits de FarmHash.
  6. Facultativement, cliquez sur Add Field pour ajouter des tags que vous souhaitez associer aux événements correspondants.
  7. Ajoutez un nom pour la règle d’analyse.
  8. Facultativement, ajoutez une description pour la règle.
  9. Cliquez sur Add Rule.

Supprimez une règle

Pour supprimer une règle dans le Sensitive Data Scanner :

  1. Accédez à Observability Pipelines.
  2. Sélectionnez votre pipeline.
  3. Cliquez sur le processeur Sensitive Data Scanner pour le développer.
  4. Cliquez sur Manage Scanning Rules.
  5. Sélectionnez la règle que vous souhaitez supprimer.
  6. Cliquez sur Delete.

Exemple de notation de chemin

For this log structure example:

{
    "outer_key": {
        "inner_key": "inner_value",
        "a": {
            "double_inner_key": "double_inner_value",
            "b": "b value"
        },
        "c": "c value"
    },
    "d": "d value"
}

Follow these reference rules:

  • Use outer_key.inner_key to reference the key with the value inner_value.
  • Use outer_key.a.double_inner_key to reference the key with the value double_inner_value.

To specify a nested field with a literal . in the attribute key, wrap the key in escaped quotes in the search query. For example, the search query "service.status":disabled matches the event {"service.status": "disabled"}.

Configurez le processeur à l’aide de Terraform

Vous pouvez utiliser la ressource Terraform Datadog Observability Pipeline pour configurer un pipeline avec le processeur Sensitive Data Scanner. Pour ajouter une règle au processeur Sensitive Data Scanner à l’aide de Terraform :

  1. Utilisez la source de données Datadog Sensitive Data Scanner Standard Pattern pour récupérer l’ID de règle de la règle de bibliothèque Sensitive Data Scanner.

    data "datadog_sensitive_data_scanner_standard_pattern" "<RULE_IDENTIFIER>" {
      filter = "<RULE_NAME>"
    }
       

    Remplacez les espaces réservés :

    • <RULE_IDENTIFIER>Remplacez par un nom à utiliser lors de la configuration ultérieure du processeur Sensitive Data Scanner dans la ressource Observability Pipeline.
    • <RULE_NAME>Remplacez par le nom exact de la règle. Consultez Library Rules pour obtenir la liste complète des règles.

    Par exemple, si vous souhaitez utiliser le AWS Access Key ID Scanner, configurez la source de données comme suit :

    data "datadog_sensitive_data_scanner_standard_pattern" "aws_access_key" {
      filter = "AWS Access Key ID Scanner"
    }
       
    Consultez l’exemple de configuration complet sur la façon d’ajouter des sources de données pour plusieurs règles.

  2. Ajoutez un bloc rule dans votre ressource Observability Pipeline pour la règle de bibliothèque.

    ...
      sensitive_data_scanner {
        rule {
          name = "<YOUR_RULE_NAME>"
          tags = []
          on_match {
            redact {
              replace = "***"
            }
          }
          pattern {
            library {
              id                       = data.datadog_sensitive_data_scanner_standard_pattern.<RULE_IDENTIFIER>.id
              use_recommended_keywords = true
            }
          }
          scope {
            all = true
          }
        }
      }
       

    Remplacez les espaces réservés :

    • <YOUR_RULE_NAME> par un nom pour la règle. Ce nom est affiché dans l’UI des Pipelines.
    • <RULE_IDENTIFIER>Remplacez par l’identifiant de la règle que vous avez utilisé dans la source de données à l’étape 1.

    Par exemple, si vous utilisez la source de données AWS Access Key ID Scanner de l’étape 1, configurez le bloc de règle comme suit :

    ...
      sensitive_data_scanner {
        rule {
          name = "Redact AWS Access Key IDs"
          tags = []
          on_match {
            redact {
              replace = "***"
            }
          }
          pattern {
            library {
              id                       = data.datadog_sensitive_data_scanner_standard_pattern.aws_access_key.id
              use_recommended_keywords = true
            }
          }
          scope {
            all = true
          }
        }
      }
       

    Consultez l’exemple de configuration complet sur la façon d’ajouter plusieurs règles.

  3. Répétez les étapes 1 et 2 pour toutes les règles de bibliothèque que vous souhaitez ajouter.

Exemple de configuration complet

Le panneau du processeur Sensitive Data Scanner affichant deux règles d'analyse : Redact AWS Access Key IDs et Redact US SSNs

Si vous souhaitez utiliser le processeur Sensitive Data Scanner pour rechercher des identifiants de clé d’accès AWS et des numéros de sécurité sociale américains, et les masquer en les remplaçant par la chaîne *** :

  1. Utilisez la source de données Datadog Sensitive Data Scanner Standard Pattern pour récupérer les identifiants de règle pour le AWS Access Key ID Scanner et le US Social Security Number Scanner.
  2. Dans le processeur Sensitive Data Scanner de votre ressource Datadog Observability Pipeline, utilisez les règles Sensitive Data Scanner définies dans les sources de données.
data "datadog_sensitive_data_scanner_standard_pattern" "aws_access_key" {
  filter = "AWS Access Key ID Scanner"
}
data "datadog_sensitive_data_scanner_standard_pattern" "us_ssn" {
  filter = "US Social Security Number Scanner"
}

resource "datadog_observability_pipeline" "sensitive_data_pipeline" {
  name = "Sensitive Data Pipeline"

  config {
    source {
      id = "source-0"
      datadog_agent {}
    }

    processor_group {
      display_name = "Processors"
      enabled      = true
      id           = "group-0"
      include      = "*"
      inputs       = ["source-0"]

      processor {
        display_name = "Sensitive Data Scanner"
        enabled      = true
        id           = "processor-sds-0"
        include      = "*"

        sensitive_data_scanner {
          rule {
            name = "Redact AWS Access Key IDs"
            tags = []
            on_match {
              redact {
                replace = "***"
              }
            }
            pattern {
              library {
                id                       = data.datadog_sensitive_data_scanner_standard_pattern.aws_access_key.id
                use_recommended_keywords = true
              }
            }
            scope {
              all = true
            }
          }
          rule {
            name = "Redact US SSNs"
            tags = []
            on_match {
              redact {
                replace = "***"
              }
            }
            pattern {
              library {
                id                       = data.datadog_sensitive_data_scanner_standard_pattern.us_ssn.id
                use_recommended_keywords = true
              }
            }
            scope {
              all = true
            }
          }
        }
      }
    }

    destination {
      id     = "destination-0"
      inputs = ["group-0"]
      datadog_logs {}
    }
  }
}

Bonnes pratiques pour optimiser les performances

Le processeur Sensitive Data Scanner est intensif en termes de CPU. Utilisez les bonnes pratiques suivantes pour optimiser les performances.

Afficher l’utilisation des règles d’analyse avec le dashboard Observability Pipelines Overview

Observability Pipelines inclut un dashboard Observability Pipelines Overview prêt à l’emploi avec une section Données sensibles trouvées par Observability Pipelines. Utilisez les widgets de cette section pour voir quelles règles d’analyse correspondent aux données.

  1. Accédez à Dashboards > Observability Pipelines Overview.
  2. Utilisez les variables de modèle (pipeline_id, host, worker_uuid, component_type, component_kind, component_id) en haut du dashboard pour limiter la vue à un pipeline ou un Worker spécifique.
  3. Utilisez le sélecteur de temps pour définir une plage temporelle plus large.

Utilisez les widgets suivants pour évaluer l’utilisation des règles d’analyse de vos processeurs Sensitive Data Scanner:

  • Logs contenant des données sensibles par règle d’analyse: Liste chaque règle par nom (par exemple, visa_card_scanner_1x16_1x19_digits ou redact_ipv4) avec le nombre de correspondances sur la période sélectionnée. Les règles avec un nombre élevé correspondent activement à des données. Il s’agit du widget principal pour voir quelles règles sont utilisées.
  • Nombre total de logs contenant des données sensibles: Affiche le volume total de données sensibles correspondant à toutes les règles.
  • Logs contenant des données sensibles par pipeline: Affiche les logs correspondants qui contiennent des données sensibles. Vous pouvez limiter les correspondances par pipeline_id, ce qui vous aide à voir si les logs contenant des données sensibles sont trouvés dans tous les pipelines ou uniquement dans des pipelines spécifiques.
  • Logs contenant des données sensibles par host: Ventile les correspondances de données sensibles par host Worker. Utilisez ce widget pour confirmer la couverture sur l’ensemble de votre déploiement.
  • Modèles contenant des informations sensibles et Liste des logs contenant des données sensibles: Affiche les modèles de logs et les exemples d’événements où des données sensibles ont été trouvées.

Après avoir identifié les règles sans correspondance sur une période représentative, confirmez qu’elles ne sont pas nécessaires et supprimez-les. Consultez Supprimer une règle.

Remarque: Une règle avec zéro correspondance signifie que la règle n’a pas trouvé de correspondance dans la période sélectionnée, et non que la règle est invalide.

Activez uniquement les règles dont vous avez besoin

Les règles activées mais non utilisées consomment des ressources inutiles. Vérifiez le processeur Sensitive Data Scanner pour voir combien de correspondances chaque règle a eues au cours des dernières 24 heures.

  1. Accédez à Observability Pipelines.
  2. Sélectionnez votre pipeline.
  3. Cliquez sur le processeur Sensitive Data Scanner pour le développer.
  4. Cliquez sur View Scanning Rules pour ouvrir le panneau latéral et voir Matches in the last 24 hours pour chaque règle.

Consultez Supprimer une règle pour supprimer une règle inutilisée.

Analysez uniquement les événements et les champs qui doivent être analysés pour détecter des données sensibles

Le temps nécessaire au Sensitive Data Scanner pour analyser un événement est proportionnel à la taille de l’événement. Pour optimiser les performances du processeur:

  • Si vous connaissez les types d’événements que vous souhaitez analyser, définissez une requête de processeur qui n’envoie au processeur que les événements souhaités.

  • Réduisez le temps de scan en ciblant des attributs d’événement spécifiques à scanner ou en excluant des attributs d’événement du scan. Consultez l’étape Define rule target and conditions dans Configurer le processeur.

Évaluez et comparez les optimisations de performance

Utilisez la métrique pipelines.component_latency_seconds pour :

  • Comparez les performances du processeur lorsque vous ajoutez une règle
  • Évaluez les performances après avoir effectué des changements d’optimisation, tels que la réduction du nombre de champs analysés et la suppression des règles inutilisées.

Pour afficher la métrique pipelines.component_latency_seconds :

  1. Accédez à Metrics Explorer.
  2. Dans le champ de la métrique, saisissez pipelines.component_latency_seconds.
  3. Dans le champ from, saisissez le tag component_id:<COMPONENT_ID>, où <COMPONENT_ID> est l’ID de votre processeur Sensitive Data Scanner.

Remarque: pipelines.component_latency_seconds est une métrique de distribution, vous devez donc activer les percentiles pour cette métrique. Consultez Activer les requêtes avancées pour obtenir des instructions.

Métriques de santé

Pour les métriques de composants et les métriques de tampon de processeur émises par tous les processeurs, consultez la documentation Métriques d’utilisation des pipelines.

Métriques du Sensitive Data Scanner

  • Utilisez le tag component_id pour filtrer ou regrouper par composants individuels.
  • Le tag component_type est sensitive_data_scanner pour les métriques du processeur Sensitive Data Scanner.
pipelines.sds_rule_matched_total
Description: Le nombre d’événements ayant correspondu à une règle Sensitive Data Scanner. Marqué avec le nom de la règle correspondante.
Type de métrique: count
pipelines.scanned_events
Description: Le nombre d’événements analysés par le moteur Sensitive Data Scanner.
Type de métrique: count
pipelines.scanning.match_count
Description : Le nombre de correspondances trouvées par le Sensitive Data Scanner.
Type de métrique : count
pipelines.scanning.suppressed_match_count
Description : Le nombre de correspondances supprimées par le Sensitive Data Scanner.
Type de métrique : count
pipelines.scanning.duration
Description : Temps réel accumulé, en secondes, passé à analyser les événements. Utilisez cette métrique pour évaluer les performances du processeur et mesurer les optimisations.
Type de métrique : count
pipelines.scanning.cpu_duration
Description : Temps CPU accumulé, en secondes, passé à analyser les événements.
Type de métrique : count
pipelines.scanner.total_count
Description : Le nombre de processeurs Sensitive Data Scanner actuellement en cours d’exécution.
Type de métrique : jauge
pipelines.scanner.total_regexes
Description : Le nombre d’expressions régulières conservées sur tous les Sensitive Data Scanners.
Type de métrique : jauge

Pour aller plus loin