Skip to content

ADR 0017: первый профиль управляемых сервисных ключей ​

Статус: accepted. Дата: 2026-09-24.

Контекст ​

ADR 0016 задаёт широкую целевую модель. Нужен завершённый безопасный инкремент machine access, сохраняющий текущие file keys, чистые слои и publication fencing.

Решение ​

Migration 9 добавляет стабильные сервисные аккаунты, hash-only credentials, audit и initiating credential в jobs. Ключи имеют pending activation, срок действия, идемпотентную выдачу без replay secret, ротацию и необратимый отзыв. Действуют 18 точных repository actions; account/key bindings пересекаются, coarse authorize для managed principal запрещён. HTTP API и worker используют общие application rules.

Первое управление разрешено только явно назначенному file bootstrap serviceAdministrator, независимо от прежнего administrator. Делегируемые system/credential/policy actions пока не выдаются. Корневой оператор может назначать любые реализованные data permissions; новые ключи могут только сузить account policy, ротация — также права исходного key. Делегированное управление из ADR 0016 остаётся отдельным этапом.

На каждый новый request читается primary PostgreSQL. Короткая транзакция data mutation повторно проверяет policy/credential с shared row locks до commit; revoke/disable/policy update сериализуются с ней. Для bytes держится только прежний upload session lock, не identity row lock. Job исполняется по initiating credential; новый key может явно переавторизовать неработающее задание своего аккаунта.

Бюджет связан с аккаунтом, не key ID. Административные изменения сериализует отдельный lock 18471/12, чтобы count/insert, активация и retention не гонялись. Credentials ограничены 10 000 сохранённых записей, audit — последними 100 000 событиями; автоматическое архивирование ключей пока отсутствует. Эти пределы описаны оператору, не скрываются за бесконечной таблицей.

Последствия ​

Новые requests требуют доступной authority; нет stale-cache fallback. Начатый download имеет прежнюю границу отзыва. Для существующих file identities не выполняется автоматический перенос ownership/секретов; новый managed account отдельный, а внутри него rotation сохраняет uploads/jobs/references. Reserved prefix dpk не обходит revoke через file fallback. Не включены folders/group selectors, HA, webhook, federation и UI управления ключами. Подробный runbook является текущим контрактом этого поднабора; остальная целевая модель остаётся proposed.

Приёмка ​

Проверки прав/пересечения, concurrency, expiry/rotation, отказа stale publication, реального worker и reader входят в функциональные тесты. Прежние сценарии HTTP API и миграции продолжают проверяться. Standalone/общий root не объявляется репликацией.

Последующее расширение root-only управления: ADR 0019. Исходное решение выше фиксирует первый профиль; текущий контракт допускает scoped delegates.

Arkvory · ProAnimaStudio