Oculta datos sensibles

El uso del depurador puede exponer datos sensibles dentro de la aplicación, como direcciones de correo electrónico, números de cuenta, etcétera. El agente del depurador puede bloquear estos datos sensibles con un archivo de configuración simple.

Ejemplos

La siguiente configuración de ejemplo oculta los datos al depurador dentro de una sola clase:

blacklist:
- "com.sales.Ticket"

También es posible ocultar paquetes si se especifica el nombre del paquete:

blacklist:
- "com.sales"

En algunos casos, puede ser útil crear excepciones a las reglas de blacklist. Esto se puede hacer con una blacklist_exception:

blacklist:
- "com.sales"
blacklist_exception:
- "com.sales.testing"

Por último, es posible especificar un patrón inverso, en el que las clases que no coinciden con un patrón se envían a la lista negra.

blacklist:
- "!com.sales"

El depurador informa sobre los datos ocultos como “blocked by admin” (bloqueados por el administrador), como se muestra en la siguiente captura de pantalla:

Debugger informa que el texto oculto está “bloqueado por el administrador”

Archivo de configuración

La siguiente configuración se puede usar como punto de partida y proporciona documentación integrada:

# Cloud Debugger Blacklist Configuration File
#
# == Format ==
#
#   This configuration file accepts the following keywords:
#
#    - blacklist
#    - blacklist_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 `blacklist` | Matches `blacklist_exception` | Data is |
#   |---------------------|-------------------------------|---------|
#   | no                  | no                            | shown   |
#   | no                  | yes                           | shown   |
#   | yes                 | no                            | hidden  |
#   | yes                 | yes                           | shown   |
#
#   Patterns listed under "blacklist" and "blacklist_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_blacklist_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_blacklist_checker.py debugger-blacklist.yaml
#
#   You can also use the tool to check if symbols will be blacklisted
#
#     echo com.java.Integer | \
#       debugger_blacklist_checker.py debugger-blacklist.yaml --check

# Uncomment The line below to add blacklists
#blacklist:
#  - "java.security"  # Example package

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

Dónde ubicar el archivo de configuración

El archivo de configuración debe llamarse debugger-blacklist.yaml y puede colocarse en cualquier lugar de la ruta de la clase. Un lugar razonable es en la raíz del archivo .jar. En las siguientes secciones, se analiza cómo lograr esto.

Usa el comando de jar

Para insertar o actualizar un archivo de configuración en un archivo .jar, se puede usar el comando de jar. Para agregar el archivo de configuración debugger-blacklist.yaml al archivo TicketTracker.jar, usa el comando siguiente:

jar uvf TicketTracker.jar debugger-blacklist.yaml

Usa Ant

Para insertar el archivo de configuración en un JAR con el sistema de compilación de Ant, usa la tarea integrada jar de Ant. Por ejemplo, el destino siguiente de distribute usa la tarea jar con el fin de agregar el archivo de configuración debugger-blacklist.yaml al archivo TicketTracker.jar.

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

Con Maven

Para insertar el archivo de configuración en un paquete administrado por el sistema de compilación de Maven, coloca el archivo debugger-blacklist.yaml dentro del directorio src/main/resources, que puedes necesitar crear. Compila el proyecto y confirma que debugger-blacklist.yaml se copió en target/classes.