メインコンテンツまでスキップ

DB 패스워드 암호화

개요

본 문서는 엔진 및 웹어드민의 DB 커넥션 설정시 입력하는 패스워드를 암호화하는 방법에 대해 설명한다. DB 패스워드 암호화를 위해서는 bxi.tool 설치가 선행되어야 한다. 이는 bxi.tool 가이드를 참고한다.

웹어드민과 엔진 각각 적용할 수 있으며 적용 과정은 모두 공통적으로 ApplicationContext.xml>dataSource 설정, 패스워드 암호화, 패스워드 적용이 이루어진다. 상세 내용에 대해서는 아래에 기술한다.

dataSource 설정

엔진

<bean id="dataSource" class="org.apache.commons.dbcp2.BasicDataSource">에 있는 class를 bxi.common.context.SecureBasicDataSource로 변경한다.

${BXIHOME}/config/ApplicationContext.xml
<bean id="dataSource" class="bxi.common.context.SecureBasicDataSource">
<property name="driverClassName" value="oracle.jdbc.driver.OracleDriver"/>
<property name="url" value="jdbc:oracle:thin:@ip:port:sid"/>
<property name="username" value="user"/>
<property name="password" value="encrypted_password"/>
<property name="validationQuery" value="SELECT 1 FROM DUAL"/>
<property name="testWhileIdle" value="true"/>
<property name="timeBetweenEvictionRunsMillis" value="1800000"/>
</bean>

웹어드민

<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">에 있는 class를 bxi.common.datasource.SecureBasicDataSource로 변경하고 depends-on="securityKeyConfig"를 추가한다.

${BXI_ADMIN_HOME}/jetty9/webapps/[ENGINE_TYPE]/WEB-INF/config/ApplicationContext.xml
<bean id="dataSource" class="bxi.common.datasource.SecureBasicDataSource" depends-on="securityKeyConfig">
<property name="driverClassName" value="oracle.jdbc.driver.OracleDriver"/>
<property name="url" value="jdbc:oracle:thin:@ip:port:sid"/>
<property name="username" value="user"/>
<property name="password" value="encrypted_password"/>
<property name="validationQuery" value="SELECT 1 FROM DUAL"/>
<property name="testWhileIdle" value="true"/>
<property name="timeBetweenEvictionRunsMillis" value="1800000"/>
</bean>

패스워드 암호화

암호화는 bxi.tool이 설치되었다는 가정하에 진행된다. 암복호화시 사용하는 키는 ${BXIHOME}/config/security.key(이하, security.key)를 사용하여 다음과 같이 bxi.tool을 통해 평문 패스워드를 암복호화 한다. security.key는 엔진 설정 폴더(${BXIHOME}/config)에 있는 파일을 기본으로 한다. 별도의 key를 원하는 경우 이는 커스터마이징이 필요하다.

${BXITOOLHOME}/bin/encrypt.sh [평문] [키경로]

패스워드 적용

암호화된 패스워드는 엔진은 ApplicationContext.xml, 웹어드민은 bxi-config-.properties에 위치한 패스워드 필드를 수정해줘야 한다. 해당 부분은 다음과 같다.

엔진

property > name= "password"에 있는 value를 암호화된 패스워드로 변경한다.

${BXIHOME}/config/ApplicationContext.xml
<bean id="dataSource" class="bxi.common.context.SecureBasicDataSource">
<property name="driverClassName" value="oracle.jdbc.driver.OracleDriver"/>
<property name="url" value="jdbc:oracle:thin:@ip:port:sid"/>
<property name="username" value="user"/>
<property name="password" value="encrypted_password"/>
<property name="validationQuery" value="SELECT 1 FROM DUAL"/>
<property name="testWhileIdle" value="true"/>
<property name="timeBetweenEvictionRunsMillis" value="1800000"/>
</bean>

웹어드민

db.password를 암호화된 패스워드로 변경한다.

"${BXI_ADMIN_HOME}/jetty9/webapps/[ENGINE_TYPE]/WEB-INF/config/props/bxi-config-.properties
db.driver=oracle.jdbc.driver.OracleDriver
db.url=jdbc:oracle:thin:@ip:port:sid
db.username=user
db.password=encrypted_password