4.2. Spring Boot での暗号化されたプロパティープレースホルダーの使用
Jasypt を使用すると、プロパティーソースに暗号化を提供でき、アプリケーションは暗号化されたプロパティーを復号化し、元の値を取得できます。次の手順では、Spring Boot でプロパティーソースを暗号化および復号化する方法について説明します。
手順
jasypt
依存関係をプロジェクトのpom.xml
ファイルに追加します。<dependency> <groupId>com.github.ulisesbocchio</groupId> <artifactId>jasypt-spring-boot-starter</artifactId> <version>3.0.3</version> </dependency>
プロジェクトの pom.xml に Maven リポジトリーを追加します。
<repository> <id>jasypt-basic</id> <name>Jasypt Repository</name> <url>https://repo1.maven.org/maven2/</url> </repository>
Jasypt Maven プラグインをプロジェクトに追加すると、暗号化と復号化に Maven コマンドを使用できるようになります。
<plugin> <groupId>com.github.ulisesbocchio</groupId> <artifactId>jasypt-maven-plugin</artifactId> <version>3.0.3</version> </plugin>
プラグインリポジトリーを
pom.xml
に追加します。<pluginRepository> <id>jasypt-basic</id> <name>Jasypt Repository</name> <url>https://repo1.maven.org/maven2/</url> </pluginRepository>
application.properties
ファイルに一覧表示されているユーザー名とパスワードを暗号化するには、以下のようにDEC()
内でこれらの値をラップします。spring.datasource.username=DEC(root) spring.datasource.password=DEC(Password@1)
次のコマンドを実行して、ユーザー名およびパスワードを暗号化します。
mvn jasypt:encrypt -Djasypt.encryptor.password=mypassword
これは、
application.properties
ファイルの DEC() プレースホルダーを、暗号化された値に置き換えます。以下に例を示します。spring.datasource.username=ENC(3UtB1NhSZdVXN9xQBwkT0Gn+UxR832XP+tOOfFTlNL57FiMM7BWPRTeychVtLLhB) spring.datasource.password=ENC(4ErqElyCHjjFnqPOCZNAaTdRC7u7yJSy16UsHtVkwPIr+3zLyabNmQwwpFo7F7LU)
Spring アプリケーション設定ファイルの認証情報を復号化するには、次のコマンドを実行します。
mvn jasypt:decrypt -Djasypt.encryptor.password=mypassword
これにより、暗号化前の
application.properties
ファイルの内容が出力されます。ただし、これは設定ファイルを更新しません。