[java] Jasypt를 이용한 자바 애플리케이션에서의 데이터베이스 연결 설정 파일의 암호화 방법

암호화는 데이터의 보안성을 강화하기 위해 매우 중요합니다. 특히 데이터베이스 연결 설정 파일에는 데이터베이스의 접근 정보가 포함되어 있기 때문에, 이를 암호화하는 것은 보안 측면에서 필수적입니다.

Jasypt는 자바 애플리케이션에서 간편하게 암호화를 수행할 수 있는 라이브러리입니다. 이를 사용하여 데이터베이스 연결 설정 파일을 암호화하는 방법에 대해 알아보겠습니다.

Jasypt 라이브러리 의존성 추가하기

먼저, 프로젝트의 의존성 파일에 Jasypt 라이브러리를 추가해야 합니다. Maven을 사용하는 경우, pom.xml 파일에 다음과 같이 의존성을 추가합니다.

<dependency>
    <groupId>org.jasypt</groupId>
    <artifactId>jasypt-spring-boot-starter</artifactId>
    <version>3.0.3</version>
</dependency>

Gradle을 사용하는 경우, build.gradle 파일에 다음과 같이 의존성을 추가합니다.

dependencies {
    implementation 'org.jasypt:jasypt-spring-boot-starter:3.0.3'
}

암호화 적용하기

  1. 데이터베이스 연결 설정 파일에 암호화를 적용하려면, application.properties 파일을 수정해야 합니다.

    # 데이터베이스 접속 정보
    spring.datasource.url=jdbc:mysql://localhost:3306/mydb
    spring.datasource.username=myuser
    spring.datasource.password=ENC(암호화된_패스워드)
    

    위의 예시에서 spring.datasource.password 값을 ENC()로 감싸고, 그 안에 암호화된 패스워드를 넣어줍니다. 이렇게 설정된 값은 자동으로 복호화되어 데이터베이스에 접근할 때 사용됩니다.

  2. 암호화된 패스워드 생성하기 위해, JasyptStringEncrypytor를 이용할 수 있습니다. 예를 들어, 다음과 같이 암호화 메소드를 작성할 수 있습니다.

    import org.jasypt.encryption.StringEncryptor;
    
    @Component
    public class MyStringEncryptor {
    
        private final StringEncryptor encryptor;
    
        public MyStringEncryptor(StringEncryptor encryptor) {
            this.encryptor = encryptor;
        }
    
        public String encrypt(String text) {
            return encryptor.encrypt(text);
        }
    
        public String decrypt(String text) {
            return encryptor.decrypt(text);
        }
    }
    

    이렇게 작성한 암호화 메소드를 사용하여 패스워드를 암호화하고, 암호화된 패스워드를 application.properties 파일에 설정합니다.

암호화된 패스워드 사용하기

이제 코드에서 DataSource를 이용하여 데이터베이스에 연결할 때, 암호화된 패스워드를 자동으로 복호화하여 사용할 수 있습니다.

import javax.sql.DataSource;

@Service
public class MyService {

    private final DataSource dataSource;

    public MyService(DataSource dataSource) {
        this.dataSource = dataSource;
    }

    // ...
}

자바 애플리케이션에서 Jasypt를 이용하여 데이터베이스 연결 설정 파일의 암호화를 수행하는 방법에 대해 알아보았습니다. 암호화된 패스워드를 사용함으로써, 민감한 정보를 안전하게 보호할 수 있게 되는데요. 프로젝트의 보안을 강화하기 위해, 암호화를 적극적으로 적용하는 것이 좋습니다.