Перейти к содержанию

RBAC-матрица (single-tenant v1)

Обновлено: 2026-05-30
Источник правды: код (resource_access.py, Sidebar.tsx, api/v1/*).
Design-документы могут расходиться — при конфликте верен этот файл.

Иерархия ролей

Роль Уровень Описание
super_admin 3 Владелец / ИБ: полный контроль, implicit connect ко всем серверам
admin 2 Техоператор: управление серверами и алертами, connect только с grant
user 1 Конечный пользователь: только выданные серверы

Модель доступа к серверам

Действие super_admin admin user
Видит все серверы в списке ✗ (только granted)
Connect без explicit grant ✓ (implicit)
Connect с grant / approved JIT
CRUD серверов (add/edit/delete)
Grant / revoke permission
Credential mode service_account при connect ✓ (с grant)

Ключевое отличие admin от super_admin: admin видит весь fleet для управления, но кнопка Connect активна только при наличии permission (прямой grant или одобренный Access Request).


Навигация (UI sidebar)

Страница super_admin admin user
Dashboard
Servers ✓ (subset)
Monitor
Active Sessions
Users
SFTP
Alerts
Access Requests
Audit Logs
Recordings
Settings ✓ (частично)
Profile

Подробнее: sidebar-by-role.md.


Access Requests (JIT)

Действие super_admin admin user
Создать запрос
Видеть свои запросы
Видеть очередь pending (все)
Approve / Deny
Cancel свой pending

Примечание: в design-документе JIT для approve указан admin — в текущем коде approve/deny только require_super_admin. См. credential-modes.md для RDP.


Users и grants

Действие super_admin admin user
Users page (UI) ✗ (redirect)
API: list/create users ✓ (UI) ✓ (API)
Назначить роль super_admin
POST/DELETE /permissions (grant/revoke)
GET /permissions (список)

Audit и recordings

Действие super_admin admin user
Audit Logs page
Export / filter audit
Delete screenshot / recording
Свои audit-события в Profile

Settings

Раздел super_admin admin user
Session policy (idle timeout)
Terminal themes
LDAP (read/test)
Retention / danger zone
AI assistant config

Connect и протоколы

Протокол Путь Требование
RDP /ws/session/{token} grant или super_admin
SSH terminal /ws/ssh/{token} grant или super_admin
SFTP REST /api/resources/{id}/sftp/* grant + can_write для мутаций
VNC /ws/session/{token} grant или super_admin

SFTP read-only grant: can_write=false блокирует upload/delete/rename/mkdir.


API — минимальные роли (backend)

Endpoint group Мин. роль
GET /api/resources любой authenticated
POST/PATCH/DELETE /api/resources admin
POST/DELETE /api/resources/permissions super_admin
GET /api/resources/permissions admin
GET/POST /api/access-requests authenticated
POST .../approve, .../deny super_admin
GET /api/audit/* (кроме own) super_admin
GET /api/users admin
Users UI super_admin only
GET /api/sessions/active, disconnect others admin / super_admin
GET /api/dashboard/* admin
GET/POST /api/alerts/* admin
LDAP, retention, AI settings super_admin

Связанные файлы в репозитории

  • backend/app/services/resource_access.py — connect gate
  • backend/app/api/v1/resources.py — list_resources, grants
  • backend/app/api/v1/access_requests.py — JIT
  • backend/app/core/deps.py — require_admin, require_super_admin
  • frontend/src/shared/components/Sidebar.tsx — menu gates