4장. Spring Boot에서 암호화된 속성 자리 표시자를 사용하는 방법
컨테이너를 보호하는 경우 구성 파일에서 일반 텍스트 암호를 사용하지 않는 것이 좋습니다. 일반 텍스트 암호를 사용하지 않는 한 가지 방법은 가능한 경우 암호화된 속성 자리 표시자를 사용하는 것입니다.
4.1. 값을 암호화하기 위한 마스터 암호 정보
Jasypt를 사용하여 값을 암호화하려면 마스터 암호가 필요합니다. 마스터 암호를 선택하는 것은 귀하 또는 관리자에게 달려 있습니다. Jasypt는 마스터 암호를 설정하는 몇 가지 방법을 제공합니다. Jasypt를 Spring 구성 프레임워크에 통합할 수 있으므로 구성 파일이 로드되면 속성 값이 암호 해독됩니다. 한 가지 방법은 Spring 부팅 구성에서 일반 텍스트로 마스터 암호를 지정하는 것입니다.
Spring은 PropertyPlaceholder
프레임워크를 사용하여 토큰을 속성 파일의 값으로 교체하고, Jasypt의 접근 방식은 PropertyPlaceholderConfigurer
클래스를 암호화된 문자열을 인식하고 암호 해독하는 클래스로 대체합니다.
예제
<bean id="propertyPlaceholderConfigurer" class="org.jasypt.spring.properties.EncryptablePropertyPlaceholderConfigurer"> <constructor-arg ref="configurationEncryptor" /> <property name="location" value="/WEB-INF/application.properties" /> </bean> <bean id="configurationEncryptor" class="org.jasypt.encryption.pbe.StandardPBEStringEncryptor"> <property name="config" ref="environmentVariablesConfiguration" /> </bean> <bean id="environmentVariablesConfiguration" class="org.jasypt.encryption.pbe.config.EnvironmentStringPBEConfig"> <property name="algorithm" value="PBEWithMD5AndDES" /> <property name="password" value="myPassword" /> </bean>
일반 텍스트로 마스터 암호를 지정하는 대신 환경 변수를 사용하여 마스터 암호를 설정할 수 있습니다. Spring Boot 구성 파일에서 이 환경 변수를 passwordEnvName
속성 값으로 지정합니다. 예를 들어 MASTER_PW
환경 변수를 마스터 암호로 설정하는 경우 Spring Boot 구성 파일에 이 항목이 있습니다.
<property name="passwordEnvName" value="MASTER_PW">