Spring Boot 프로젝트에서 Jasypt를 사용하여 설정 파일의 민감 정보를 암호화하는 방법을 알아봅니다.
주의: 이 키는 복잡하게 설정해야 하며, 소스 코드나 설정 파일에 노출되지 않도록 주의하세요.
위 코드를 실행하면 암호화된 값들이 콘솔에 출력됩니다.
예시 출력:
배경
데이터베이스 연결 정보와 같은 민감한 데이터를 설정 파일에 평문으로 저장하면 보안 위험이 발생할 수 있습니다. 이를 해결하기 위해 Jasypt 라이브러리를 사용하여 이러한 정보를 암호화할 수 있습니다. 아래에서는 Spring Boot 프로젝트에서 Jasypt를 설정하고 사용하는 단계를 설명합니다.Jasypt 사용 방법
1. 의존성 추가
pom.xml 파일에 다음 의존성을 추가합니다.
<dependency>
<groupId>com.github.ulisesbocchio</groupId>
<artifactId>jasypt-spring-boot-starter</artifactId>
<version>3.0.3</version>
</dependency>
2. 암호화 키 설정
application.properties 파일에 임시 암호화 키를 설정합니다. 이후 암호화 작업이 완료되면 해당 키는 삭제해야 합니다.
# 암호화에 사용될 키
jasypt.encryptor.password=Zxq98sdfgQwErtYUioPmNbvXc1234567890
3. 암호화된 문자열 생성
다음은 암호화된 문자열을 생성하는 예제 코드입니다.
import org.jasypt.encryption.StringEncryptor;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
@SpringBootTest
public class SecurityTest {
@Autowired
private StringEncryptor encryptor;
@Test
public void generateEncryptedStrings() {
System.out.println("암호화된 URL: " + encryptor.encrypt("데이터베이스 연결 URL"));
System.out.println("암호화된 사용자명: " + encryptor.encrypt("사용자 이름"));
System.out.println("암호화된 비밀번호: " + encryptor.encrypt("비밀번호"));
}
}
암호화된 URL: aBcDeFgHiJkLmNoPqRsTuVwXyZ1234567890
암호화된 사용자명: zYxWvUtSrQpOnMlKjIhGfEdCbA987654321
암호화된 비밀번호: qWeRtYuIoPaSdFgHjKlXcVbNm1234567890
4. application.properties 수정
암호화된 값을 설정 파일에 적용합니다. ENC() 함수를 사용하여 암호화된 값을 지정합니다.
spring.datasource.url=ENC(aBcDeFgHiJkLmNoPqRsTuVwXyZ1234567890)
spring.datasource.username=ENC(zYxWvUtSrQpOnMlKjIhGfEdCbA987654321)
spring.datasource.password=ENC(qWeRtYuIoPaSdFgHjKlXcVbNm1234567890)
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.jpa.database-platform=org.hibernate.dialect.MySQL8Dialect
5. 암호화 키 전달
Spring Boot 애플리케이션을 실행할 때 암호화 키를 매개변수로 전달해야 합니다.
mvn spring-boot:run -Dspring-boot.run.arguments=--jasypt.encryptor.password=Zxq98sdfgQwErtYUioPmNbvXc1234567890