35.5.3. Аутентификация в Sunstone
По умолчанию веб-интерфейс Sunstone использует стандартный механизм аутентификации OpenNebula — логин и пароль пользователя, хранящиеся в базе данных OpenNebula.
Sunstone поддерживает все методы аутентификации, доступные в OpenNebula. Однако все пользователи, входящие через Sunstone, должны существовать в базе данных OpenNebula — даже при использовании внешних систем (LDAP, Kerberos и др.).
Процесс аутентификации в Sunstone зависит от значения параметра
:auth: в файле
/etc/one/sunstone-server.conf и может работать в двух режимах:
opennebula — локальная или делегированная аутентификация через ядро OpenNebula;
remote — внешняя аутентификация, выполняемая веб-сервером (Apache, Nginx и др.).
35.5.3.1. Локальная аутентификация (opennebula)
В этом режиме (используется по умолчанию) пользователь вводит логин и пароль на странице входа Sunstone. Эти данные передаются в ядро OpenNebula, которое проверяет их в соответствии с настроенным драйвером аутентификации (встроенный, LDAP, SSH и др.).
Этот режим соответствует настройке:
:auth: opennebula
и используется по умолчанию.
Этот режим используется для всех типов аутентификации через ядро OpenNebula, включая LDAP и SSH.
35.5.3.2. Внешняя аутентификация (remote)
В режиме удалённой аутентификации Sunstone не запрашивает у пользователя логин и пароль. Вместо этого:
Веб-сервер (Apache, Nginx и др.) выполняет аутентификацию пользователя (например, через Kerberos, OAuth, клиентские сертификаты или базовую HTTP-аутентификацию).
Веб-сервер передаёт имя аутентифицированного пользователя Sunstone через HTTP-заголовок (обычно HTTP_REMOTE_USER).
Sunstone ищет пользователя с таким именем в базе OpenNebula и авторизует его без проверки пароля.
При этом значение пароля в базе данных OpenNebula не используется как секрет, а служит лишь идентификатором пользователя.
Чтобы перевести существующего пользователя на удалённую аутентификацию, необходимо изменить драйвер аутентификации пользователя на public и обновить пароль, указав внешний идентификатор пользователя:
$ oneuser chauth <логин> public "<логин>"
В качестве идентификатора, как правило, используется имя пользователя.
Создание нового пользователя с remote-аутентификацией:
$ oneuser create <логин> "<логин>" --driver public
Для активации этого метода необходимо изменить параметр
:auth: в файле конфигурации (
/etc/one/sunstone-server.conf):
:auth: remote
После изменения конфигурации требуется перезапустить сервис Sunstone:
# systemctl restart opennebula-sunstone
Вся ответственность за проверку подлинности пользователя лежит на внешнем компоненте (веб-сервере). Sunstone доверяет полученному имени пользователя без дополнительной проверки.
35.5.3.3. Аутентификация LDAP/AD
Аутентификация через LDAP или Active Directory настраивается на уровне ядра OpenNebula (см. раздел
LDAP аутентификация).
В Sunstone не требуется специальной настройки: параметр
:auth: должен оставаться равным
opennebula:
:auth: opennebula
Пользователь вводит логин и пароль в стандартной форме входа, а проверка выполняется через LDAP-драйвер OpenNebula.
35.5.3.4. Двухфакторная аутентификация
Двухфакторная аутентификация (2FA) повышает безопасность входа в систему, требуя не только логин и пароль, но и динамический одноразовый код, генерируемый приложением-аутентификатором (например, Google Authenticator, FreeOTP, Microsoft Authenticator и др.).
Включение двухфакторной аутентификации:
Войти в веб-интерфейс Sunstone.
Перейти в раздел → и нажать кнопку Настроить 2-факторную аутентификацию:
В открывшемся окне нажать Зарегистрировать приложение аутентификации:
Отсканировать QR-код с помощью приложения-аутентификатора и ввести шестизначный код подтверждения:
При входе в систему после ввода логина и пароля на странице входа будет запрошен шестизначный код из приложения-аутентификатора:
Чтобы отключить двухфакторную аутентификацию, необходимо перейти в раздел → , нажать кнопку
Настроить 2-факторную аутентификацию и в открывшемся окне нажать

: