Spring Cloud Configを使用しているSpring Bootアプリがありますが、Spring Bootアプリのbootstrap.ymlファイルでSpring Cloud Configパスワードを暗号化したいと考えています。これを行う方法はありますか?以下に例を示します。
Spring Bootアプリbootstrap.yml
spring:
cloud:
config:
uri: http://locahost:8888
username: user
password: '{cipher}encryptedpassword'
これに関連して私が発見したいくつかのこと。
Bootstrap.yml(またはapplication.yml)を使用する場合、暗号テキストの形式は一重引用符で囲む必要があります。
security.user.password: '{cipher}56e611ce4a99ffd99908d2c9aa1461d831722812e4370a5b6900b7ea680ae914'
Bootstrap.properties(またはapplication.properties)を使用する場合は、暗号テキストの形式を囲まないでください。
security.user.password= {cipher}56e611ce4a99ffd99908d2c9aa1461d831722812e4370a5b6900b7ea680ae914
[リファレンスドキュメント] [1]は、引用符なしでymlを示しています。 SnakeYamlは常にエラーを報告しました:
"expected <block end>, but found Scalar"
構成クライアントでは暗号化されたプロパティがサポートされています( ユーザーガイド で説明されています)。明らかにそのようにすると、実行時にプロパティを復号化するためのキーを提供する必要があるため、実際には必ずしもメリットが見られません(設定ファイルは特別な形式のキーストアに少し似ていると思いますので、多くの代わりに1つの秘密を保護する必要があります)。例(application.yml):
integration:
stores:
test: '{cipher}316f8cdbb776c23e679bf209014788a6eab7522f48f97114328c2c9388e6b3c1'
とキー(bootstrap.yml内):
encrypt:
key: ${ENCRYPT_KEY:} # deadbeef
Spring CLIを使用して秘密を暗号化できますspring encrypt password --key 'SECRET_KEY'