Документация / Руководство администратора / Доступ
Пользователи
Учётная запись Core - это логин, почта, метод входа, набор ролей и API-токен. Раздел: "Аккаунты и роли" → "Пользователи".
Для работы с разделом нужна роль с правом "Роли и пользователи": "Просмотр" открывает список, "Изменение" - создание, правку и удаление. Права и области видимости описаны на странице Роли и права.
Первый администратор
Первую учётную запись создаёт задание инициализации при установке Core. Параметры задаёт команда SecurityFlow вместе с остальными секретами установки:
| Параметр установки | Назначение | По умолчанию |
|---|---|---|
ADMIN_USER |
имя пользователя | admin |
ADMIN_EMAIL |
почта | задана в образе, укажите свою |
ADMIN_PASSWORD |
пароль | если не задан, генерируется при первой инициализации |
Администратор получает встроенную роль superuser (все права, все продукты) и доступ к панели администратора Django. Повторная инициализация, например при обновлении, пароль существующего администратора не меняет.
После первого входа:
- Смените пароль: "Глобальные настройки" → "Профиль" → "Изменить пароль".
- Создайте именные учётные записи администраторов.
- Учётную запись
adminоставьте для восстановления доступа.
Создание пользователя
- Откройте "Аккаунты и роли" → "Пользователи".
- Откройте форму "Создать пользователя" и заполните поля.
- Сохраните. Пользователь получит метод входа "Пароль".
| Поле | Что задаёт | Обязательно | Ограничения |
|---|---|---|---|
| "Имя пользователя" | логин для входа по паролю | да | уникально |
| "Почта" | адрес; по нему вход через SSO находит пользователя | да | уникальна |
| "Пароль" | пароль | да | от 8 до 128 символов |
| "Роли" | роли пользователя | нет | без выбора назначается default |
Роль default не открывает продукты
У встроенной роли default нет области видимости. Пользователь только с ней войдёт в Core, но не увидит ни одного продукта и ни одной уязвимости. Назначьте роль с областью видимости: Область видимости продуктов.
Создание через API:
curl -X POST "https://core.example.ru/api/v1/users/" \
-H "Authorization: Token <токен>" \
-H "Content-Type: application/json" \
-d '{"username": "ivanov", "email": "ivanov@example.ru", "password": "<пароль>", "roles": [5]}'
roles - список идентификаторов ролей из GET /api/v1/roles/. Передавайте поле всегда: пустой список [] назначает роль default. Успешный ответ - 201 с карточкой пользователя без пароля.
Метод входа
Поле "Метод авторизации" в карточке пользователя: "Пароль" или "SSO". Метод у пользователя один.
| Метод | Как входит | Ограничения |
|---|---|---|
| "Пароль" | форма входа, кнопка "Войти через пароль" | вход через SSO для его почты отклоняется: "SSO is not available for this email" |
| "SSO" | кнопка "Войти через SSO" | вход по паролю отклоняется: 403 "You can't login with password"; смена пароля в профиле недоступна |
Пользователи, созданные при первом входе через SSO, сразу получают метод "SSO". Подробнее: Вход через SSO.
Сменить метод:
- "Разрешить вход через SSO" - переводит пользователя на SSO, вход по паролю закрывается.
- "Запретить вход через SSO" - возвращает вход по паролю. Если пароля у пользователя нет, форма "Разрешить вход через пароль" попросит его задать.
Через API: POST /api/v1/users/<id>/set-auth-method/ с телом {"auth_method": 1} (0 - пароль, 1 - SSO). При переходе на пароль у пользователя без пароля добавьте поле "password". Повторная установка того же метода - 400 "Already set".
Роли пользователя
Роли назначают в карточке пользователя (поле "Роли") или массово: отметьте пользователей в списке и нажмите "Назначить роли" или "Снять роли".
- Права из всех ролей складываются: для действия достаточно одной роли с нужным уровнем.
- Роль
defaultснять нельзя. Запрос снять только её - 400 "This role can not be unassigned"; в наборе с другими ролями она пропускается.
Массовые операции через API выбирают пользователей фильтром в строке запроса:
curl -X POST "https://core.example.ru/api/v1/users/roles/assign/?id__in=12,15" \
-H "Authorization: Token <токен>" \
-H "Content-Type: application/json" \
-d '{"roles": {"ids": [5]}}'
Снятие - тот же запрос на /api/v1/users/roles/remove/.
Фильтр обязателен
Без фильтра id__in операция применяется ко всем пользователям Core.
Доступ к панели администратора
Переключатель "Доступ к панели администратора" открывает пользователю панель администратора Django по адресу /admin/. Через неё доступны все данные и критичные настройки системы в обход ролей. Вход в панель - только по паролю.
Выдавайте этот доступ только администраторам платформы. Пункты меню Core он не открывает: их определяют роли.
Блокировка
Закрыть пользователю доступ можно тремя способами:
| Способ | Как | Результат | Обратимо |
|---|---|---|---|
| Отключить учётную запись | /admin/ → пользователь → снять флажок "Активный" → сохранить |
вход по паролю отклоняется; API-токен и сессия браузера перестают приниматься с ответом 401; история и данные сохраняются | да |
| Снять роли | "Снять роли" в списке пользователей | остаётся default: продукты и уязвимости не видны, вход сохраняется |
да |
| Удалить | "Удалить пользователя" | учётная запись удаляется | нет |
Для сотрудников, которые ушли или сменили роль, отключайте учётную запись: история действий остаётся привязанной к ней.
Что привязано к пользователю
- Расписания аудитов Radar, расписания уведомлений и расписания реестров контейнеров, созданные пользователем, удаляются вместе с ним.
- В интеграциях VCS, где он указан как "Автор интеграции", поле очищается, и сканирование по пушу перестаёт запускаться.
- Комментарии к уязвимостям остаются без автора.
- Radar отправляет отчёты в Core с API-токеном пользователя, который запустил аудит. Для расписаний это создатель расписания, для VCS и реестров - автор интеграции. После отключения или удаления такого пользователя отчёты этих аудитов отклоняются.
Перед отключением или удалением передайте расписания и интеграции служебной учётной записи.
Профиль
"Глобальные настройки" → "Профиль" - настройки текущего пользователя:
- аватар: JPEG или PNG до 10 МБ, ширина до 2000 пикселей;
- "Изменить пароль": "Старый пароль" и "Новый пароль" от 8 до 128 символов. Неверный старый пароль - 400 "Invalid old password". Для пользователей SSO смена недоступна;
- "Токен аутентификации API" - см. ниже;
- "Тема" и "Отображение описания уязвимостей по умолчанию": "Краткое" или "Полное";
- "Внешний URL приложения" - адрес для запросов к API. Меняется в "Глобальные настройки" → "Рабочий процесс";
- ссылка на Swagger - описание API Core, см. API Core.
API-токен
Токен нужен для запросов к API Core из скриптов и CI. Свойства:
- один токен на пользователя, создаётся при первом запросе;
- срока действия нет: токен работает до ротации, отключения или удаления пользователя;
- запросы с токеном выполняются с правами и областью видимости ролей пользователя.
Права на токен - право роли "API токен": "Просмотр" - видеть и получать свой токен, "Изменение" - ротировать. У роли default это право "Нет".
Как получить
В интерфейсе: "Глобальные настройки" → "Профиль" → "Токен аутентификации API".
Через API в открытой сессии браузера: GET /api/v1/profile/auth-token/ возвращает {"token": "<токен>"}.
Как передавать
Токен передают в заголовке Authorization со словом Token:
curl -H "Authorization: Token <токен>" "https://core.example.ru/api/v1/profile/"
Схема Bearer не поддерживается: JWT сессии браузера Core принимает только из cookie.
Ротация
Кнопка "Ротировать" выпускает новый токен. Старый перестаёт приниматься сразу. Через API: GET /api/v1/profile/auth-token/rotate/.
Ротация и отчёты Radar
Этот же токен Core передаёт в Radar для доставки отчётов по аудитам, которые запустил пользователь. Пайплайны, запущенные до ротации, не смогут отправить отчёты: Core ответит 401, джобы завершатся с ошибкой. Ротируйте токен, когда нет запущенных аудитов.
Если у пользователя ещё нет токена, Core создаёт его при первом запуске аудита.
Служебная учётная запись для CI
Для CI и интеграций заведите отдельного пользователя с отдельной ролью. Минимальные права по задачам:
| Право | Уровень | Зачем |
|---|---|---|
| "Уязвимости" | "Изменение" | загрузка отчётов POST /api/v1/scan/import/; этим же токеном Radar доставляет отчёты |
| "Продукты" | "Просмотр" | поиск ассетов и аудитов |
| "Radar" | "Изменение" | запуск аудита, нужен Security checker |
| "API токен" | "Просмотр" | получить токен в интерфейсе |
В области видимости роли укажите только продукты, с которыми работает CI. Шаблоны джоб: Загрузка отчётов из CI.
Сессия в браузере
После входа Core выдаёт JWT в cookie: access живёт 15 минут, refresh - 1 сутки и обновляется при каждом продлении. "Выйти" отзывает refresh. Cookie получают флаг Secure, когда параметр установки DOMAIN задан со схемой https.
Ошибки входа и доступа
| Ответ | Причина | Что сделать |
|---|---|---|
| 403 "Invalid username/password." | неверные логин или пароль, учётная запись отключена | проверьте данные и флажок "Активный" |
| 403 "You can't login with password" | у пользователя метод "SSO" | войдите через SSO или смените метод |
| 403 "Authentication credentials were not provided." | пустые поля формы | заполните логин и пароль |
| 401 "Invalid token." | токен неверный или ротирован | получите текущий токен в профиле |
| 401 "User inactive or deleted." | учётная запись отключена | включите флажок "Активный" |
| 403 "You do not have permission to perform this action." | ни одна роль не даёт нужного уровня права | проверьте роли: Роли и права |
419 NO_LICENSE |
в Core нет действующей лицензии | Активация лицензии в Core |