Четыре оси
1. Действие
Есть ли у человека право — например, утверждать выплату?
2. Запись
Его ли это строка? Это могут быть его собственные записи, его организация или его ветвь иерархии.
3. Поле
Может ли он видеть это поле — и может ли его менять?
4. Доверие к сессии
Иметь право недостаточно: сессия должна достичь уровня доверия, которого требует действие, — обычная сессия, пароль или ключ, второй фактор или подпись. Шкалу задаёт каждая организация.
Три ответа, а не два
- Разрешить
- Запретить
- Право есть — сначала подтвердите более сильным фактором
У финансового менеджера есть право утверждать выплаты, но он вошёл только по паролю. Система не говорит «нет» — она говорит «да, после второго фактора». Заместитель может почти всё, что может он, кроме прав, помеченных как непередаваемые.
Как это объявляется
В Cambium, языке бизнес-логики платформы, пакет один раз объявляет свои права, у каждого — нижний уровень доверия сессии; политика строк решает, какие записи видит пользователь; переход статуса называет нужное ему право и условие, которое должно выполниться:
/// Права группами; у каждого — нижний уровень доверия сессии.
permissions {
payout level strong {
read level identified,
edit,
approve implies read,
},
all_regions,
director level proven,
}
/// Утверждение — ручной переход: право и условие; выше лимита нужен ещё и директор.
machine Payout.status {
Draft -> Approved permission if amount < config.payout.approve_limit { payout.approve } else { payout.approve and director }
ensure amount > 0 usd and note != "" else (err.payout.state);
}
/// Политика строк: пользователь видит только выплаты своих регионов.
policy payout.read(p: Payout, actor: Actor) -> bool {
actor.regions.contains(p.region) or actor.has(all_regions)
}- Читать выплаты можно с установленной личностью, утверждать — со вторым фактором, праву директора нужна личность, проверенная по документу
- Политика строк добавляется к каждому запросу и команде автоматически — пользователь вне региона просто не видит выплату
- Выше заданного лимита для утверждения нужен ещё и директор
- Право и условие проверяются до смены статуса; нехватка доверия возвращает форму «подтвердите более сильным фактором», а не отказ
- Переход, которого нет в описании, не может произойти, какие бы права ни были у пользователя
Уровни доверия образуют одну шкалу: анонимный, установленный, подтверждённый, сильный (второй фактор), проверенный (документ личности) и квалифицированный (подпись квалифицированным сертификатом). Пакет задаёт нижнюю границу; организация может её поднять, но не опустить.
Делегирование, приостановка и история
- Некоторые права нельзя передать никогда
- Приостановка человека снимает всё сразу, включая переданные им права
- У выдачи прав есть срок действия
- Каждая отклонённая попытка записывается в аудит
- Журнал выдачи прав — источник истины, поэтому состояние доступа можно восстановить и проверить на любой прошлый момент
Для самых критичных операций
Самые критичные решения требуют взвешенных подписей «k из n»: согласиться должны несколько человек, у каждого свой вес. Необратимые действия могут требовать задержки или второго человека. Подписи гибридные — Ed25519 вместе с постквантовой ML-DSA-65.