10.11.5. Store e Recuperação das Sequências Confidenciais Criptografas do Java Keystore

Sumário

A inclusão de senhas e outras sequências confidenciais nos arquivos de configuração em texto plano não está segurado. O JBoss EAP 6 inclui a habilidade de aplicar o store e mascarar essas sequências confidenciais num keystore criptografado e usa valores mascarados nos arquivos de configuração.

Procedimento 10.7. Configuração do Java Keystore

  1. Execute o comando vault.sh.

    Execute o EAP_HOME/bin/vault.sh. Inicie a sessão interativa digitando 0.
  2. Insira o diretório onde os arquivos criptografados serão stored.

    Caso você tenha seguido a Seção 10.11.2, “Criação do Java Keystore para Sequências Confidenciais do Store”, o seu keystore está num diretório chamado vault/ no seu diretório principal. Na maioria das vezes, faz sentido aplicar o store em todas as suas informações criptografadas no mesmo local ao do store da chave. Essa amostra usa o diretório /home/USER/vault/.

    Nota

    Não se esqueça de incluir a barra à direita no nome do diretório. Tanto use / ou \, dependendo de seu sistema operacional.
  3. Insira o caminho ao keystore.

    Insira o caminho completo ao arquivo keystore. Esta amostra usa o /home/USER/vault/vault.keystore.
  4. Insira a senha keystore, o nome do vault, o salt, e a contagem de interação.

    Quando solicitado, insira a senha keystore, o nome do vault, o salt, e a contagem de interação. Um acordo é executado.
  5. Selecione a opção para realizar o store na senha.

    Selecione a opção 0 para realizar o store na senha ou outra sequência confidencial.
  6. Insira o valor.

    Quando solicitado, insira duas vezes o valor. Caso os valores não coincidam, você será solicitado a tentar novamente.
  7. Insira o bloco vault.

    Insira o bloco vault, que é um contêiner para atributos que pertencem ao mesmo recurso. Uma amostra deste nome do atributo seria ds_ExampleDS. Isto fará parte de uma referência à sequência criptografada, na sua fonte de dados ou outra definição do serviço.
  8. Insira o nome do atributo.

    Insira o nome do atributo que você está aplicando o store. Uma amostra do nome do atributo seria password.
    Resultado

    Uma mensagem parecida com a abaixo demonstra que o atributo foi salvo.

    Valor do Atributo para (ds_ExampleDS, password) salvos
  9. Anote a informação sobre a sequência criptografada.

    A mensagem imprime para o resultado default, apresentando o bloco vault, nome do atributo, chave compartilhada e recomendação sobre o uso da sequência em sua configuração. Anote esta informação numa localização segura. O resultado da amostra é exibido abaixo:
    ********************************************
    Vault Block:ds_ExampleDS
    Attribute Name:password
    Configuration should be done as follows:
    VAULT::ds_ExampleDS::password::1
    ********************************************
    
  10. Uso da sequência criptografada na sua configuração.

    Use a sequência a partir da sequência em sua configuração, no local de uma sequência de texto plano. A fonte de dados usando a senha criptografia é apresentada abaixo.
    ...
      <subsystem xmlns="urn:jboss:domain:datasources:1.0">
        <datasources>
          <datasource jndi-name="java:jboss/datasources/ExampleDS" enabled="true" use-java-context="true" pool-name="H2DS">
            <connection-url>jdbc:h2:mem:test;DB_CLOSE_DELAY=-1</connection-url>
            <driver>h2</driver>
            <pool></pool>
            <security>
              <user-name>sa</user-name>
              <password>${VAULT::ds_ExampleDS::password::1}</password>
            </security>
          </datasource>
          <drivers>
             <driver name="h2" module="com.h2database.h2">
                <xa-datasource-class>org.h2.jdbcx.JdbcDataSource</xa-datasource-class>
             </driver>
          </drivers>
        </datasources>
      </subsystem>
    ...
    
    
    Você pode usar a sequência criptografada em qualquer local de seu domain ou arquivo de configuração autônomo onde as expressões são permitidas.

    Nota

    Para verificar se as expressões são permitidas com um subsistema em particular, execute o seguinte comando CLI em relação ao subsistema:
    /host=master/core-service=management/security-realm=TestRealm:read-resource-description(recursive=true)
    A partir de um resultado de execução deste comando, busque pelo valor para o parâmetro expressions-allowed. Caso isto seja verdadeiro, você pode usar expressões com a configuração do subsistema particular.
    Após você aplicar o store na sua sequência do keystore, use a seguinte sintaxe para substituir qualquer sequência de texto limpo por uma criptografada.
    ${VAULT::<replaceable>VAULT_BLOCK</replaceable>::<replaceable>ATTRIBUTE_NAME</replaceable>::<replaceable>ENCRYPTED_VALUE</replaceable>}
    
    Segue abaixo uma amostra do valor de mundo real, onde o bloco vault é ds_ExampleDS e o atributo é password.
    <password>${VAULT::ds_ExampleDS::password::1}</password>