35.5. Настройка аутентификации
По умолчанию OpenNebula использует встроенную систему аутентификации на основе пары «пользователь/пароль». Учётные данные пользователей хранятся в базе данных OpenNebula.
Для интеграции с внешними системами (например, LDAP) могут быть подключены специализированные драйверы аутентификации. При этом допускается одновременное использование нескольких методов аутентификации, а для каждого пользователя можно указать свой способ входа.
Следует учитывать, что различные методы аутентификации поддерживают разные интерфейсы доступа (CLI, API, Sunstone).
Таблица 35.1. Интерфейсы и методы аутентификации
|
Метод аутентификации
|
Поддерживаемые интерфейсы
|
|
|
API, CLI, Sunstone
|
|
|
API, CLI, Sunstone
|
|
|
API, CLI
|
|
X.509
|
CLI, Sunstone
|
|
Аутентификация через Sunstone (remote)
|
Только Sunstone
|
Аутентификация через Sunstone (remote-аутентификация) используется преимущественно при интеграции с внешними системами идентификации и требует дополнительной настройки веб-сервера (например, Apache или Nginx), через который осуществляется доступ к Sunstone.
35.5.1. Аутентификация по SSH-ключам
Аутентификация по SSH-ключам позволяет пользователям взаимодействовать с OpenNebula через интерфейс командной строки (CLI) и API, используя стандартные SSH-ключи вместо паролей. При этом аутентификационный токен шифруется закрытым SSH-ключом пользователя, что повышает уровень безопасности и устраняет необходимость хранения паролей в открытом виде.
Данный метод аутентификации работает только для CLI и API и не применяется к веб-интерфейсу.
Поддерживаются только RSA-ключи (формат id_rsa).
Механизм аутентификации по SSH включён в OpenNebula по умолчанию (см. раздел AUTH_MAD в файле
/etc/one/oned.conf):
…
AUTH_MAD = [
EXECUTABLE = "one_auth_mad",
AUTHN = "ssh,x509,ldap,server_cipher,server_x509"
]
35.5.1.1. Генерация SSH-ключа пользователем
Пользователь генерирует пару SSH-ключей:
$ ssh-keygen -t rsa
Рекомендации:
не следует изменять путь по умолчанию ($HOME/.ssh/id_rsa), так как OpenNebula ищет ключ именно там;
закрытый ключ рекомендуется защитить парольной фразой (passphrase).
35.5.1.2. Создание нового пользователя
Создание нового пользователя:
Пользователь генерирует публичную часть ключа для передачи администратору:
$ oneuser key
Enter old passphrase:
MIIBCAKCAQEApUO+JISjSf02rFVtDr1yar/34EoUoVETx0n+RqWNav+5wi+gHiPp3e03AfEkXzjDYi8F
...
Полученную строку необходимо передать администратору облака.
35.5.1.3. Перевод существующего пользователя на SSH-аутентификацию
Для существующего пользователя можно изменить метод аутентификации и задать публичный ключ:
$ oneuser chauth newuser ssh
$ oneuser passwd newuser --ssh --read-file /tmp/pub_key
35.5.1.4. Генерация аутентификационного токена
Перед использованием CLI пользователь должен сгенерировать аутентификационный токен:
$ oneuser login newuser --ssh
Enter old passphrase:
* Do you want to overwrite the file /home/newuser/.one/one_auth? (Y|N):
y
overwriting /home/user/.one/one_auth ...
Authentication Token is:
newuser:062ca55c97e0e327a50d1027f59cdedc68495cb836ddeebc68d1ffd4eb293cab
Команда
oneuser login:
использует закрытый ключ $HOME/.ssh/id_rsa (если не указан иной путь);
сохраняет токен в файл, заданный переменной окружения ONE_AUTH (по умолчанию — $HOME/.one/one_auth);
устанавливает время жизни токена — 10 часов.
Чтобы указать другой SSH-ключ или изменить срок действия токена, можно использовать параметры:
$ oneuser login newuser --ssh --key /path/to/id_rsa --time 3600
Если токен утерян или скомпрометирован, достаточно дождаться окончания срока его действия либо сменить SSH-ключ и сгенерировать новый токен.