Шаблон матрицы прав
Шаблон матрицы прав доступа для системного аналитика.
Шаблон матрицы прав
Матрица прав описывает, какие роли могут выполнять какие действия над какими объектами и при каких условиях.
Паспорт документа
| Поле | Значение |
|---|---|
| Система | <название> |
| Раздел / функциональность | <название> |
| Модель доступа | RBAC / ABAC / гибридная |
| Автор | <ФИО> |
| Статус | Draft / Review / Approved |
| Версия | v1.0 |
Цель
Опишите, какие права и ограничения нужно зафиксировать.
Основные понятия
| Термин | Описание |
|---|---|
| Субъект доступа | Пользователь, сервис или роль |
| Объект доступа | Сущность, над которой выполняется действие |
| Действие | Просмотр, создание, изменение, удаление, согласование |
| Условие доступа | Владелец, подразделение, статус, регион |
| Роль | Набор прав, назначаемый пользователю |
Роли
| Роль | Код роли | Описание |
|---|---|---|
| Администратор | ADMIN | Полный доступ |
| Руководитель | MANAGER | Просмотр и согласование объектов подчиненных |
| Сотрудник | EMPLOYEE | Создание и просмотр своих объектов |
| Наблюдатель | VIEWER | Только просмотр |
Объекты доступа
| Объект | Код объекта | Описание |
|---|---|---|
| Заявка | REQUEST | Основная бизнес-сущность |
| Комментарий | COMMENT | Комментарии к заявке |
| Вложение | ATTACHMENT | Файлы заявки |
| Отчет | REPORT | Отчетные данные |
Действия
| Действие | Код | Описание |
|---|---|---|
| Просмотр списка | LIST | Доступ к списку |
| Просмотр карточки | READ | Доступ к деталям |
| Создание | CREATE | Создание объекта |
| Редактирование | UPDATE | Изменение объекта |
| Удаление | DELETE | Удаление объекта |
| Согласование | APPROVE | Подтверждение объекта |
| Отмена | CANCEL | Отмена объекта |
| Экспорт | EXPORT | Выгрузка данных |
Матрица прав
| Роль / Действие | LIST | READ | CREATE | UPDATE | DELETE | APPROVE | CANCEL | EXPORT |
|---|---|---|---|---|---|---|---|---|
| ADMIN | Да | Да | Да | Да | Да | Да | Да | Да |
| MANAGER | Да | Да | Нет | Условно | Нет | Условно | Условно | Да |
| EMPLOYEE | Условно | Условно | Да | Условно | Нет | Нет | Условно | Нет |
| VIEWER | Да | Да | Нет | Нет | Нет | Нет | Нет | Нет |
Условия доступа
| ID | Роль | Действие | Объект | Условие |
|---|---|---|---|---|
| COND-001 | EMPLOYEE | READ | REQUEST | Пользователь является автором |
| COND-002 | EMPLOYEE | UPDATE | REQUEST | Автор и статус DRAFT |
| COND-003 | MANAGER | APPROVE | REQUEST | Объект создан подчиненным |
| COND-004 | VIEWER | READ | REQUEST | Объект входит в доступный регион |
ABAC-атрибуты
| Атрибут | Источник | Описание |
|---|---|---|
| user.id | IAM / token | ID пользователя |
| user.role | IAM / token | Роль |
| user.departmentId | Profile service | Подразделение пользователя |
| object.ownerId | БД объекта | Владелец объекта |
| object.status | БД объекта | Статус объекта |
| object.region | БД объекта | Регион объекта |
UI-поведение
| Элемент UI | Условие отображения | Поведение при отсутствии права |
|---|---|---|
| Кнопка Создать | Есть REQUEST.CREATE | Скрыть |
| Кнопка Редактировать | Есть REQUEST.UPDATE и условия | Скрыть или disabled с tooltip |
| Кнопка Согласовать | Есть REQUEST.APPROVE | Скрыть |
| Экспорт | Есть REQUEST.EXPORT | Скрыть |
API-проверки
| Endpoint / Method | Требуемое право | Объект проверки | Ошибка |
|---|---|---|---|
GET /requests | REQUEST.LIST | Фильтр объектов | 403 |
GET /requests/{id} | REQUEST.READ | Заявка {id} | 403 |
POST /requests | REQUEST.CREATE | Раздел заявок | 403 |
PATCH /requests/{id} | REQUEST.UPDATE | Заявка {id} | 403 |
POST /requests/{id}/approve | REQUEST.APPROVE | Заявка {id} | 403 |
Фильтрация данных по правам
| Роль | Логика отбора данных |
|---|---|
| ADMIN | Все объекты |
| MANAGER | Объекты подчиненных |
| EMPLOYEE | Только свои объекты |
| VIEWER | Объекты доступного региона/подразделения |
Ошибки доступа
| Код | Условие | HTTP / gRPC status | Текст |
|---|---|---|---|
| UNAUTHORIZED | Не авторизован | 401 / UNAUTHENTICATED | Требуется авторизация |
| FORBIDDEN | Нет права | 403 / PERMISSION_DENIED | Недостаточно прав |
| OBJECT_FORBIDDEN | Нет доступа к объекту | 403 / PERMISSION_DENIED | Объект недоступен |
Аудит действий
| Действие | Audit? | Что фиксировать |
|---|---|---|
| CREATE | Да | userId, objectId, timestamp |
| UPDATE | Да | userId, objectId, changedFields |
| DELETE | Да | userId, objectId, reason |
| APPROVE | Да | userId, objectId, decision |
| EXPORT | Да | userId, filters, rowCount |
Открытые вопросы
| ID | Вопрос | Кому адресован | Статус |
|---|---|---|---|
| Q-001 | <вопрос> | <роль / ФИО> | Открыт |
Критерии приемки документа
| ID | Критерий |
|---|---|
| AC-DOC-001 | Документ согласован с владельцем продукта / архитектором / разработкой, если применимо. |
| AC-DOC-002 | Все спорные места вынесены в открытые вопросы или зафиксированы как ограничения. |
| AC-DOC-003 | В документе нет неоднозначных формулировок вроде “быстро”, “удобно”, “корректно” без измеримого критерия. |