Spring Boot のプロパティファイルでパスワードを隠す方法 質問する

Spring Boot のプロパティファイルでパスワードを隠す方法 質問する

Spring Boot はプロパティ ファイルを使用しますが、少なくともデフォルトでは、パスワードはプレーン テキストです。何らかの方法でこれらを非表示/復号化することは可能ですか?

ベストアンサー1

使用できますジャシプトプロパティを暗号化すると、プロパティは次のようになります。

db.password=ENC(XcBjfjDDjxeyFBoaEPhG14wEzc6Ja+Xx+hNPrJyQT88=)

Jasypt を使用すると、 内に配置した暗号化されたプロパティを取得したら、さまざまなアルゴリズムを使用してプロパティを暗号化できますENC(...)。たとえば、ターミナルを使用して Jasypt で次のように暗号化できます。

encrypted-pwd$ java -cp ~/.m2/repository/org/jasypt/jasypt/1.9.2/jasypt-1.9.2.jar  org.jasypt.intf.cli.JasyptPBEStringEncryptionCLI input="contactspassword" password=supersecretz algorithm=PBEWithMD5AndDES

----ENVIRONMENT-----------------

Runtime: Oracle Corporation Java HotSpot(TM) 64-Bit Server VM 24.45-b08



----ARGUMENTS-------------------

algorithm: PBEWithMD5AndDES
input: contactspassword
password: supersecretz



----OUTPUT----------------------

XcBjfjDDjxeyFBoaEPhG14wEzc6Ja+Xx+hNPrJyQT88=

Spring Bootで簡単に設定するには、スターターを使用することができます。jasypt スプリングブートスターターグループID付きcom.github.ulisesbocchio

同じ方法でアプリケーションを起動する必要があることに注意してください。パスワードプロパティを暗号化するために使用しました。したがって、次のようにアプリを起動できます。

mvn -Djasypt.encryptor.password=supersecretz spring-boot:run

または、環境変数を使用します (Spring Boot のリラックス バインディングによる):

export JASYPT_ENCRYPTOR_PASSWORD=supersecretz
mvn spring-boot:run

詳細については、以下のリンクを確認してください。

https://www.north-47.com/knowledge-base/spring-boot-password-encryption-with-jasypt/

暗号化されたプロパティをアプリ内で使用するには、通常どおり、好きな方法を使用します (Spring Boot が魔法をかけますが、いずれにしてもプロパティはクラスパス内になければなりません)。

@Value注釈の使用

@Value("${db.password}")
private String password;

またはEnvironment

@Autowired
private Environment environment;

public void doSomething(Environment env) {
    System.out.println(env.getProperty("db.password"));
}

ps更新: 実稼働環境では、 でプロセスを照会したり、 で以前のコマンドを実行したりできるため、コマンド ラインでパスワードが公開されるのを避けることhistoryができます。次の操作を実行できます。

  • 次のようなスクリプトを作成します。touch setEnv.sh

  • 変数setEnv.shをエクスポートするには編集しますJASYPT_ENCRYPTOR_PASSWORD

    #!/bin/bash

    JASYPT_ENCRYPTOR_PASSWORD=supersecretz をエクスポートします

  • ファイルを実行する. setEnv.sh

  • アプリをバックグラウンドで実行するにはmvn spring-boot:run &

  • ファイルを削除するsetEnv.sh

  • 次のコマンドで以前の環境変数の設定を解除します。unset JASYPT_ENCRYPTOR_PASSWORD

おすすめ記事