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 blocage 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 :
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 obtenir des informations sur l'installation, consultez la page Configurer Cloud Debugger pour Java.
Notez que le nom du fichier de configuration et les mots clés ont été mis à jour dans
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
Examples
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 inscrites sur la liste de blocage.
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
.