WAS/JBoss

[Tips] Datasource DB 패스워드 암호화

투칼론 2016. 3. 20. 16:28
반응형

JBoss EAP 6에서 지원하는 DataSource 암호화 설정은 2가지 방법이 있다. 여기에서는 첫번째 방법인 Secured Identity 방법만 설명한다.


첫번째) Secured Identity

두번째) Configured Identity with Password Based Encryption (PBE)


1. Secured Identity

아래의 방법은 간단하게 사용되고 있는 방법이며 SecurityIdentityLoginModule을 이용합니다.

1) DataSource 패스워드 암호화

2) 암호화된 패스워드로 애플리케이션 인증 정책 생성

3) 애플리케이션 인증 정책을 사용하도록 DataSource 설정




1) DataSource 패스워드 암호화


$JBOSS_HOME 디렉토리에서 아래 명령어를 실행한다.


 java -cp client/jboss-logging-spi.jar:common/lib/jbosssx.jar \

org.jboss.resource.security.SecureIdentityLoginModule PASSWORD


명령어에서 PASSWORD는 DB 연결 패스워드임.


위의 명령어 결과로 아래와 같이 암호화된 패스워드가 출력된다.


Encoded password: 7e34552e471f78e3




2) 암호화된 패스워드로 애플리케이션 인증 정책 생성


JBoss Application Server는 서버 프로파일은 conf/login-config.xml 파일을 가지고 있다. 이 파일은 애플리케이션 인증 정책을 설정하는 파일이다. 이 파일에 아래와 같이 설정한다.



  <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">7e34552e471f78e3</module-option>

                  <module-option name="managedConnectionFactoryName">jboss.jca:name=PostgresDS,service=LocalTxCM</module-option> 

              </login-module>

          </authentication>

      </application-policy>

  </policy>


username은 DB 연결 user 이고, password는 위에서 생성된 암호화된 패스워드 입력하면 됨.



3) 애플리케이션 인증 정책을 사용하도록 DataSource 설정


DataSource설정은 *-ds.xml 파일에 설정되어 있다. *-ds.xml 파일에서 <user-name>과 <password> 엘리먼트를 제거하고, 대신에 <security-domain> 엘리먼트를 설정한다. <security-domain>은 2)에서 설정한 <application-policy> 이름과 동일하게 설정하면 된다. 여기 예제에서는 "EncryptDBPassword" 이다.


<?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>


[출처] https://access.redhat.com/documentation/en-US/JBoss_Enterprise_Application_Platform/5/html/Security_Guide/Encrypting_Data_Source_Passwords.html


- End -



'WAS > JBoss' 카테고리의 다른 글

[개요] JBoss 로그  (1) 2016.03.29
[Tips] JBoss에서 한글 처리  (0) 2016.03.28
[개요] mod_proxy vs. mod_jk  (0) 2016.03.19
[개요] JBoss 디렉터리 구조  (0) 2016.03.17
[튜닝] JBoss Tuning options  (0) 2015.03.26