Доступ ко всем операциям Galleon, от чтения артефактов до администрирования, регулируется единой моделью: пользователи получают роли, а роли объединяют привилегии.
Модель
Модель строится на трёх сущностях:
- Привилегия — право выполнять определённые действия над объектом: репозиторием или административной областью.
- Роль — именованный набор привилегий. Роль может включать другие роли; их привилегии тоже достаются пользователю с этой ролью.
- Пользователь — учётная запись с назначенными ролями.
Встроенные роли:
admin— полный доступ ко всем операциям;anonymous— привилегии этой роли действуют для запросов без аутентификации (Анонимный доступ).
Привилегии
Привилегия разрешает набор действий над одним объектом: репозиторием или административной областью — пользователями, ролями, настройками, задачами.
Привилегии создаются автоматически: административные — при первом запуске, привилегии на каждое действие с репозиторием — при его создании. Есть и универсальные с подстановкой, например право чтения во всех репозиториях.
Типы привилегий, их поля, устройство имён и сборка типовых ролей — в разделе Привилегии руководства администратора.
Действия
Привилегии на репозитории оперируют пятью независимыми действиями:
| Действие | Что разрешает |
|---|---|
browse | Видеть репозиторий и его содержимое в веб-интерфейсе |
read | Скачивание артефактов |
add | Публикация новых артефактов |
edit | Изменение уже опубликованного содержимого |
delete | Удаление артефактов |
Действия независимы: read не включает browse, edit не включает add. Иерархии «администрирование включает запись, запись включает чтение» нет — нужный набор действий указывается явно.
Исключение — публикация образов контейнеров:
клиент запрашивает у реестра доступ и на чтение, и на запись сразу,
поэтому для docker push нужны оба действия — read и add.
В веб-интерфейсе и его API репозиторий без прав browse или read
выглядит несуществующим: сервер отвечает кодом 404.
Анонимный доступ
Анонимный доступ (чтение без аутентификации) складывается из двух настроек:
- Глобальный переключатель анонимного доступа — по умолчанию выключен.
- Привилегии, назначенные встроенной роли
anonymous, — они определяют, что именно доступно без аутентификации.
Привилегии роли anonymous действуют только для запросов без аутентификации:
аутентифицированный пользователь получает ровно привилегии своих ролей,
даже если анонимный доступ настроен шире.
Публикация артефактов всегда требует аутентификации, независимо от настроек анонимного доступа.
Учётные данные
Для аутентификации используются два вида учётных данных:
- Пароль — используется для входа в веб-интерфейс, подходит и для клиентов командной строки.
- Токен пользователя — сгенерированная пара значений, которая используется как логин и пароль в клиентах командной строки и CI, не раскрывая пароль учётной записи. У каждого пользователя может быть один действующий токен; его можно отозвать и выпустить заново в профиле.
В веб-интерфейсе после входа сеанс сохраняется; клиенты командной строки передают учётные данные при каждом запросе.
Первая учётная запись администратора создаётся автоматически при первом запуске из конфигурации сервера (Первичная настройка).