Группы и RBAC#
IncidentRelay использует два слоя разрешений:
- Роли группы определяют границу доступа и администрирование на уровне группы.
- Роли команды определяют, что пользователь может делать внутри конкретной команды.
Пользователь должен принадлежать к группе, прежде чем он сможет принадлежать к команде в этой группе. Добавление пользователя в команду не добавляет пользователя в группу автоматически.
Глобальный администратор#
Глобальный администратор может управлять всей установкой:
- создавать, обновлять и удалять группы;
- создавать пользователей и управлять ими;
- добавлять существующих пользователей в группы;
- назначать любую роль группы, включая
user_admin; - управлять всеми командами и ресурсами;
- просматривать все данные.
Глобальный администратор не должен иметь возможности удалить или отключить самого себя, и система должна сохранять как минимум одного активного глобального администратора.
Роли группы#
| Роль | Метка в UI | Назначение |
|---|---|---|
viewer | Group Viewer | Может видеть ресурсы внутри границы группы |
editor | Group Editor | Может создавать или редактировать операционные ресурсы на уровне группы, например создать команду в группе |
user_admin | Group Admin | Может создавать пользователей и управлять ими только внутри границы этой группы |
Границы Group Admin#
user_admin намеренно ограничен:
- может создать нового пользователя только внутри выбранной группы;
- созданный пользователь автоматически привязывается к этой группе;
- не может передать или переопределить
group_idв теле запроса; - не может создать пользователя с правами глобального администратора;
- не может назначить другого
user_admin; - не может добавить существующего пользователя в группу;
- не может перемещать пользователя между группами;
- не может глобально отключить или удалить пользователя.
Границы Group Editor#
editor — это операционная роль на уровне группы.
Group Editor может:
- создавать команды внутри группы;
- создавать и редактировать операционные ресурсы на уровне группы;
- управлять командой только тогда, когда у него также есть роль
managerв этой команде.
Group Editor не может:
- управлять пользователями;
- назначать роли группы;
- назначать
user_admin; - автоматически управлять каждой командой в группе;
- редактировать ротации, маршруты, сервисы, каналы или заглушки команды, где он не является Team Manager.
Когда Group Editor создаёт новую команду, IncidentRelay добавляет этого пользователя как manager созданной команды.
Добавление существующего пользователя в группу изменяет границу группы и доступно только глобальному администратору.
Роли команды#
| Роль | Метка в UI | Назначение |
|---|---|---|
viewer | Team Viewer | Может видеть ресурсы команды и алерты |
responder | Team Responder | Может видеть ресурсы команды и подтверждать (acknowledge), разрешать или временно откладывать алерты (shelve) |
manager | Team Manager | Может управлять ресурсами команды, пользователями команды, каналами, маршрутами, ротациями и заглушками |
Group editor не становится автоматически менеджером каждой команды в группе. Доступ на запись к команде требует роли команды manager.
Когда Group editor, не являющийся администратором, создаёт новую команду, IncidentRelay должен добавить этого создателя как manager созданной команды.
Матрица разрешений#
| Действие | Требуемое разрешение |
|---|---|
| Список видимых групп | Любое активное членство в группе или глобальный администратор |
| Создать группу | Глобальный администратор |
| Обновить свойства группы | Group editor или глобальный администратор |
| Удалить группу | Глобальный администратор |
| Список пользователей группы | Читаемое членство в группе или глобальный администратор |
| Создать пользователя внутри группы | Group user_admin или глобальный администратор |
| Добавить существующего пользователя в группу | Глобальный администратор |
| Назначить роли группы | Group user_admin с ограничениями или глобальный администратор |
Назначить роль user_admin | Глобальный администратор |
| Отключить членство в группе | Group user_admin или глобальный администратор |
| Удалить членство в группе | Глобальный администратор |
| Создать команду в группе | Group editor или глобальный администратор |
| Читать команду | Team viewer, responder, manager или глобальный администратор |
| Подтвердить (acknowledge) или разрешить алерт | Team responder, manager или глобальный администратор |
| Управлять ресурсами команды | Team manager или глобальный администратор |
| Добавить пользователя в команду | Team manager или глобальный администратор; целевой пользователь уже должен быть в группе команды |
| Управлять собственной созданной командой | Team manager или глобальный администратор |
| Управлять любой командой в группе | Не допускается только ролью группы; требуется Team manager |
| Управлять ротациями | Team manager или глобальный администратор |
| Управлять маршрутами | Team manager или глобальный администратор |
| Управлять сервисами | Team manager или глобальный администратор |
| Управлять каналами | Team manager или глобальный администратор |
| Управлять заглушками | Team manager или глобальный администратор |