Spring boot – как расшифровать переменные env в файле yaml?

Контекст

У меня есть приложение Spring Boot. Я передаю ему такие переменные:

    ...
      datasource:
          url: jdbc:postgresql://${DB_SERVER_AND_PORT}/my_db
          username: ${DB_USER}
          password: ${DB_USER_PASSWORD}

Испытание

Эти переменные env можно легко прочитать, поскольку они представлены в виде обычного текста. Я хочу повысить безопасность с помощью симметричного шифрования.

Я ищу что-то, что можно использовать в своем файле yaml.

    # example how I want to use it:
    ...
     datasource:
          url: jdbc:postgresql://#{decrypt(${DB_SERVER_AND_PORT}}/my_db
          

Единственное требование для шифрования — простота его выполнения из оболочки (конвейер gitlab).

Вопрос

Если это возможно, то как сделать этот пружинный сапог или пружину?

Почему? Переменная среды не сохраняется. Однако как вы хотите его расшифровать? Для симметричной расшифровки нужен еще один секрет. Как вы хотите сохранить этот еще один секрет?

dur 19.03.2024 16:33
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Версия Java на основе версии загрузки
Версия Java на основе версии загрузки
Если вы зайдете на официальный сайт Spring Boot , там представлен start.spring.io , который упрощает создание проектов Spring Boot, как показано ниже.
Документирование API с помощью Swagger на Springboot
Документирование API с помощью Swagger на Springboot
В предыдущей статье мы уже узнали, как создать Rest API с помощью Springboot и MySql .
0
1
155
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Ознакомьтесь с jasypt, который обеспечивает поддержку шифрования для источников свойств в приложениях Spring Boot:

https://github.com/ulisesbocchio/jasypt-spring-boot

Итак, вы используете переменную среды jasypt.encryptor.password вместо переменной среды DB_USER_PASSWORD. Если переменная среды небезопасна, почему это лучший подход?

dur 19.03.2024 23:09

Другие вопросы по теме