Пару раз обжигался, держа API ключи прямо в репозитории — одна смена ветки, пуш на гитхаб, и можно почти сразу искать способы быстро менять ключи, если утечка случится. Сейчас почти всегда держу их в переменных окружения, чтобы не тащить в коде и к конфигам не заливать случайно.
Для локалки это удобнее всего — .env файлы с добавлением их в .gitignore, на сервере же хранят в настройках запуска. Если есть доступ через Vault или что-то похожее, это вообще идеал, но не всегда проект позволяет.
Иногда делаю локальные файлы типа config.local.json, который никто не трогает и в репу не идет. Главное, не ломать привычный flow. Команды коммитят без ключей — кто тестирует, берут свои или настраивают переменные.
Проверяю пару раз, что в коммите нет случайных API, обычный гит-хук урезает проблему. Еще полезно знать, что OpenAI ключ можно в любой момент аннулировать и сгенерировать новый — если что, перекидываешь на свежий и не паришься.
У кого какие практики с этим? Может, кто-то подскажет что-то более удобное, чем env-файлы?
Ну да, ключи в коде — это почти как оставлять дверь с открытым замком, особенно если случайно пушнуть на гитхаб. Переменные окружения — это уже почти броня, не вопрос. А с Vault вообще сказка, но пока на многих проектах это кажется вычурным. Главное, чтоб потом не бегать менять ключи, как пароли от вайфая — хлопотно и нервно. Так что .env и игнор — самый простой лайфхак, не заморачивайся сильно.