반응형

Spring Jasypt 설정으로 DB 정보 암호화


DB 정보 암호화 설정 4단계

1. Spring 설정 xml 파일에 설정 구문 추가

2. 프로퍼티스(properties) 해당 DB 정보 추가

3. Maven pom 파일에 <dependency> 구문 추가

4. Spring 설정중 dataSource 값 properties 값으로 처리 추가


1. Spring 설정 xml 파일에 설정 구문 추가

<bean id="environmentVariablesConfiguration" class="org.jasypt.encryption.pbe.config.EnvironmentStringPBEConfig">  

        <property name="algorithm" value="PBEWithMD5AndDES" />  

        <property name="password" value="BRACE_PASS" />

</bean>

<bean id="configurationEncryptor" class="org.jasypt.encryption.pbe.StandardPBEStringEncryptor">  

        <property name="config" ref="environmentVariablesConfiguration" />  

</bean>  

<bean id="propertyConfigurer" class="org.jasypt.spring3.properties.EncryptablePropertyPlaceholderConfigurer">  

        <constructor-arg ref="configurationEncryptor" />  

        <property name="locations">  

            <list>  

                <value>[파일위치]/dbinfo.properties</value>

<value>[파일위치]/db2info.properties</value>

            </list>  

        </property>  

</bean>

 스프링에 설정 파일 servlet-context.xml 파일등에 위와같이 설정 구문을 추가 하면 됩니다.

<property name="password" value="BRACE_PASS" /> 부분에 value 값은 암호화 키를 설정한 것이다.

<property name="algorithm" value="PBEWithMD5AndDES" />  알고리즘은 DES로 할것임을 알 수 있다.

일반적으로 보통 패스워드는 단방향 암호화를 사용합니다. 하지만 위에 설정된 MD5는 양방향 암복호화가 가능 합니다.

복호화시에는 위에 설정된 키값을 이용해서 확인이 가능합니다.


2. 프로퍼티 DB 정보 설정

1번 설정 정보있는 <value>[파일위치]/dbinfo.properties</value>

위 설정된 위치에 dbinfo.properties 파일을 생성하고 UTF-8 방식으로 파일을 저장합니다.

프로퍼티 내용은 "key = value"와 같은 양식으로 작성합니다.

예를 들어 설정한 값은 아래와 같습니다.

db.driver = org.mariadb.jdbc.Driver (드라이버)

db.url = jdbc:mariadb://192.168.0.100:3306/testdb (접근주소)

db.username = testuser (접근계정)

db.password = ENC(Yl2wdgxnrY9C%4ddQzDzjCMXXdw/lHUNm)

password 값 ENC() 안에 있는 값을 생성 또는 확인하기 위해서는 

http://www.jasypt.org/download.html 사이트에 들어가서 다운로드받은 뒤 확인 할 수 있는데

최신 버전은 1.9.3 버전으로 2019.05.25로 갱신된것 같습니다.

DOWNLOAD JASYPT (from GitHub) 를 클릭하여 GitHub에서 다운로드 받을 수 있습니다.

콘솔에서 암호화 값을 확인하려면 jasypt-dist 를 확인하시면 됩니다.

GitHub에서 프로젝트를 다운받아 설정하는데 어려움이 있는 분들을 위해서 압축된 파일을 같이 첨부합니다.

jasypt-1.9.2-dist.zip

해당 파일을 다운로드 받아 압축해제 하시고 사용하면 됩니다.

cmd 창에서 압축해제한 폴더로 이동하여 윈도우에서 bat 파일을 실행하면 됩니다. 

명령어는 아래쪽에 정리되어 있습니다. 


3. Maven pom 파일에 <dependency> 구문 추가

GitHub 주소(https://github.com/jasypt/jasypt) 페이지로 들어 가보면 알수 있지만

다양한 프레임워크에서 사용이 가능합니다. 

그중 Spring3으로 설정하는 부분을 예로 들겠습니다.

<dependency>  

    <groupId>org.jasypt</groupId>  

    <artifactId>jasypt-spring3</artifactId>  

    <version>1.9.3</version>  

</dependency>

POM.xml 파일에 추가하면 됩니다.


4. Spring 설정중 dataSource 값 properties 값으로 처리 추가

Spring DB dataSource 설정 부분에 아래와 같이 설정 합니다.

servlet-context.xml 파일등에 같이 설정 할 수도 있습니다.

위 1번에서 선언한 프로퍼티 파일에서 선언된 값을 ${} 방식으로 호출하여 사용합니다.

<bean id="dataSource" class="org.springframework.jdbc.datasource.SimpleDriverDataSource">

<property name="driverClass" value="${db.driver}" />

<property name="url" value="${db.url}" />

<property name="username" value="${db.username}" />

<property name="password" value="${db.password}" />

</bean>


dist 에 있는 sh파일 기능및 명령어 간편정리

listAlgorithms : 사용가능한 암호화 알고리즘 리스트를 보여줍니다.

    DIGET, PBE 2가지 리스트로 알고리즘이 구분되어 확인 할 수 있습니다.

[실행]

C:\>listAlgorithms

digest : 입력값(input)과 알고리즘(algorithm)을 변수에 값을 입력하여 암호화

         DIGET 알고리즘만 가능합니다.

[실행]

C:\>digest input="test123" algorithm="MD5"

encrypt : 입력값(input),키값(password),알고리즘(algorithm) 변수에 값을 입력하여 암호화

  PBE 알고리즘만 가능합니다.

  password는 <property name="password" value="BRACE_PASS" /> 이유가

  설정에서 password 설정부분이 키값이 되는 이유입니다.

[실행]

C:\>encrypt input="test123" password="BRACE_PASS" algorithm="PBEWithMD5AndDES"

decrypt : 입력값은 암호화 된값으로 받아 값을 디코딩하여 확인 할 수 있습니다.

  encrypt와 동일한 방법으로 명령어만 decrypt를 사용합니다.

[실행]

C:\>decrypt input="Yl2wdgnrY9C+4dn" password="BRACE_PASS" algorithm="PBEWithMD5AndDES"


반응형

+ Recent posts