В self-hosted инстансах секреты чаще всего светятся в трех местах: .env рядом с кодом, в логах после падения сервиса и в бэкапах, которые никто не шифрует. Дальше всё просто: доступ к одному контейнеру превращается в доступ к кабинету, прокси или рекламным API.
Минимальный набор гигиены:
— хранить секреты вне репозитория и вне образа;
— поднимать их через переменные окружения только на этапе запуска;
— ограничивать права ключа по принципу least privilege;
— ротировать сразу после любого инцидента, а не «когда будет время»;
— отдельно шифровать бэкапы и отрезать им доступ в сеть.
Если у тебя несколько сервисов, не раздавай один и тот же ключ всем подряд. Один сервис — один секрет, один набор прав, один журнал доступа. Когда ключ общий, расследование превращается в гадание на кофейной гуще, а компрометация бьет сразу по всему стеку.
И не забывай про банальное: скрытые переменные в CI, маскирование в логах, запрет на вывод конфигов в debug и audit папок с дампами. Под капотом всё устроено проще, чем кажется: секрет не должен существовать там, где его может прочитать случайный процесс или человек с лишними правами.
Контроль над стеком — это контроль над прибылью. Владей своим софтом, а не арендуй его.
Self-hosted арсенал
@self_hosted_arsenal_ubt
API-ключи утекают не из-за взлома, а из-за привычки хранить их «где удобно»
Этот пост опубликован в Telegram-канале Self-hosted арсенал. Подписаться можно по ссылке: @self_hosted_arsenal_ubt.