Разбор задачи

Чужая система после ухода подрядчика: можно ли её менять

Система запускается с нуля по записанным шагам, а решение «чинить или переписывать» опирается на замечания с местом в коде

Проверяется: паспорт системы и заключение аудита

Средний бизнесРаботаем по NDA

Задача

Подрядчик закрылся, перестал отвечать или передал систему, не оставив описания. Она работает, но каждую правку боятся: непонятно, что от чего зависит, где лежат пароли и ключи и как восстановить всё после сбоя. Попытки «просто перепоручить» новому подрядчику заканчиваются тем, что первый месяц он читает код, а второй просит больше денег.

Где ломается

Что съедает срок и бюджет на самом деле

Почти никогда — качество отдельных функций. Ниже места, из-за которых решение откладывается, и что мы с каждым делаем.

Систему нельзя собрать без автора

сборка работает на машине одного человека, часть шагов делалась руками. Пока система не поднята с нуля на чистом стенде, любая оценка риска остаётся мнением.

Знание лежит в базе и в обменах

хранимые процедуры, задания по расписанию и обмены с учётными системами нигде не описаны. Они ломаются тихо и заметны только по последствиям.

Секреты и доступы живут в чужих руках

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

Переписать хочется всегда

и почти всегда это самый дорогой вариант. Без перечня того, что система делает на самом деле, новая версия повторяет старые ошибки и теряет скрытые функции.

Ограничение, которое определяет решение

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

Как проверить, что работа сделана

Приёмка держится на трёх предметах. Запуск: система поднимается с нуля на чистом стенде по записанным шагам, и вы видите, сколько шагов пришлось выяснять устно.

Заключение: у каждого замечания указаны место, последствие и оценка трудоёмкости, а в начале есть список того, что просмотрено глубоко и что выборочно.

Паспорт: как система устроена, где развёрнута, от чего зависит и как восстанавливается. По нему администратор вашей службы повторяет восстановление сам.

О чём спросить любого подрядчика

  • Как подрядчик собирается запустить систему, если автора нет: ждите ответа про отдельный стенд и записанные шаги.
  • Что в заключении будет по каждому замечанию: место в коде, последствие, оценка в днях. Общие слова «код требует доработки» ничего не стоят.
  • Как отделено то, что просмотрено глубоко, от того, что выборочно.
  • Берётся ли подрядчик исправлять найденное сам, и значит ли это, что он заинтересован найти побольше. Хорошо, если аудит можно купить отдельно.
  • Что остаётся у вас после аудита: заключение, схема, паспорт. Всё это должно передаваться по акту.
Порядок работ

Как мы идём по этапам

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

  1. Рамки и доступыФиксируем NDA, объём и уровень, согласуем со службой безопасности, где мы работаем с кодом. Результат: письменный перечень систем, баз и ролей в рамке.
  2. Запуск на стендеСобираем и запускаем систему по вашим инструкциям, записываем всё, что пришлось выяснять. Результат: пошаговая инструкция запуска и список дыр в ней.
  3. Чтение от рисковГлубоко читаем учёт денег и остатков, права, обмены с другими системами и выгрузки наружу, остальное выборочно и автоматическими проверками.
  4. ЗаключениеЗамечания с местом, последствием и оценкой в днях, схема системы, паспорт, вариант на каждую часть: чинить, вынести, переписать, оставить.
  5. Разбор с вашими людьмиПроходим заключение вместе, помогаем составить задание на исправление. Остановиться после этого можно: исправление у нас заказывать не обязательно.
Архитектура и стек

Как это обычно устроено внутри

Типовая схема аудита: репозиторий разворачивается на отдельном стенде в вашем контуре, сборка и запуск идут в контейнерах, чтобы шаги можно было записать и повторить. Статический разбор кода и зависимостей даёт список подозрительных мест, вручную перечитываются рискованные участки. Схема базы и медленные запросы смотрятся на копии структуры без боевых данных. Всё найденное заносится в таблицу замечаний с местом, последствием и оценкой.

Типовой стек
  • Docker
  • Статический анализ кода
  • Анализ зависимостей
  • PostgreSQL
  • Git
  • Схема системы

Похожая задача у вас?

Разберём её на созвоне за 40 минут: назовём объём работ, ограничения контура и по каким числам вы будете принимать результат. Если задача не наша — скажем прямо.