Capítulo 17. Criptografia das Senhas de Fonte de Dados
As conexões do banco de dados para a Plataforma do Aplicativo do JBoss Enterprise estão definidas nos arquivos de fonte de dados
*-ds.xml. Estes detalhes de conexão do banco de dados inclui senhas de texto limpo. Você pode aumentar a segurança de seu servidor pela substituição de senhas de texto limpo nos arquivos de fonte de dados com as senhas criptografadas.
Este capítulo apresenta dois métodos diferentes para senhas de fonte de dados criptografados.
A Identidade Protegida usando o módulo
SecureIdentityLoginModule está descrita na Seção 17.1, “Identidade com Proteção”.
A Identidade Configurada com a Senha baseada na Criptografia usando o módulo
JaasSecurityDomainIdentityLoginModule, está descrita na Seção 17.1, “Identidade com Proteção”.
17.1. Identidade com Proteção
A classe
org.jboss.resource.security.SecureIdentityLoginModule pode ser usada para ambas as senhas do banco de dados criptografadas e para fornecer uma versão descriptografada da senha quando a configuração da fonte de dados for solicitada pelo servidor. O SecureIdentityLoginModule usa uma senha de código rígido paras criptografar/descriptografar a senha de fonte de dados.
Procedimento 17.1. Visão Geral: Uso do SecureIdentityLoginModule para criptografar uma senha de fonte de dados
- Encripte a senha de fonte de dados.
- Crie uma política de autenticação com a senha criptografada.
- Configure a fonte de dados para uso da política de autenticação do aplicativo.
17.1.1. Criptografia da senha de fonte de dados
A senha de fonte de dados é criptografada usando o método principal
SecureIdentityLoginModule passando uma mensagem de texto não-criptografado. O SecureIdentityLoginModule é fornecido pelo jbosssx.jar.
Procedimento 17.2. Criptografia de uma senha de fonte de dados - versões de Plataforma 5.0 e 5.0.1
Este procedimento criptografa uma senha de fonte de dados nas versões da Plataforma do Aplicativo JBoss Enterprise 5.0 e 5.0.1.
- Altere o diretório
jboss-as. - Invoque o SecureIdentityLoginModule pelo seguinte comando, fornecendo uma senha de texto não-criptografada como PASSWORD.Comando no Linux:
java -cp client/jboss-logging-spi.jar:common/lib/jbosssx.jar \ org.jboss.resource.security.SecureIdentityLoginModule PASSWORD
Comando no Windows:java -cp client\jboss-logging-spi.jar;common\lib\jbosssx.jar \ org.jboss.resource.security.SecureIdentityLoginModule PASSWORD
Resultado:O comando retornará uma senha criptografada.
Procedimento 17.3. Criptografia de uma senha de fonte de dados - versão da Plataforma 5.1 e mais recentes
Este procedimento criptografa a senha de fonte de dados para a Plataforma do Aplicativo JBoss Enterprise versão 5.1 e mais recentes.
- Altere o diretório
jboss-as. - Comando no Linux:
java -cp client/jboss-logging-spi.jar:lib/jbosssx.jar \ org.jboss.resource.security.SecureIdentityLoginModule PASSWORD
Comando no Windows:java -cp client\jboss-logging-spi.jar;lib\jbosssx.jar \ org.jboss.resource.security.SecureIdentityLoginModule PASSWORD
Resultado:O comando retornará uma senha criptografada.
17.1.2. Criação de uma política de autenticação do aplicativo com a senha criptografada
Cada perfil do Servidor do Aplicativo possui um arquivo
conf/login-config.xml, onde as políticas de autenticação do aplicativo são definidas para aquele perfil. Adicione um novo elemento <application-policy> ao elemento <policy>, com o objetivo de criar uma política de autenticação para sua senha criptografada.
O Exemplo 17.1, “Amostra da política de autenticação do aplicativo com uma senha de fonte de dados criptografada” é um fragmento de um arquivo
login-config.xml apresentado na política de autenticação do nome "EncryptDBPassword".
Exemplo 17.1. Amostra da política de autenticação do aplicativo com uma senha de fonte de dados criptografada
<policy>
...
<!-- Example usage of the SecureIdentityLoginModule -->
<application-policy name="EncryptDBPassword">
<authentication>
<login-module code="org.jboss.resource.security.SecureIdentityLoginModule" flag="required">
<module-option name="username">admin</module-option>
<module-option name="password">5dfc52b51bd35553df8592078de921bc</module-option>
<module-option name="managedConnectionFactoryName">jboss.jca:name=PostgresDS,service=LocalTxCM</module-option>
</login-module>
</authentication>
</application-policy>
</policy>
Opções do módulo SecureIdentityLoginModule
- nome do usuário
- Especifica o nome do usuário para uso quando estabelecendo uma conexão ao banco de dados.
- senha
- Fornece uma senha criptografada gerada na Seção 17.1.1, “Criptografia da senha de fonte de dados”.
- managedConnectionFactoryName
- jboss.jca:name
- Nomeia uma Interface do Diretório e Nomeação do Java - Java Naming and Directory Interface (JNDI) para esta fonte de dados.
- jboss.jca:service
- Especifica o tipo de transação.
Tipos de Transação
- NoTxCM
- Nenhum suporte de transação
- LocalTxCM
- Suporte de transação de recurso único
- TxCM
- Suporte de transação distribuída ou recurso único
- XATxCM
- Suporte de Transação Distribuída
17.1.3. Configura a fonte de dados para uso da política de autenticação do aplicativo.
A política do aplicativo é vinculada ao JNDI sob o nome da política do aplicativo, no período de rodagem, e é disponibilizada como um domínio de segurança.
A fonte de dados é configurada no arquivo
*-ds.xml. Remova os elementos <user-name> e <password> deste arquivo e substitua-os por um elemento <security-domain>. Este elemento conterá o nome da política de autenticação do aplicativo segundo a Seção 17.1.2, “Criação de uma política de autenticação do aplicativo com a senha criptografada”.
O uso do nome da amostra a partir da Seção 17.1.2, “Criação de uma política de autenticação do aplicativo com a senha criptografada”, "EncryptDBPassword", resultará num arquivo de fonte de dados que parece-se com o seguinte Exemplo 17.2, “Amostra do arquivo da fonte de dados usando a identidade protegida”.
Exemplo 17.2. Amostra do arquivo da fonte de dados usando a identidade protegida
<?xml version="1.0" encoding="UTF-8"?> <datasources> <local-tx-datasource> <jndi-name>PostgresDS</jndi-name> <connection-url>jdbc:postgresql://127.0.0.1:5432/test?protocolVersion=2</connection-url> <driver-class>org.postgresql.Driver</driver-class> <min-pool-size>1</min-pool-size> <max-pool-size>20</max-pool-size> <!-- REPLACED WITH security-domain BELOW <user-name>admin</user-name> <password>password</password> --> <security-domain>EncryptDBPassword</security-domain> <metadata> <type-mapping>PostgreSQL 8.0</type-mapping> </metadata> </local-tx-datasource> </datasources>