Модель доступа
Как V3 Custody решает, что вам можно и что вам видно — членство в группах, default-deny, роли на адресах и изоляция видимости.
Аутентификация отвечает «кто вы», модель доступа — «что вам можно» и «что вам видно». Складываются три слоя: членство в группах политик (какие действия можно), гранты на адреса и папки (роли на конкретных адресах) и видимость (что показывается). Отдельных «скоупов» у токена нет.
Права через членство в группах
Действия проходят через Policy Engine, а политики берутся из ваших членств в группах. Права — это объединение allow-политик ваших групп. Работает default-deny: без разрешающей политики действие запрещено (403).
POST /api/v1/policy-groups/{id}/members— добавить участника в группу.GET /api/v1/me/allowed-segments— какие значения сегментов вам разрешены для действия.
Подробнее — на странице Policy Engine и в гайде Пригласить команду.
Роли на адресах
Доступ к конкретным адресам задаётся ролью: viewer (просмотр) или contributor (просмотр + переводы); право canCreateAddress — отдельно. Грант выдаётся на адрес (/shares) или на папку (/grants), пользователю или группе. Подробнее — в гайде Выдать и отозвать доступ.
Видимость
По умолчанию видимость изолирована: обычный участник видит только свои адреса, операции и балансы. Права применяются ещё до агрегации, поэтому чужие данные не попадают даже в суммарные цифры.
Администратор расширяет видимость точечно:
POST /api/v1/vaults/{code}/visibility-grants— кто (subjectType: user|group) и кого видит (scope: self|group|vault).
Роль администратора
Администратор — надзорная роль: видит весь Vault, но сам не инициирует операции (у него нет собственных операций). Это разделяет «того, кто наблюдает» и «того, кто действует».
Скрытие чувствительных полей
Даже внутри видимых данных значения чувствительных полей редактируются под доступ: значение приходит null, а ключ попадает в redactedFields. Показывайте «скрыто», а не пустоту — это осознанная редакция, а не отсутствие данных.
Как всё складывается
- Кто вы — аутентификация.
- Какие действия — членство в группах + Policy Engine (default-deny).
- На каких адресах — роли
viewer/contributor(гранты). - Что видно — изоляция по умолчанию +
visibility-grants. - Какие поля — чувствительные значения редактируются по правам.