O uso do depurador pode expor dados confidenciais dentro do aplicativo, como endereços de e-mail, números de conta etc. É possível configurar listas de bloqueio e exceções à lista de bloqueio para impedir que o agente do depurador acesse esses dados confidenciais.
Os dados ocultos são relatados pelo depurador como "bloqueados pelo administrador", conforme mostrado na seguinte captura de tela:
Recomendações
Ao configurar ou atualizar seus arquivos de lista de bloqueio, observe as seguintes recomendações:
Use a versão 2.27 ou mais recente do agente Java. Para informações de instalação, consulte Como configurar o Cloud Debugger para Java.
Observe que as palavras-chave e a nomenclatura do arquivo de configuração foram atualizadas para
blocklist
. Atualize seus arquivos conforme necessário.
Configurar seu arquivo
A seguinte configuração pode ser usada como ponto de partida e fornece documentação interna:
# 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
A configuração de exemplo a seguir oculta dados dentro de uma única classe do depurador:
blocklist:
- "com.sales.Ticket"
Também é possível ocultar pacotes especificando os respectivos nomes:
blocklist:
- "com.sales"
Em alguns casos, pode ser útil criar exceções para as regras blocklist
.
Isso pode ser feito com um blocklist_exception
:
blocklist:
- "com.sales"
blocklist_exception:
- "com.sales.testing"
Finalmente, é possível especificar um padrão inverso, em que as classes que não correspondem a um padrão entram na lista de proibições.
blocklist:
- "!com.sales"
Local do arquivo de configuração
O arquivo de configuração precisa ser nomeado como debugger-blocklist.yaml
e pode ser colocado em qualquer lugar no caminho da classe. Um lugar razoável é a raiz do arquivo .jar
. As seções a seguir descrevem como fazer isso.
Usar o comando jar
Para inserir ou atualizar um arquivo de configuração em um arquivo .jar
, o comando jar
pode ser usado. Por isso, para adicionar o arquivo de configuração debugger-blocklist.yaml
ao arquivo TicketTracker.jar
, use o comando a seguir:
jar uvf TicketTracker.jar debugger-blocklist.yaml
Usar o Ant
Use a tarefa integrada jar
do sistema de compilação Ant para inserir o arquivo de configuração em um arquivo JAR. Por exemplo, a objetivo distribute
a seguir usa a tarefa jar
para adicionar o arquivo de configuração debugger-blocklist.yaml
ao arquivo 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>
Usar o Maven
Para inserir o arquivo de configuração em um pacote gerenciado pelo sistema de compilação Maven, coloque o arquivo debugger-blocklist.yaml
dentro do diretório src/main/resources
. Talvez seja necessário criar esse diretório. Crie o projeto e confirme se debugger-blocklist.yaml
foi copiado para target/classes
.