Sensible Daten ausblenden

Durch Verwendung des Debuggers besteht die Gefahr, dass vertrauliche Daten in der Anwendung wie E-Mail-Adressen, Kontonummern usw. bekannt werden. Sie können Blocklisten und Ausnahmen von Ausnahmen konfigurieren, um den Debugger-Agent auf diese vertraulichen Daten zu hindern.

Ausgeblendete Daten werden vom Debugger als "vom Administrator blockiert" gemeldet, wie im folgenden Screenshot gezeigt:

Debugger meldet versteckten Text als "vom Administrator blockiert"

Empfehlungen

Beachten Sie beim Konfigurieren oder Aktualisieren Ihrer Blocklist-Dateien die folgenden Empfehlungen:

  • Verwenden Sie die Java-Agent-Version 2.27 oder höher. Informationen zur Installation finden Sie unter Cloud Debugger für Java einrichten.

  • Beachten Sie, dass die Konfigurationsdatei und die Keywords nach blocklist aktualisiert wurden. Aktualisieren Sie Ihre Dateien entsprechend.

Datei konfigurieren

Die folgende Konfiguration kann als Ausgangspunkt verwendet werden und bietet eine Inline-Dokumentation:

# 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

Beispiele

Durch die folgende Beispielkonfiguration werden Daten innerhalb einer einzelnen Klasse für den Debugger ausgeblendet:

blocklist:
- "com.sales.Ticket"

Auch Pakete können durch Angabe des Paketnamens ausgeblendet werden:

blocklist:
- "com.sales"

In einigen Fällen kann es nützlich sein, Ausnahmen von blocklist-Regeln zu erstellen. Dies kann mit einer blocklist_exception erfolgen:

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

Darüber hinaus ist es möglich, ein inverses Muster anzugeben, bei dem Klassen, die keinem Muster entsprechen, blockiert werden.

blocklist:
- "!com.sales"

Speicherort der Konfigurationsdatei

Die Konfigurationsdatei muss debugger-blocklist.yaml heißen und kann an einer beliebigen Stelle im Klassenpfad abgelegt werden. Das Stammverzeichnis der .jar-Datei eignet sich gut dafür. In den folgenden Abschnitten wird erläutert, wie dabei vorgegangen wird.

Führen Sie den Befehl jar aus:

Um eine Konfigurationsdatei in eine .jar-Datei einzufügen oder zu aktualisieren, kann der jar-Befehl verwendet werden. Mit folgendem Befehl fügen Sie die Konfigurationsdatei debugger-blocklist.yaml dem Archiv TicketTracker.jar hinzu:

jar uvf TicketTracker.jar debugger-blocklist.yaml

Mit Ant

Verwenden Sie die integrierte jar-Aufgabe von Ant, um die Konfigurationsdatei mithilfe des Ant-Build-Systems in eine JAR-Datei einzufügen. Das folgende distribute-Ziel verwendet beispielsweise die jar-Aufgabe, um die Konfigurationsdatei debugger-blocklist.yaml dem Archiv TicketTracker.jar hinzuzufügen.

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

Maven verwenden

Um die Konfigurationsdatei in ein vom Maven-Build-System verwaltetes Paket einzufügen, legen Sie die Datei debugger-blocklist.yaml im Verzeichnis src/main/resources ab, das Sie möglicherweise zuerst erstellen müssen. Erstellen Sie das Projekt und prüfen Sie, ob debugger-blocklist.yaml nach target/classes kopiert wurde.