Эффективные полномочия
В RustCloak роли могут назначаться напрямую пользователю, наследоваться через группы и раскрываться через составные роли. Для чтения вычисленных данных используются claims.
Упрощённая концептуальная формула, не описание точного SQL-запроса.
Группы и иерархия
Если группа вложена в другую, наследование зависит от направления обхода. Для предотвращения неограниченной рекурсии нужна максимальная глубина. Для текущей реализации RBAC в проекте используется ограничение MAX_GROUP_DEPTH = 20.
Кэш и отзыв доступа
Вычисление дерева ролей на каждый запрос может быть дорогостоящим. В проектной реализации используется кэш claims, который нужно инвалидировать при изменении назначений и правил доступа. Для оценки поведения особенно важны тесты отзыва ролей.
Граница realm
Операции с пользователем, группой или ролью требуют проверки, что все связанные сущности принадлежат одному realm. Отсутствие такой проверки может привести к межарендному повышению полномочий.
Практические правила
- Сначала описывайте бизнес-операции, затем формируйте роли.
- Не выдавайте административные роли по умолчанию.
- Обновляйте кэш прав после всех изменяющих операций.
- Проверяйте доступ на backend, даже если UI скрывает запрещённые действия.
- Тестируйте составные роли, циклы и пересечение realm как негативные сценарии.
Подробнее: инженерная заметка о наследовании ролей →
Сверьте примеры с используемой ревизией исходников и подготовьте отчёт.
Как сообщить об ошибке →