第4章 Spring Boot で暗号化されたプロパティープレースホルダーを使用する方法
コンテナーを保護する場合、設定ファイルでプレーンテキストのパスワードを使用することはお勧めしません。プレインテキストのパスワードの使用を回避する 1 つの方法は、可能な限り暗号化されたプロパティープレースホルダーを使用することです。
4.1. 値を暗号化するためのマスターパスワード
Jasypt を使用して値を暗号化するには、マスターパスワードが必要です。マスターパスワードは、ユーザー自身または管理者が選択できます。Jasypt では、いくつかの方法でマスターパスワードを設定できます。Jasypt は Spring 設定フレームワークに統合できるため、設定ファイルがロードされるときにプロパティー値が復号化されます。1 つの方法は、Spring Boot 設定でマスターパスワードをプレーンテキストで指定することです。
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">