Роли и права доступа¶
AegisAI использует модель RBAC (Role-Based Access Control) с пятью иерархическими ролями.
Иерархия ролей¶
Роль с более высоким рангом наследует все права ролей ниже (кроме явных ограничений).
Матрица прав¶
Super Admin¶
Полный доступ ко всем ресурсам всех арендаторов.
Admin¶
| Ресурс | Действия |
|---|---|
users |
create, read, update, delete, change_role |
policies |
create, read, update, delete |
agents |
create, read, update, delete |
audit |
read, export |
anomalies |
read, confirm |
hitl |
read, approve, reject |
dashboard |
read |
Security Analyst¶
| Ресурс | Действия |
|---|---|
audit |
read, export |
anomalies |
read, confirm |
policies |
read |
dashboard |
read |
hitl |
read, approve, reject |
Developer¶
| Ресурс | Действия |
|---|---|
agents |
create, read, update |
policies |
read |
audit |
read |
dashboard |
read |
Viewer¶
| Ресурс | Действия |
|---|---|
dashboard |
read |
audit |
read |
Сравнительная таблица¶
| Возможность | Viewer | Developer | Sec. Analyst | Admin | Super Admin |
|---|---|---|---|---|---|
| Панель мониторинга | ✅ | ✅ | ✅ | ✅ | ✅ |
| Аудит (чтение) | ✅ | ✅ | ✅ | ✅ | ✅ |
| Аудит (экспорт) | ❌ | ❌ | ✅ | ✅ | ✅ |
| Агенты (CRUD) | ❌ | ✅* | ❌ | ✅ | ✅ |
| Политики (CRUD) | ❌ | ❌ | ❌ | ✅ | ✅ |
| Политики (чтение) | ❌ | ✅ | ✅ | ✅ | ✅ |
| Аномалии | ❌ | ❌ | ✅ | ✅ | ✅ |
| HITL | ❌ | ❌ | ✅ | ✅ | ✅ |
| Пользователи | ❌ | ❌ | ❌ | ✅ | ✅ |
| Все арендаторы | ❌ | ❌ | ❌ | ❌ | ✅ |
* Developer может создавать и обновлять, но не удалять агентов.
Правила назначения ролей¶
Ограничения
- Только Super Admin может назначить роль
super_admin - Нельзя назначить роль выше своей
- Super Admin не привязан к арендатору (
tenant_id = null) - Остальные роли требуют
tenant_id
Проверка прав в API¶
Backend использует декоратор require_role:
from app.core.rbac import require_role
from app.models.user import UserRole
@router.get("/admin-only")
async def admin_endpoint(user: User = Depends(require_role(UserRole.ADMIN))):
...
И класс PermissionChecker:
JWT и роли¶
При аутентификации роль включается в JWT payload:
WebSocket использует role из JWT для фильтрации событий.
Рекомендации¶
| Сценарий | Рекомендуемая роль |
|---|---|
| Руководитель безопасности | Admin |
| Аналитик SOC | Security Analyst |
| Разработчик агентов | Developer |
| Аудитор (только чтение) | Viewer |
| DevOps / платформенный админ | Super Admin |
Принцип минимальных привилегий
Назначайте минимально необходимую роль. Developer не нужен доступ к HITL, Viewer — к управлению агентами.