4.2. Spring Boot での暗号化されたプロパティープレースホルダーの使用

Jasypt を使用すると、プロパティーソースに暗号化を提供でき、アプリケーションは暗号化されたプロパティーを復号化し、元の値を取得できます。次の手順では、Spring Boot でプロパティーソースを暗号化および復号化する方法について説明します。

手順

  1. jasypt 依存関係をプロジェクトの pom.xml ファイルに追加します。

    <dependency>
        <groupId>com.github.ulisesbocchio</groupId>
        <artifactId>jasypt-spring-boot-starter</artifactId>
        <version>3.0.3</version>
    </dependency>
  2. プロジェクトの pom.xml に Maven リポジトリーを追加します。

    <repository>
    <id>jasypt-basic</id>
    <name>Jasypt Repository</name>
    <url>https://repo1.maven.org/maven2/</url>
    </repository>
  3. Jasypt Maven プラグインをプロジェクトに追加すると、暗号化と復号化に Maven コマンドを使用できるようになります。

    <plugin>
       <groupId>com.github.ulisesbocchio</groupId>
       <artifactId>jasypt-maven-plugin</artifactId>
       <version>3.0.3</version>
     </plugin>
  4. プラグインリポジトリーを pom.xml に追加します。

    <pluginRepository>
       <id>jasypt-basic</id>
       <name>Jasypt Repository</name>
       <url>https://repo1.maven.org/maven2/</url>
    </pluginRepository>
  5. application.properties ファイルに一覧表示されているユーザー名とパスワードを暗号化するには、以下のように DEC() 内でこれらの値をラップします。

    spring.datasource.username=DEC(root)
    spring.datasource.password=DEC(Password@1)
  6. 次のコマンドを実行して、ユーザー名およびパスワードを暗号化します。

    mvn jasypt:encrypt -Djasypt.encryptor.password=mypassword

    これは、application.properties ファイルの DEC() プレースホルダーを、暗号化された値に置き換えます。以下に例を示します。

    spring.datasource.username=ENC(3UtB1NhSZdVXN9xQBwkT0Gn+UxR832XP+tOOfFTlNL57FiMM7BWPRTeychVtLLhB)
    spring.datasource.password=ENC(4ErqElyCHjjFnqPOCZNAaTdRC7u7yJSy16UsHtVkwPIr+3zLyabNmQwwpFo7F7LU)
  7. Spring アプリケーション設定ファイルの認証情報を復号化するには、次のコマンドを実行します。

    mvn jasypt:decrypt -Djasypt.encryptor.password=mypassword

    これにより、暗号化前の application.properties ファイルの内容が出力されます。ただし、これは設定ファイルを更新しません。