Локальные учётные записи
Локальная учётная запись хранит свой пароль в базе данных Semaphore. Каждая установка
начинается с одной такой записи, созданной командой semaphore setup или переменными
SEMAPHORE_ADMIN_*, и именно через неё вы попадаете на сервер, пока не появился ни один
провайдер идентификации.
Сохраните хотя бы одного локального администратора даже после того, как заработает единый вход. Это единственный способ вернуться в систему, когда провайдер идентификации недоступен.
Как хранятся пароли
Пароли хешируются алгоритмом Argon2id с минимальными параметрами стойкости по рекомендациям OWASP, а сами параметры записываются рядом с каждым хешем в формате строки PHC. Выпуски до 2.20 использовали bcrypt; такие хеши по-преж нему работают, и каждый из них заменяется хешем Argon2id при следующем успешном входе владельца. Учётные записи, владельцы которых больше не входят, сохраняют хеш bcrypt, поэтому для их обновления сбросьте пароли.
Полная таблица параметров приведена в разделе Безопасность.
Semaphore не применяет парольную политику — ни минимальной длины, ни требований к сложности, ни срока действия. Если политика нужна, используйте каталог или провайдера идентификации: именно там таким политикам и место.
Управление учётными записями
Администраторы управляют пользователями в веб-интерфейсе, и те же операции доступны в командной строке — для скриптов и для восстановления доступа, когда никто не может войти:
semaphore users add --admin --login jane --name "Jane Doe" \
--email [email protected] --password 's3cret'
semaphore users change-by-login --login jane --password 'new-s3cret'
semaphore users list
Все флаги описаны в semaphore users, а что даёт роль вошедшему
пользователю — в разделе Команды.
Пароль, указанный в командной строке, попадает в историю вашей оболочки и в список процессов машины. Используйте такой способ для первого администратора и для восстановления доступа, а затем смените пароль через веб-интерфейс.
Двухфакторная аутентификация
Semaphore поддерживает TOTP: шестизначные коды, которые генерируют Google Authenticator, Aegis, 1Password и подобные приложения. По умолчанию он выключен и действует для тех учётных записей, которые его включили, — он не навязывается всем подряд.
{
"mfa": {
"totp": {
"enabled": true,
"allow_recovery": true,
"app_name": "Semaphore"
}
}
}
| Параметр | Что делает |
|---|---|
mfa.totp.enabled | Разрешает пользователям добавлять TOTP к своей учётной записи. Без него никто не сможет зарегистрировать второй фактор. |
mfa.totp.allow_recovery | Выдаёт один код восстановления при регистрации, чтобы потерянный телефон не означал потерянную учётную запись. Ввод кода удаляет регистрацию TOTP и выполняет вход пользователя; после этого он регистрирует второй фактор заново. Код хранится в виде хеша bcrypt. |
mfa.totp.app_name | Название издателя, которое показывает приложение-аутентификатор. Задайте его, если у вас больше одного Semaphore. |
Пользователи регистрируют второй фактор на странице своей учётной записи. Администратор может посмотреть или удалить второй фактор того, кто потерял устройство:
semaphore users totp show --login jane
semaphore users totp disable --login jane
Обратное выключение mfa.totp.enabled не удаляет ничьих регистраций; оно лишь прекращает
запрашивать второй фактор. Включите параметр снова — и старые регистрации снова заработают.
Время жизни сессии
Сессия истекает после семи дней без активности. Этот тайм-аут бездействия встроен и не настраивается.
Абсолютный предел настраивается, и отсчитывается он с момента входа, а не с последнего запроса, поэтому активно используемая сессия тоже завершается:
{
"auth": {
"max_session_life_hours": 12
}
}
Значение по умолчанию 0 означает отсутствие абсолютного предела. Задавайте его там, где
общая рабочая станция или требование регулятора обязывают людей проходить аутентификацию
заново по расписанию.
Отключение входа по паролю
После того как провайдер идентификации настроен и вы убедились, что реальный пользователь
может через него войти, параметр password_login_disable полностью отклоняет вход по паролю:
{
"password_login_disable": true
}
LDAP и OpenID Connect это не затрагивает. Существующие локальные учётные записи сохраняют свои роли и историю; у них просто не остаётся способа пройти аутентификацию.
Этот параметр применяется немедленно и действует на каждую локальную учётную запись, включая вашу. Прежде чем задавать его, убедитесь, что единый вход работает, — именно войдя через него, а не прочитав журнал. Исправление ошибки означает правку файла конфигурации на сервере и перезапуск.
Что дальше
- LDAP и Active Directory — аутентификация по каталогу.
- OpenID Connect — единый вход через провайдера идентификации.
- Безопасность — параметры хеширования, шифрование и усиление защиты.