[JBoss EAP] 데이터 소스 암호화(Datasource Password Encryption) 설정
본문 바로가기
IT 이야기/JBoss EAP

[JBoss EAP] 데이터 소스 암호화(Datasource Password Encryption) 설정

by 찬찬이 아빠 2021. 6. 18.
반응형

JBoss EAP 데이터소스에 설정된 DB 접속 암호를 암호화 하는 방안을 소개합니다.

 

1. 사용 목적

JBoss EAP 설정에서 DataSource에 설정된 DB접속 암호를 암호화하여 암호 외부 유출을 방지

 

2. 테스트 완료 버전

JBoss EAP 기준 JAVA 버전별 테스트 완료한 내용입니다.

JBoss EAP 버전 JAVA 버전
6.4.x 1.6.0, 1.7.0, 1.8.0
7.2.x, 7.3.x 1.8.0

 

3. 설정 방법

① 데이터베이스 패스워드 인코딩에 필요한 환경

항목 내용
JAVA JAVA 1.8.0 이상(데이터베이스 암호화를 위한 버전)
필요 파일 jboss-logging-3.3.2.Final-redhat-00001.jar
picketbox-5.0.3.Final-redhat-3.jar
picketbox-commons-1.0.0.final-redhat-5.jar
picketbox-infinispan-5.0.3.Final-redhat-3.jar
JBoss EAP
지원 버전
JBoss EAP 6.4 이상
JBoss EAP 7.2 이상

 

② 패스워드 인코딩 실행 스크립트(dbms-encryption.-password.sh)

#!/bin/sh

 

JAVA_HOME=/usr/lib/jvm/jre-1.8.0/bin

JBOSS_HOME=/JBOSS/jboss-eap-7.3

 

picketbox=`find ${JBOSS_HOME}/ -type f -name "picketbox*" | sort | head -n 1`

jboss_logging=`find $}JBOSS_HOME}/ -type f -name "jboss-logging*"`

module_name=org.picketbox.datasource.security.SecureIdentityLoginModule

 

export CLASSPATH=${picketbox}:${jboss_logging}

 

if [ -d $JAVA_HOME ]; then

    read -p "Input Database Password : " dbpassword

    ${JAVA_HOME}/java -cp $CLASSPATH ${module_name} ${dbpassword}

else

    echo "JAVA 1.8 is not installed. Please install and try again."

fi

 

 

③ 패스워드 암호화 실행 스크립트 실행

[jboss@was1]$ ./dbms-encryption-password.sh
Input Database Password : 데이터베이스 암호 입력
Encoded password: 2d6219b35e931895a1f65ce06a77a33c
[jboss@was1]$

 

④ JBoss EAP 설정파일(standalone-ha.xml)에 Datasource 암호화 설정

Datasource 암호화 설정을 위해 security domain 설정을 추가해야 합니다.

[jboss@was1]$vim $JBOSS_HOME/domains/노드명/configuration/standalone-ha.xml

--- 생략 ---
<subsystem xmlns="urn:jboss:domain:security:2.0">
    <security-domains>
    # 아래 항목 추가
    	<security-domain name="cubrid-password" cache-type="default">
        	<authentication>
            	<login-module code="org.picketbox.datasource.security.SecureIdentityLoginModule" flag="required">
                	<module-option name="username" value="데이터베이스 접속 유저명"/>
                    <module-option name="password" value="암호화된 코드"/>
                    <module-option name="managedConnectionFactoryName" value="jbossjca:service=LocalTxCM,name=cubridDS"/>
                </login-module>
            </authentication>
        </security-domain>
--- 생략 ---

 

 

⑤ Datasource 설정 변경

[jboss@was1]$vim $JBOSS_HOME/domains/노드명/configuration/standalone-ha.xml

--- 생략 ---
<subsystem xmlns="urn:jboss:domain:datasources:5.0">
	<datasources>
    	<datasource jndi-name="java:jboss/cubridDS" pool-name="cubridDS" enabled="true" use-ccm="false">
        	<connection-url>jdbc:cubrid:호스트명:33000:DB명:::?charset=utf-8</connection-url>
            <driver-class>cubrid.jdbc.driver.CUBRIDDriver</driver-class>
            <driver>cubrid</driver>
            <pool>
            	<min-pool-size>5</min-pool-size>
                <max-pool-size>50</max-pool-size>
                <prefill>false</prefill>
                <use-strict-min>true</use-strict-min>
            </pool>
            <security>
            	<user-name>데이터베이스 접속 유저명</user-name>    <- 삭제
                <password>데이터베이스 접속 암호</password>    <- 삭제
                <security-domain>cubrid-password</security-domain>    <- 추가
            </security>
--- 생략 ---
반응형

댓글