Аутентификация
В Semaphore есть три способа установить, кто перед вами. Они независимы и могут быть включены одновременно, поэтому на экране входа могут одновременно присутствовать форма с паролем, вход через каталог и по одной кнопке на каждого провайдера идентификации.
| Способ | Кто проверяет пароль | Когда использовать |
|---|---|---|
| Локальные учётные записи | Semaphore, по собственной базе данных | У вас нет каталога или нужен аварийный администратор. |
| LDAP и Active Directory | Ваш сервер каталога | Люди уже существуют в LDAP или AD, и вы хотите один набор учётных данных. |
| OpenID Connect | Ваш провайдер идентификации | У вас есть единый вход: Keycloak, Okta, Entra ID, Google, GitHub и другие. |
Аутентификация отвечает только на вопрос, кто этот пользователь. Что ему разрешено делать, определяется отдельно — его ролью на сервере и ролью в каждом проекте, см. Команды.
Как появляется запись пользователя
У каждого, кто входит в систему, есть строка в базе данных Semaphore, каким бы способом
он ни пользовался. Локальная учётная запись создаётся администратором или командой
semaphore user add. Учётная запись LDAP или OIDC создаётся при первом успешном входе,
и рядом с ней Semaphore сохраняет внешнюю личность: идентификатор провайдера плюс
идентификатор пользователя, который вернул этот провайдер.
Именно по этой внешней личности сопоставляются последующие входы, а значит, переименование
человека в каталоге не создаёт вторую учётную запись. Внимания требует первый вход
существующего пользователя, когда внешней личности ещё нет. Что произойдёт в этом случае,
определяет параметр external_auth_email_matching:
| Значение | Поведение |
|---|---|
auto (по умолчанию) | Связывать по адресу электронной почты, но только для внешних пользователей, у которых ещё нет личности. Это один раз подхватывает учётные записи, созданные до 2.20, и ничего больше. |
always | Связывать по адресу электронной почты любого внешнего пользователя. Используйте, когда один человек входит через несколько провайдеров. |
never | Никогда не связывать по адресу электронной почты; личности сопоставляются строго по идентификатору провайдера. |
Локальные учётные записи с паролем никогда не сопоставляются по адресу электронной почты, ни в одном из режимов. Иначе провайдер OIDC, позволяющий пользователю самому выбрать адрес электронной почты, можно было бы использовать для захвата учётной записи администратора.
Идентификатор провайдера — ключ в oidc_providers или ldap_providers — входит в состав
каждой сохранённой личности. Его переименование делает ссылающиеся на него личности
осиротевшими, и такие пользователи при следующем входе получат новые пустые учё тные записи.
Выбирайте его один раз.
Сочетание способов
Реалистичная конфигурация включает единый вход для людей и оставляет одного локального администратора на тот день, когда провайдер идентификации окажется недоступен:
- Настройте провайдера и убедитесь, что реальный пользователь может через него войти.
- Выдайте этому пользователю нужные роли.
- Сохраните одну локальную учётную запись администратора с надёжным паролем и включённым TOTP.
- Установите
password_login_disable, чтобы запретить всем остальным вход по паролю.
Делайте это именно в таком порядке. Установленный до шага 1 параметр
password_login_disable сработает ровно так, как обещано, и закроет вам доступ к
собственному серверу.
В этом разделе
| Страница | О чём она |
|---|---|
| Локальные учётные записи | Пароли, TOTP, одноразовые коды по электронной почте, время жизни сессии и отключение входа по паролю. |
| LDAP и Active Directory | Привязка к каталогу, фильтры поиска, сопоставление атрибутов и TLS. |
| OpenID Connect | Настройка провайдеров, выражения claim, вход, инициированный IdP, и двенадцать разобранных примеров провайдеров. |
С чего начать
В новой установке локальный администратор уже создан во время настройки, поэтому начните с Локальных учётных записей, чтобы защитить его, а затем добавьте OpenID Connect или LDAP для всех остальных.