Menu Close
Settings Close

Language and Page Formatting Options

第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">