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. Puedes configurar listas de bloqueo y excepciones de listas de bloqueo para bloquear el acceso del agente del depurador a estos datos sensibles.

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”

Recomendaciones

Cuando configures o actualices tus archivos de la lista de bloques, ten en cuenta las siguientes recomendaciones:

  • Usa la versión 2.27 del agente de Java o una posterior. A fin de obtener información sobre la instalación, consulta Configura el Depurador de Cloud para Java.

  • Ten en cuenta que el nombre del archivo de configuración y las palabras clave se actualizaron a blocklist. Actualice sus archivos según corresponda.

Cómo configurar tu archivo

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

# 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

Ejemplos

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

blocklist:
- "com.sales.Ticket"

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

blocklist:
- "com.sales"

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

blocklist:
- "com.sales"
blocklist_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 enumeran en la lista.

blocklist:
- "!com.sales"

Ubicación del archivo de configuración

El archivo de configuración debe llamarse debugger-blocklist.yaml y puede colocarse en cualquier lugar de la ruta de la clase. Un lugar razonable es en la raíz del archivo .jar. Las siguientes secciones analizan 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-blocklist.yaml al archivo TicketTracker.jar, usa el comando siguiente:

jar uvf TicketTracker.jar debugger-blocklist.yaml

Usar 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-blocklist.yaml al archivo 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>

Usa Maven

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