Год назад наша команда из шести человек сидела в переговорке и молча смотрела на экран. В публичном репозитории спокойно лежал дамп нашей продакшн-базы: имена клиентов, телефоны, почта и хеши паролей. Пролежал он там три недели, и заметил его не мы, а добрый человек, который написал нам в поддержку со словами «ребята, вы это случайно не потеряли?». Никаких хакеров в чёрных капюшонах, никакого сложного взлома. Просто человеческая спешка.
Как это вышло? Банально до боли. Стажёр запустил скрипт бэкапа перед демо, дамп упал в папку backups, которую через пару дней кто-то закоммитил вместе с остальными правками. Пароль от тестовой админки был admin123, а сам тестовый стенд смотрел в интернет без всякой защиты. Каждый из этих шагов в отдельности выглядит мелочью, но вместе они сложились в идеальный шторм. И знаете, что самое обидное? Никто не хотел зла. Все просто хотели успеть к пятнице.
После этого случая я окончательно понял простую вещь: малые команды — лакомая цель не потому, что у них много денег, а потому что у них нет выделенного безопасника. Все делают всё, роли размыты, доступы выдаются «на минутку» и остаются навсегда. Поэтому мой чек-лист — не про энтерпрайз с его многомиллионными бюджетами, а про команду из трёх-десяти человек, у которой есть полдня, чтобы закрыть хотя бы базу.
Начните с доступов. Один командный менеджер паролей вместо таблички в облаке и переписки в мессенджере, двухфакторка везде, где она вообще включается, отдельные ключи и аккаунты для каждого человека вместо одного общего логина. Правило минимальных прав звучит скучно, но именно оно ограничивает ущерб, когда что-то всё-таки случается. И отдельно про увольнения: отзыв всех доступов в тот же день, а не «когда руки дойдут». У нас как-то дошли через два месяца.
Дальше — секреты и код. Файлы с ключами и паролями должны лежать в игнор-листе, а не в репозитории. Поставьте простой сканер секретов на pre-commit, он ловит токены раньше, чем их увидят чужие глаза. И запомните главное: если секрет уже попал в историю коммитов, чистить историю бесполезно, ключ нужно менять. Мы это усвоили на своей шкуре, теперь ротация ключей у нас — рутинная процедура, а не подвиг.
Отдельный блок — инфраструктура и данные. Наружу должны смотреть только те порты, которые реально нужны, остальное закрываем. Бэкапы делаем, но обязательно проверяем восстановление, иначе это не бэкап, а надежда. Шифрование диска на рабочих ноутбуках — обязательный минимум, ноутбук крадут чаще, чем взламывают серверы. И не тащите в тестовую среду реальные клиентские данные: обезличьте их один раз, и жить станет спокойнее. Логи и простенькие алерты на подозрительные входы тоже не роскошь, а пара вечеров настройки.
А самое дешёвое и при этом самое действенное — это процессы и люди. Регламент на одну страницу, чек-листы «первый день» и «последний день» сотрудника, короткий разбор раз в месяц в формате «а что будет, если ноутбук украдут прямо сейчас». Мы проводим такие получасовые разборы за кофе, и они регулярно выдают находки, до которых не додумались ни я, ни техлид. Утечка может случиться за пять минут, но разгребать её вы будете месяцами, а репутацию — годами.
Итог простой: безопасность в малой команде — это не паранойя и не отдельный человек на зарплате, а десяток привычек, встроенных в рутину. Начните с одного пункта сегодня, добавьте второй через неделю, и через месяц вы будете спать заметно крепче. А теперь вопрос к вам: какой самый простой шаг по безопасности вы уже сделали в своей команде? Расскажите в комментариях, вдруг именно ваша находка спасёт чей-то проект от ночного звонка.
Как это вышло? Банально до боли. Стажёр запустил скрипт бэкапа перед демо, дамп упал в папку backups, которую через пару дней кто-то закоммитил вместе с остальными правками. Пароль от тестовой админки был admin123, а сам тестовый стенд смотрел в интернет без всякой защиты. Каждый из этих шагов в отдельности выглядит мелочью, но вместе они сложились в идеальный шторм. И знаете, что самое обидное? Никто не хотел зла. Все просто хотели успеть к пятнице.
После этого случая я окончательно понял простую вещь: малые команды — лакомая цель не потому, что у них много денег, а потому что у них нет выделенного безопасника. Все делают всё, роли размыты, доступы выдаются «на минутку» и остаются навсегда. Поэтому мой чек-лист — не про энтерпрайз с его многомиллионными бюджетами, а про команду из трёх-десяти человек, у которой есть полдня, чтобы закрыть хотя бы базу.
Начните с доступов. Один командный менеджер паролей вместо таблички в облаке и переписки в мессенджере, двухфакторка везде, где она вообще включается, отдельные ключи и аккаунты для каждого человека вместо одного общего логина. Правило минимальных прав звучит скучно, но именно оно ограничивает ущерб, когда что-то всё-таки случается. И отдельно про увольнения: отзыв всех доступов в тот же день, а не «когда руки дойдут». У нас как-то дошли через два месяца.
Дальше — секреты и код. Файлы с ключами и паролями должны лежать в игнор-листе, а не в репозитории. Поставьте простой сканер секретов на pre-commit, он ловит токены раньше, чем их увидят чужие глаза. И запомните главное: если секрет уже попал в историю коммитов, чистить историю бесполезно, ключ нужно менять. Мы это усвоили на своей шкуре, теперь ротация ключей у нас — рутинная процедура, а не подвиг.
Отдельный блок — инфраструктура и данные. Наружу должны смотреть только те порты, которые реально нужны, остальное закрываем. Бэкапы делаем, но обязательно проверяем восстановление, иначе это не бэкап, а надежда. Шифрование диска на рабочих ноутбуках — обязательный минимум, ноутбук крадут чаще, чем взламывают серверы. И не тащите в тестовую среду реальные клиентские данные: обезличьте их один раз, и жить станет спокойнее. Логи и простенькие алерты на подозрительные входы тоже не роскошь, а пара вечеров настройки.
А самое дешёвое и при этом самое действенное — это процессы и люди. Регламент на одну страницу, чек-листы «первый день» и «последний день» сотрудника, короткий разбор раз в месяц в формате «а что будет, если ноутбук украдут прямо сейчас». Мы проводим такие получасовые разборы за кофе, и они регулярно выдают находки, до которых не додумались ни я, ни техлид. Утечка может случиться за пять минут, но разгребать её вы будете месяцами, а репутацию — годами.
Итог простой: безопасность в малой команде — это не паранойя и не отдельный человек на зарплате, а десяток привычек, встроенных в рутину. Начните с одного пункта сегодня, добавьте второй через неделю, и через месяц вы будете спать заметно крепче. А теперь вопрос к вам: какой самый простой шаг по безопасности вы уже сделали в своей команде? Расскажите в комментариях, вдруг именно ваша находка спасёт чей-то проект от ночного звонка.