Права доступа
В Asmy два уровня ролей: роль во всей установке и роль в каждом отдельном проекте. Не путайте администратора Asmy и мейнтейнера проекта.
Роль во всём Asmy
Администратор видит все проекты и общие ресурсы Docker, приглашает и удаляет пользователей, назначает глобальные роли, управляет настройками, очисткой диска и обновлением панели.
Пользователь работает с доступными ему проектами. Он может создать проект и автоматически стать его мейнтейнером. Управление одним проектом не даёт прав администратора всей установки.
Роль в проекте
| Возможность в интерфейсе | Разработчик | Мейнтейнер / администратор Asmy |
|---|---|---|
| Просмотр проекта, его доменов и связанных ресурсов | Да | Да |
| Работа с настройками доменов и ручными блоками | Да, с ограничениями редактирования Alias | Да |
| Просмотр контейнеров и логов, запуск остановленного контейнера | Да | Да |
| Перезапуск обычного контейнера | Да | Да |
| Остановка и удаление контейнера | Нет | Да, с ограничениями служебных ресурсов и Swarm |
| Терминал контейнера | Нет | Да, для работающего контейнера, если действие доступно |
| Добавление и удаление участников, смена их ролей | Нет | Да |
| Переименование, архивирование и удаление проекта | Нет | Да, кроме служебного проекта |
Это описание доступных действий интерфейса, а не утверждение о полной защите каждого API. Для хранилищ серверное удаление volume требует глобального администратора; работа с файлами — отдельная чувствительная область, не ограниченная этой таблицей.
Ограничения разграничения доступа
Не используйте одну установку Asmy для взаимно недоверенных клиентов. Текущая модель не является полноценной многопользовательской изоляцией.
Принадлежность Docker-ресурсов выводится из редактируемых адресов проксирования и имён, а не из независимого назначения владельца. Часть операций Docker, терминала и файлов пока не имеет достаточной серверной проверки принадлежности ресурса. Скрытая кнопка и отфильтрованный список не защищают от прямого обращения к API.
В частности, нельзя считать, что роль разработчика технически исключает любое административное действие над ресурсами. Давайте доступ только людям, которым доверяете работу на этом сервере. Для изоляции независимых команд используйте отдельные серверы или установки с подходящей границей доступа.
Глобальные проверки для настроек, обновления, удаления пользователей и массовой очистки Docker, а также проверки мейнтейнера для управления участниками и самим проектом уже выполняются на сервере. Это не снимает описанные выше ограничения остальных операций.