RE:NODE
Обзор хостинга

Безопасность5 мин чтения

Где хранить секреты на сервере приложения

API-ключам, паролям базы и токенам не место в репозитории. Где они должны быть и почему это различие — не занудство.


Чаще всего учётные данные утекают не из-за атаки. Репозиторий был приватным, когда туда попал ключ, и стал публичным, когда его форкнули, — и к этому моменту ключ уже в истории, а не в файле.

Переменные окружения, а не файлы в репозитории

Вкладка Startup хранит переменные окружения: они задаются на контейнере и никогда не попадают в код. Ваше приложение читает их так же, как читает сейчас — process.env, os.environ, getenv, — а значение живёт на сервере, а не в том, что вы пушите.

  • Пароли базы, которые панель и так генерирует на каждую базу.
  • API-ключи и URL вебхуков. URL вебхука — это учётные данные: у кого он есть, тот пишет от вашего имени.
  • Токены ботов — самый часто утекающий секрет в этой индустрии.
  • Всё, что вы не написали бы на билборде.

Если уже закоммичено

Меняйте. Удалить строку и запушить снова не помогает: в старом коммите она осталась, и у всех, кто клонировал репозиторий, тоже. Ротация — единственное решение, и она дешевле, чем узнать это на практике.

Секрет, пролежавший в публичном репозитории пять минут, — публичный секрет. Скраперы быстрее вас.