Как правильно хранить и извлекать чувствительные и нечувствительные константы? - PullRequest
1 голос
/ 07 августа 2020

Моя цель - понять, как включить в мой код конфиденциальные константы / секреты (например, токен api) и нечувствительные константы (например, маршрут api).

Пример для чувствительной константы:

val apiToken = "Hushhhh!"

Пример для нечувствительной константы:

val happyUsersEndpoint = "https://happy.foo.io/v1/users"

Мои вопросы:

  1. В какой части моей структуры папок следует хранить нечувствительные константы?
  2. Есть ли безопасный способ хранить конфиденциальные константы в моем коде? Если нет, то как правильно ссылаться на них извне в моем коде?

Насколько я понимаю, есть способы сделать это в коде Java -i sh, но я в основном ищу способы, которые хорошо вписываются в код Scala (если возможно).

1 Ответ

4 голосов
/ 07 августа 2020

Его не должно быть в исходном коде и в репозитории VCS.

Он должен быть частью процесса развертывания / эксплуатации.

Вы можете использовать какую-то конфигурацию или получить его из переменных env. Что лучше, зависит от вашего стека. Это docker? Это Play или что-то из стека typelevel?

Для каждой ситуации есть свой подходящий метод. Например:

  • Для Play вы можете использовать только файлы конфигурации воспроизведения в формате HOCON.
  • На уровне типа у вас есть pureconfig .
  • Для docker установка, лучше использовать env.
  • Если у вас простое консольное приложение с нулевой зависимостью - я предлагаю добавить аргументы командной строки с необходимыми свойствами.
  • Для простого приложения без игры , cats и docker - просто выберите легкую простую библиотеку.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...