Почему оператор SaaS не должен уметь читать ваши секреты
Право доступа к чужим данным всегда объясняют поддержкой. Разница между «мы обещаем не смотреть» и «мы не можем посмотреть» — это разница между регламентом и устройством.
У любого SaaS есть человек с правами больше всех — оператор платформы. И почти всегда у него есть техническая возможность посмотреть данные клиента.
Это объясняют поддержкой, и объяснение правдиво: чтобы помочь, надо видеть. Вопрос в том, где эта возможность заканчивается.
Две разные фразы
«Мы обещаем не смотреть» — это регламент. Он держится на добросовестности сотрудников, на том, что никто не уволится обиженным, и на том, что доступ к базе не утечёт.
«Мы не можем посмотреть» — это устройство. Оно держится на том, что ключа нет физически.
Разница проверяется одним вопросом, который стоит задавать любому подрядчику: что произойдёт, если ваш сотрудник захочет? Если ответ начинается со слова «регламент» — вы услышали первую фразу.
Как это сделано у нас
Секреты развёртывания оператор платформы не читает. Не «не должен» — не может: они шифруются так, что ключ расшифровки на сервере не лежит.
Хранилище доступов открывается отдельным паролем, который на сервер не уходит вовсе. Отсюда неприятное, но честное следствие: забытый пароль хранилища восстановить нельзя. Нам нечем — у нас его нет.
Ключей от серверов клиентов у нас нет по построению. Агент приходит за заданием сам, приватная часть его пары остаётся на машине клиента. Подробный разбор — Мы не храним ни одного SSH-ключа.
Что оператор всё-таки может — и почему это записано
Полный запрет невозможен: платформу надо чинить, и иногда для этого нужно посмотреть на данные.
Поэтому границы доступа записаны отдельным решением, и в нём три вещи:
- что именно оператор может открыть;
- какой след остаётся — кто, что и когда смотрел;
- какой срок этот след хранится.
Третий пункт не формальность: след, который стирается через неделю, отвечает на вопрос «кто смотрел вчера» и не отвечает на «кто смотрел перед утечкой».
Что спрашивать у подрядчика
Три вопроса, которые отличают устройство от обещания:
- Может ли ваш сотрудник прочитать мои пароли? Не «имеет ли право», а «может ли технически».
- Останется ли след, если он посмотрит? И где этот след увижу я, а не вы.
- Что вы сделаете, если я забуду пароль от хранилища? Ответ «восстановим» означает, что ключ у них есть.
Что из этого следует
Обещание не смотреть — это обязательство, которое вы берёте на себя перед клиентом. Невозможность посмотреть — это свойство, которое снимает обязательство целиком.
Второе дороже в разработке и проще в жизни: нечего нарушать, нечего доказывать при проверке и нечего терять при утечке доступа к собственной базе.
Доступы проекта у нас лежат в хранилище с отдельным паролем, а каждое их раскрытие записывается. Как это устроено — Хранилище доступов.
Читайте также
- Мы развёртываем на серверы клиентов и не храним ни одного SSH-ключаКлючи в папке — самая дорогая вещь в студии и самая незаметная. Разбор pull-модели: агент сам приходит за заданием, подписывает запросы Ed25519, приватная часть не покидает машину.
- Почему студии не нужен пароль от репозитория заказчикаЗаказчик присылает логин и пароль от своего GitHub, студия хранит их до конца проекта и после. Заявка по ссылке решает то же самое: заказчик авторизует доступ сам, у себя.
Автор
Александр ЦапковОснователь Скоупворк
Веду платформу и её боевой контур сам: разработка, выкат, дежурство. Пишу о том, на чём мы обожглись, — с датами, замерами и ссылками на решения в репозитории.