Скрыть секретные значения в application.properties

Доброго дня!

Плагин studio (точнее, liquibase в его составе), судя по всему, использует для своей работы credentials БД, указанные в application.properties:

main.datasource.url = <подключение>
main.datasource.username = <имя_пользователя>
main.datasource.password = <пароль>

Суть проблемы: необходимо каким-то образом избежать хранения кредов к БД в открытом виде в файле application.properties во время разработки (то, что идет в git-репозиторий).

Один из способов, как это обеспечить в общем случае для любых свойств - добавить файл с секретами, который затем добавить в .gitignore:

  1. Файл с секретами под названием secret.properties (в .gitignore)
some.secret.api.token = secret_token
  1. Файл application.properties
spring.config.import = optional:secret.properties (в git)

some.nonsecret.api.url = http://host:port/api

Однако, если попытаться такое провернуть со свойством main.datasource.password и попробовать запустить приложение, Idea выдаст ошибку:

Internal error occurred. Message: Unable to connect to database for generating Liquibase changelogs: null Check Data Store connection parameters.

Т.е. jmix-studio игнорирует файл secret.properties и не получает значение пароля к БД.

Можно ли как-то заставить studio взять креды подключения к БД другим способом (не из свойств main.datasource.* в application.properties)?

Может как-то по-другому можно обойти эту проблему?

1 симпатия

А хранение секретных значений в переменных окружения не подойдет?
Secure data source access credentials in application.properties - Support - Jmix

Если выносить секреты в реальные переменные окружения, то это вроде бы работает, однако,
если проектов много, придется создавать кучу переменных окружения под разные базы, что очень неудобно - в них легко запутаться. Намного удобнее было бы иметь отдельный файл с секретами на проект.

При этом, задание переменных окружения в Run Configuration в самом Intellij тоже не работает:

2

Коллеги, нет решения на этот кейс? Как настроить плагин jmix, чтобы он брал пароль подключения к БД не из application.properties?

Есть решение только с переменными окружения, как описано по ссылке выше и в тикете https://youtrack.jmix.io/issue/JST-2196/Placeholders-for-environment-variables-in-datasource-properties