Masquer les données sensibles

L'utilisation du débogueur peut exposer des données sensibles dans l'application, telles que des adresses de messagerie, des numéros de compte, etc. Vous pouvez configurer des listes de blocages et des exceptions de liste de blocage pour empêcher l'agent de débogage d'accéder à ces données sensibles.

Le débogueur signale les données masquées à l'aide de la mention "bloqué par l'administrateur", comme vous le montre la capture d'écran ci-dessous :

Le débogueur signale le texte masqué comme "bloqué par l'administrateur"

Recommandations

Lorsque vous configurez ou mettez à jour vos fichiers de liste de blocage, tenez compte des recommandations suivantes:

  • Utilisez l'agent Java version 2.27 ou ultérieure. Pour plus d'informations sur l'installation, consultez la section Configurer Cloud Debugger pour Java.

  • Notez que le nom du fichier de configuration et les mots clés ont été mis à jour vers la version blocklist. Mettez à jour vos fichiers en conséquence.

Configurer votre fichier

La configuration suivante peut être utilisée comme point de départ et fournit une documentation intégrée :

# Cloud Debugger Blocklist Configuration File
#
# == Format ==
#
#   This configuration file accepts the following keywords:
#
#    - blocklist
#    - blocklist_exception
#
#   The debugger uses the following rules to determine if a variable's data
#   should be hidden, using the variable's type as the match criteria.
#
#   | Matches `blocklist` | Matches `blocklist_exception` | Data is |
#   |---------------------|-------------------------------|---------|
#   | no                  | no                            | shown   |
#   | no                  | yes                           | shown   |
#   | yes                 | no                            | hidden  |
#   | yes                 | yes                           | shown   |
#
#   Patterns listed under "blocklist" and "blocklist_exception" have the
#   following format:
#
#   [!]<type>
#
#   - `type` is a type prefix (such as a class or package name). Any
#      nested types will also match the pattern. For example, if you
#      specify a package name, the package and all of it's subtypes will
#      match. Note that glob patterns such as `*` can be used anywhere in
#      the type name.
#   -  By prefixing a pattern with an exclamation point, `!`, the pattern
#      is considered an "inverse match" which evaluates to true for any
#      type that does not match the provided pattern.
#   -  The debugger makes no attempt to verify that specified patterns
#      will actually match anything. If you have a misspelling in your
#      pattern, then there will be no reported errors but the pattern will
#      not work as intended.
#
# == Verification ==
#
#   A verification tool is available and can be downloaded with the
#   following command:
#
#   wget https://storage.googleapis.com/cloud-debugger/compute-java/debian-wheezy/debugger_blocklist_checker.py
#
#   This tool can be used to check the configuration file for syntax errors.
#   It can also be used to experiment with configuration files locally
#   without having to deploy a real application.
#
#   A basic usage example:
#
#       debugger_blocklist_checker.py debugger-blocklist.yaml
#
#   You can also use the tool to check if symbols will be blocklisted
#
#     echo com.java.Integer | \
#       debugger_blocklist_checker.py debugger-blocklist.yaml --check

# Uncomment The line below to add blocklists
#blocklist:
#  - "java.security"  # Example package

# Uncomment The line below to add blocklist exceptions
#blocklist_exception:
#  - "java.security.Timestamp"  # Example class

Exemples

L'exemple de configuration suivant masque les données dans une seule classe du débogueur :

blocklist:
- "com.sales.Ticket"

Il est également possible de masquer des packages en spécifiant leur nom :

blocklist:
- "com.sales"

Dans certains cas, il peut être utile de créer des exceptions aux règles de blocklist. Vous pouvez effectuer cette opération à l'aide de la commande blocklist_exception :

blocklist:
- "com.sales"
blocklist_exception:
- "com.sales.testing"

Enfin, il est possible de définir un schéma inverse, dans lequel les classes qui ne correspondent pas à un certain schéma sont répertoriées.

blocklist:
- "!com.sales"

Emplacement du fichier de configuration

Le fichier de configuration doit être nommé debugger-blocklist.yaml et peut être placé n'importe où dans le chemin de la classe. La racine du fichier .jar, par exemple, constitue un bon emplacement. Les sections suivantes vous expliquent comment procéder.

Utiliser la commande jar

Vous pouvez insérer ou mettre à jour un fichier de configuration dans un fichier .jar à l'aide de la commande jar. Pour ajouter le fichier de configuration debugger-blocklist.yaml à l'archive TicketTracker.jar, exécutez la commande suivante :

jar uvf TicketTracker.jar debugger-blocklist.yaml

Utiliser Ant

Pour insérer le fichier de configuration dans un fichier JAR à l'aide du système de développement Ant, utilisez la tâche intégrée jar. Par exemple, la tâche jar permet à la cible distribute suivante d'ajouter le fichier de configuration debugger-blocklist.yaml à l'archive TicketTracker.jar.

<target name="distribute" depends="compile">
  <jar destfile="${distributionDir}/TicketTracker.jar" >
    <fileset dir="${outputDir}"/>
    <fileset dir="${sourceDir}"/>
    <fileset file="debugger-blocklist.yaml" />
  </jar>
</target>

Utiliser Maven

Pour insérer le fichier de configuration dans un package géré par le système de développement Maven, placez le fichier debugger-blocklist.yaml dans le répertoire src/main/resources, que vous devrez peut-être créer. Générez le projet et confirmez que debugger-blocklist.yaml a bien été copié dans target/classes.