TGViewer
Записки IT специалиста Записки IT специалиста @interface31 · 9K subscribers
Post #5568 2.75K
Про Docker, секреты и рекомендации «ведущих собаководов»

После вчерашней публикации про сервер Joplin в Docker мы получили ряд критических отзывов, что мол все неправильно и небезопасно, а также ссылки на умные статьи, где рассказывалось как делать не надо и как делать надо.

Мы полностью со всем согласны, любые правила – это концентрированный опыт предшественников и возникли они не на ровном месте. Но у любого правила есть контекст, т.е. условия, при котором его следует применять.

Хороший пример – инструкция к лекарству, там может быть указано, что для профилактики используйте одну дозу, для лечения – другую, а в некоторых случаях допустимо разово принять двойную дозу.

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

Теперь что касается Docker и секретов. Мы не будем сильно углубляться в предмет, кто в теме – тот в курсе, а коснемся его в общих чертах, понятных большинству новичков и администраторов.

Итак, когда мы говорим Docker, понимая его «взрослое» и серьезное применение, то мы держим в уме CI/CD, инфраструктура как код и т.д. и т.п.

Это большие команды, распределенные хранилища, версионирование, автоматическая сборка и тестирование и т.д. и т.п.

И если мы явно пропишем секреты в .env (переменных окружения) или compose-файле, то они попадут в коммиты и историю Git, будут доступны при инспекции контейнера или чтении его окружения, осядут в логах, дампах, кешах.

Короче, появляется множество возможностей для их утечки. На самых разных этапах. Самая грубая, но довольно часто встречающаяся ошибка – это коммит такого файла в публичный репозиторий.

Также секреты могут узнать разработчики, тестировщики и разные прочие подрядчики, которым это по штату совсем не положено.

Чтобы этого избежать, даже на уровне Docker Compose (а мы сильно углубляться не будем) есть возможность монтировать такие ресурсы как отдельную сущность – secrets.

По факту это тот же самый текстовый файл с паролем, ключ, сертификат и т.д. в отдельной папке проекта. Но его не видно через переменные окружения, инспекцию, дампы, логи. В compose-файле мы просто указываем путь к секрету.

Это позволяет использовать один и тот же compose-файл на разных нодах с разными секретами, причем не раскрывая их перед разработчиками (они вообще могут не знать ни одного).

Но давайте спустимся с сияющих вершин DevOps в нашу реальность. Когда у нас нет ни разработки, ни автоматической доставки и развертывания, а есть простая потребность запустить у себя токенизированное приложение.

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

Вы в любом случае их прочитаете, да и это не имеет особого смысла, так как именно вы их туда и записывали.

А если кто-то кроме вас получил доступ к вашей ноде, то спешим вас огорчить, у вас нарисовались проблемы гораздо более серьезные, нежели «неправильное» хранение секретов в Docker.

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

И в этом случае с точки зрения безопасности абсолютно все равно где именно вы прописали свои секреты. Самый простой путь – это .env и ничего страшного в этом нет. Все равно его кроме вас никто не видит и не читает.

При грамотной организации доступа к ноде и приложениям это будет вполне безопасно и не потребует усложнения системы и дополнительных накладных расходов.

Ну а ежели у вас другие сценарии, то рекомендации «ведущих собаководов» - ваша настольная книга.
  • 👍 51
  • 👌 11
  • 🤮 4
  • 🤣 1
  • 🍌 1
More from @interface31
  1. Oct 2, 2026До первого сервис-пака не ставить На фоне некоторых коллег, которые бегут ставить свежий с…
  2. Oct 2, 2026Post #6832
  3. Oct 2, 2026Без лишнего шума и пыли вышла Aspia 3.0. Ключевые изменения в выжимке ниже: 1️⃣ Архитектур…
  4. Oct 2, 2026Post #6826
  5. Oct 1, 2026V2V миграция при помощи Vinchin Backup & Recovery Виртуализация сегодня – норма жизни, даж…
  6. Oct 1, 2026Post #6822
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →