2016-04-22 5 views
0

は明らかにアンチパターンでありますパブリックSCMにプッシュされるのを防ぎます。私の非春ブーツ・プロジェクトでは、私はないプレーンテキストのパスワード

security.user.password = $ {} myPasswordFromMavenSettingsXML

を使用して、私のpom.xmlの内側に対応する<properties/>参照を置きます。 Mavenのリソースフィルタプラグインを使用すると、パスワードはビルド時に置き換えられ、アプリケーションはビルドおよびデプロイ後に実際のプレーンテキストパスワードにアクセスできます。

何らかの理由でMavenのリソースフィルタープラグインがこの場合に機能しません。 には、平文のパスワードをSCMにコミットしていないので、ビルド時にそれらを挿入するようにSpring Bootを設定してください。

答えて

4

スプリングブートには、複数のメカニズムが用意されています。externalized configuration。いくつかの例は、パッケージ化されたJAR以外のコマンドライン引数、環境変数、およびアプリケーションプロパティです。

私が通常行っていること:

ローカルにいくつかの環境変数を設定しました。ほとんどのIDEでは、実行コンフィギュレーション内から環境変数を設定することができます。

たとえば、spring.datasource.passwordプロパティを公開しない場合は、SPRING_DATASOURCE_PASSWORDという環境変数を設定できます。

別の環境にデプロイするときは、通常、アプリケーションのJAR/WARと同じフォルダ内に別のapplication.propertiesファイルまたはapplication.ymlファイルを追加することを選択します。これは、Springブートも同様です。


別の解決策は、コンフィギュレーションを提供するためにmicroserviceとして使用することができるconfig servic Eを有しているためSpring cloudを使用することです。 SCMを使用して設定をバージョン管理することもできますが、ソースコードに接続されていない別のシステムに設定することができます。

+0

'-DSECURITY_USER_PASSWORD = password'を使いましたが、私は機密プロパティを' config/application.properties'の中に入れて、別のプロファイルでも動作させることにしました。さらに、通常の 'application.properties'では' $ {random.value} 'を値として使用し、運用環境への実際の配備の場合は' Mavenプロファイル経由でSECURITY_USER_PASSWORD'環境変数を提供します。 – Alex

+0

異なるプロファイルで作業するために、IDE内に異なる環境変数を持つ複数の構成を実行するだけです。 – g00glen00b

+0

これはローカルで行うことができますが、構成データファイルを展開できないリモートサーバーではこれを行う方法です。したがって、私は 'produdction-profile.properties'のようなものを選択することはできません。 – Alex

関連する問題