Security model

Восстановление начинается с проверяемого решения

Переносимый объект объединяет фиксированное представление (FP), редактируемое состояние (ED) и данные ревизии (R). Recoverable отдельно проверяет локальную целостность компонентов и их revision binding — принадлежность одной ревизии. Только положительный результат обеих проверок открывает путь восстановления.

В границе
Объект, SHA-256, проверки, доступ, audit context и verification gate
Вне границы
Защита рабочих станций, сетей и прикладной среды интегратора
01

Trust boundary

Публичная граница проходит по интерфейсу, а не по устройству сервера

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

Adapter может знать формат приложения и передавать ему проверенное редактируемое состояние, но находится после решения Recoverable. Он не заменяет проверку собственным правилом и не соединяет компоненты по внешнему сходству.

Среда интегратораПриложениеФормирует запрос
Публичная границаRecoverableПроверяет объект
Переносимый результатFP + ED + RОдна ревизия

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

02

Integrity controls

Локальная целостность проверяет каждый требуемый компонент

FP — fixed representation, фиксированное представление. ED — editable state, редактируемое состояние. Предусмотренные descriptors/hashes сопоставляют содержимое каждого компонента с ожидаемым описанием.

Положительная локальная проверка говорит о соответствии компонента своему descriptor. Она не доказывает совместимость двух компонентов: локально целые FP18 и ED17 могут относиться к разным ревизиям.

Component 01FPiHfpi ↔ descriptor
Component 02EDiHedi ↔ descriptor
03

Revision controls

Revision binding проверяет совместную принадлежность одному состоянию

R — revision data, данные ревизии. После локальной проверки Recoverable устанавливает, относятся ли FP, ED и R к одному когерентному набору. Имя файла, дата изменения и соседство в архиве не заменяют эту проверку.

СогласованоFP18 + ED18 + R18

Descriptors компонентов связаны данными одной ревизии.

Не подтвержденоFP18 + ED17

Локальная целостность не доказывает совместимость набора.

04

Restore gating

Verification gate переводит две проверки в явное решение

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

  1. 01
    Component check

    FP и ED соответствуют своим descriptors.

  2. 02
    Revision check

    FP, ED и R принадлежат одной ревизии.

  3. 03
    Verification gate

    Результаты обязательных проверок определяют дальнейший путь.

Проверки положительныRestore разрешён

Adapter или прикладной слой может продолжить поддерживаемый путь восстановления.

Проверка отрицательнаОстановка и отчёт

ED не передаётся как проверенное согласованное состояние; причина сохраняется для диагностики.

Разрешение не означает, что Recoverable берёт на себя семантику внутреннего формата приложения. Отказ restore также не означает уничтожение объекта: фиксированное представление может оставаться доступным в отдельно разрешённых сценариях.

05

Failure behavior

Четыре состояния требуют разных решений

Транспортный сбой не доказывает повреждение объекта, а отрицательная содержательная проверка не равна недоступности сервиса. Клиенту важно сохранять это различие и не открывать restore через автоматический fallback.

01
Сервис недоступен

Проверка не завершена; состояние объекта не определяется.

Не восстанавливать как проверенное
02
Некорректный вход

Запрос или переданный формат не принят для обработки.

Исправить входные данные
03
Ошибка локальной целостности

Компонент не соответствует ожидаемому descriptor.

Остановить и сообщить причину
04
Ошибка согласованности ревизии

Локально допустимые компоненты не подтверждены как один набор.

Остановить mixed-revision набор
06

Telemetry policy

Public Metrics показывают агрегаты, а не содержимое объектов

После T0 recorder учитывает классифицированные завершённые операции на публичных app/API surfaces. Публичная статистика отдаёт summary, временную серию и распределение по категориям, но не публикует тела запросов, содержимое объектов, имена файлов или отдельные operational events.

Сбой записи телеметрии не должен ломать успешно выполняемую продуктовую операцию. Это fail-open правило относится только к измерению: оно не меняет отрицательный verification result и не открывает restore gate.

Граница утверждения

Recoverable описывает проверяемые integrity, revision-consistency, restore-gating и telemetry controls. Эти механизмы не являются обещанием абсолютной защиты всей инфраструктуры интегратора.

07

Identity · authorization · audit

EOC v0.27.0 связывает действие с субъектом и областью данных

API key хранится как SHA-256 hash, а запрос получает principal с ролями и scopes. Контекст tenantId/projectId проходит в authorization и audit actor; lifecycle tenant/project проверяется до выполнения защищённой операции.

Маршруты требуют конкретный scope: например, ingest — object:ingest, чтение событий — event:read, управление webhooks — webhook:manage. Отсутствующее разрешение не подменяется успешным fallback.

CredentialAPI key / OIDC principal

Service accounts работают сейчас; OIDC foundation подготовлен для операторской конфигурации.

Scopetenant/project boundary

Учётные данные и события несут явную область принадлежности.

Auditactor + correlation

Запрос связывается с principal, request ID и correlation ID.

Revocationключ отозван

В authenticated release-smoke временный API key был отозван после проверки.

Граница доступа

Публичная документация не означает открытый анонимный доступ к операциям. Рабочий credential и его scopes выдаются для согласованного tenant/project; API-ключ можно самостоятельно выпустить в личном кабинете после создания проекта.

08

Backup · restore · off-server copy

Техническая процедура резервного копирования запускается, шифруется и проверяется автоматически

Ежедневная процедура формирует PostgreSQL dump и manifest объектного хранилища, рассчитывает контрольные суммы, шифрует архив с помощью age, проверяет расшифрование и внутреннюю целостность, затем применяет retention policy.

После локальной проверки зашифрованный архив копируется во внешнее хранилище Cloudflare R2. Загруженный объект сверяется по контрольной сумме. Отдельный restore-preflight подтвердил PostgreSQL и один синтетический объект. В последнем штатном backup manifest содержал 0 объектов, поэтому восстановление непустого набора пользовательских S3-артефактов ещё не подтверждено.

Confidentialityage encryption

Во внешнее хранилище передаётся зашифрованный архив.

IntegritySHA-256 + restore check

Архив и вложенные материалы проверяются до признания backup успешным.

Availabilitydaily + retention

Процедура запускается по расписанию и сохраняет ограниченное число копий.

SeparationCloudflare R2

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

Граница утверждения

Снимок проверки относится к техническому контуру на 8 сентября 2026 года. Успешный backup и синтетический restore-preflight уменьшают риск потери данных, но не являются подтверждением полного production rollout и не гарантируют восстановление при любом возможном сценарии.