продукт Continentix · в разработке

Каждое разрушительное действие требует второго устройства.

Valtrix — плоскость управления виртуальной инфраструктурой: собственное железо и арендованные мощности под одной крышей. Рутина остаётся быстрой. Удаление машины, смена учётных данных провайдера или выгрузка инвентаря останавливаются и ждут криптографического подтверждения с устройства, отличного от того, за которым вы работаете.

Зачем второе устройство

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

Украденной сессии недостаточно

Атакующий с полным доступом к рабочему устройству может смотреть список машин, запускать и перезагружать их. Удалить узел, тронуть учётные данные провайдера или выгрузить инвентарь он не может: на это нужна подпись ключом, который никогда не покидает устройство-гардиан.

Ошибка получает паузу

Тот же барьер ловит человеческую версию проблемы: не тот идентификатор машины в два часа ночи. Экран подтверждения показывает клиента, проект, узел и IP до того, как что-либо будет уничтожено.

Удаление не мгновенно

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

Три устройства, три роли

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

Устройство A — Управление

Повседневная работа

Машина, за которой вы реально работаете: инвентарь, выдача ресурсов, сеть, биллинг, мониторинг.

  • Не меняет политику безопасности самостоятельно
  • Не регистрирует новое доверенное устройство
  • Не выгружает данные массивом
Устройство B — Гардиан

Подтверждение критических действий

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

  • Подтверждает или отклоняет, видя весь контекст
  • Может заморозить всю платформу (режим инцидента)
  • Не получает данные клиентов и лишние секреты
Устройство C — Восстановление

Используется один раз

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

  • Без постоянных прав и без участия в рутине
  • Само восстановление — критическое событие с записью в журнал
  • Запускает ротацию всех производных ключей

Что происходит, когда вы нажимаете «удалить»

Два пути через один движок. Какой путь выберет действие, решает политика — и она живёт в одном месте, которое можно проверить, а не размазана условиями по обработчикам.

Обычное действие — запуск, остановка, перезагрузка

1
Запрос с устройства AАутентифицированная сессия, ключ устройства, привязанный к железу.
2
Проверка политикойНе критическое, режим инцидента не активен → разрешено.
3
Исполнитель выполняетИдемпотентно, с повторами и машиной состояний.
4
ЗаписаноКто, с какого устройства, над чем, с каким результатом — в цепочке хэшей.

Критическое действие — удаление, ключи, выгрузка

1
Запрос с устройства AТа же точка входа, другой вердикт.
2
Политика требует гардианаДействие, инициатор, ресурс, одноразовое число и срок годности связаны в одно сообщение.
3
Гардиан решаетУстройство B показывает настоящую цель и подписывает — или отклоняет. Ключ не покидает защищённый элемент.
4
Подпись проверена, повтор отклонёнОдноразовое число сгорает: просроченное или повторно предъявленное подтверждение ничего не стоит.
5
Сначала защищённая копия, потом выполнениеРазрушительной работе предшествует копия, которую не удалит регламент хранения.

Чем управляет

Единый инвентарь по собственному железу и арендованным мощностям, где API провайдера спрятан за доменной моделью, а не протекает в бизнес-логику.

Собственные узлыЖизненный цикл машин, хранилище, снапшоты, миграция и выбор узла на собственном железе — через доступы с минимальными правами, никогда не под root.
Арендованные мощностиСерверы, тома, файрволы, балансировщики, сети, основные и плавающие IP, образы, rescue и обратный DNS у провайдеров, где вы арендуете.
Сеть и IPAMВыдача IPv4 и IPv6 с явным состоянием каждого адреса, сегменты под каждого арендатора, политика файрвола, DNS.
Хранилище и бэкапыТома, снапшоты, инкрементальные копии, учения по восстановлению и обязательная копия перед удалением.
ПланировщикРазмещение по реальной ёмкости, типу хранилища, привязкам и состоянию обслуживания, а не по одной свободной памяти.
$
БиллингТарифы, заказы, счета, потребление и приостановка, связанные с жизненным циклом ресурса, без доступа к учётным данным провайдера.
RustAxumPostgreSQLПриложение гардиана на FlutterEd25519WebAuthnOpenTelemetry

Что гарантируется и от чего

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

1
Журнал, подделка которого виднаКаждая запись несёт хэш предыдущей, а голова цепочки подписывается и публикуется вне платформы. Переписывание истории внутри базы становится обнаружимым снаружи неё.
2
Подтверждения без повторного использованияПодтверждение связывает действие, инициатора, ресурс, одноразовое число и короткий срок годности. Перехваченный трафик нельзя воспроизвести во второе удаление.
3
Минимум прав между сервисамиУ биллинга нет пути к гипервизору, мониторинг не может изменить машину, веб-API никогда не держит root-доступ к провайдеру.
4
Управление вне пути данныхКлиентский трафик никогда не проходит через Valtrix, а машина, на которой он работает, не входит в управляемый им пул.
5
Режим инцидентаОдин переключатель — вручную или по срабатыванию детектора аномалий — делает подтверждение гардиана обязательным для любой операции, даже перезагрузки.
6
Восстановление, которое прогонялиПотеря устройства, потеря узла и потеря самой платформы управления имеют каждая свою написанную и проверенную процедуру. Копия, которую ни разу не разворачивали, копией не считается.

Статус разработки

Valtrix находится в активной разработке и не принимает клиентов. На этой странице перечислено то, что действительно написано и работает, а не то, что задумано — план ниже честно разделяет одно и другое.

1
ФундаментRust-workspace, конфигурация, PostgreSQL, миграции, идентификация, сессии, шина событий, журнал аудита с цепочкой хэшей.
сделано
2
Ядро безопасностиДвижок политик, запросы на критические действия, подтверждение и отклонение гардианом, проверка подписей Ed25519, HTTP API, сквозной пример подтверждения.
сделано
3
ПровайдерыАбстракция провайдеров, драйверы для собственных узлов и арендованных мощностей на доступах с минимальными правами, инвентарь узлов, планировщик.
в работе
4
Жизненный цикл VPSВыдача ресурсов, образы, сеть, IPAM, хранилище, снапшоты, обязательная копия перед удалением.
следующее
5
Консоль и биллингКонсоль оператора, кабинет клиента, тарифы, счета, платежи, приостановка.
в плане
6
Надёжность и закалкаСверка состояний, восстановление после катастрофы, учения по развёртыванию копий, тесты на проникновение, криптографическое ревью.
в плане
Это не предложение хостинга. Сегодня Valtrix управляет инфраструктурой собственного автора. Нет ни регистрации, ни пробного периода, ни публичного API. Когда это изменится, первым изменится эта страница.