Двухфакторная аутентификация (2FA)¶
KeyStack использует mTLS (mutual TLS) в качестве механизма двухфакторной аутентификации для повышения безопасности доступа к системе. При включённой двухфакторной аутентификации пользователи должны предоставить два фактора:
Клиентский сертификат (первый фактор) — подтверждает, что запрос исходит с доверенного устройства.
Учётные данные (второй фактор) — логин и пароль пользователя.
Включение двухфакторной аутентификации¶
Для активации двухфакторной аутентификации в регионе KeyStack выполните следующие действия:
Откройте веб-интерфейс GitLab.
Перейдите в репозиторий региона project_k / deployments / <имя региона>.
Отредактируйте файл конфигурации региона
globals.d/REGION.yml. Добавьте или измените следующие параметры:kolla_enable_mtls_external: yes kolla_enable_tls_external: yes
Примечание
Параметр
kolla_enable_tls_externalобеспечивает шифрование соединения (HTTPS), аkolla_enable_mtls_externalактивирует взаимную аутентификацию клиента и сервера через сертификаты.
Файл REGION.yml в GitLab вашего региона¶
Создайте новый пайплайн: .
В открывшемся окне добавьте значение переменной
KOLLA_ARGSравное-t haproxy,horizon.Запустите пайплайн, нажав кнопку New pipeline.
Окно создания нового пайплайна¶
Развёртывание обновит конфигурацию прокси-сервера HAProxy для поддержки mTLS и перенастроит веб-интерфейс Horizon.
После успешного выполнения развёртывания двухфакторная аутентификация будет активна для всех внешних подключений к региону.
Отключение двухфакторной аутентификации¶
Для отключения двухфакторной аутентификации выполните следующие шаги:
Откройте веб-интерфейс GitLab.
Перейдите в репозиторий региона project_k / deployments / <имя региона>.
Отредактируйте файл конфигурации региона
globals.d/REGION.yml, изменив параметры:kolla_enable_mtls_external: no kolla_enable_tls_external: yes
Предупреждение
Не рекомендуется отключать параметр
kolla_enable_tls_external, так как это приведёт к передаче данных (включая пароли) в незашифрованном виде.
Файл REGION.yml в GitLab вашего региона¶
В левой панели меню выберите раздел .
В поле переменной
KOLLA_ARGSвведите значение-t haproxy,horizon.Запустите пайплайн, нажав кнопку New pipeline.
Окно создания нового пайплайна¶
Генерация клиентского сертификата через LCM¶
Для работы с двухфакторной аутентификацией каждому пользователю необходим персональный клиентский сертификат. Генерация сертификатов выполняется через веб-интерфейс HashiCorp Vault, интегрированный в LCM.
Получение корневого сертификата¶
Войдите в хранилище секретов Vault и перейдите в директорию secret_v2 / deployments / <LCM FQDN> / secrets / ca.crt.
Страница с файлом ca.crt в Vault¶
Скачайте корневой сертификат
ca.crt.Установите корневой сертификат в хранилище доверенных корневых центров сертификации вашей операционной системы:
Windows: откройте скачанный файл, нажмите Установить сертификат и выберите хранилище «Доверенные корневые центры сертификации».
Linux: скопируйте сертификат в директорию
/usr/local/share/ca-certificates/и выполните командуupdate-ca-certificates.macOS: откройте приложение «Связка ключей» (Keychain Access), перетащите сертификат в раздел «Система» и отметьте его как доверенный.
Генерация клиентского сертификата¶
Войдите в хранилище секретов Vault и перейдите в интерфейс генерации сертификатов по адресу installer / Roles / certs.
Страница роли certs в Vault¶
Нажмите Generate Certificate.
Форма генерации сертификата в Vault¶
В форме генерации сертификата заполните поле Common name:
client.<LCM FQDN>, где<LCM FQDN>— полное доменное имя региона KeyStack.Важно
Common name (CN) должен строго соответствовать формату
client.<домен региона>. Это обязательное требование системы безопасности KeyStack для валидации сертификата.Установите параметры сертификата:
TTL: выберите срок действия сертификата (по умолчанию: 365 дней).
Format: оставьте значение
pem.Private key format: оставьте значение
pem.
Нажмите Generate для создания сертификата.
Сохраните полученные данные:
Certificate — сохраните содержимое в файл
cert.pem.Private key — сохраните содержимое в файл
key.pem.
Предупреждение
Обязательно сохраните приватный ключ сразу после генерации. Повторно получить его через интерфейс Vault будет невозможно.
Подготовка сертификата для браузера¶
Для использования сертификата в веб-браузере необходимо преобразовать пару «сертификат + ключ» в формат PKCS#12:
Зайдите на узел LCM по SSH.
$ ssh <Имя пользователя>@ks-lcm.<REGION FQDN>.itkey.com -i id_rsa # Либо указываете прямой путь до вашего публичного .pub ssh-ключа
Предупреждение
Убедитесь что у вас уже создан ssh-ключ и его публичное содержимое из файла .pub было добавлено на LCM в файл -
~/.ssh/authorized_keys.Объедините сертификат и ключ в один файл:
$ cat cert.pem > pkcs12.pem $ echo >> pkcs12.pem $ cat key.pem >> pkcs12.pem
Создайте файл в формате PKCS#12:
$ openssl pkcs12 -in pkcs12.pem -export -out client.p12
При выполнении команды система запросит ввод пароля для защиты файла экспорта. Этот пароль потребуется при импорте сертификата в браузер.
Импорт сертификата в браузер¶
Процесс импорта различается в зависимости от используемого браузера:
Откройте настройки браузера.
Перейдите в раздел .
Выберите вкладку Личные (или Your certificates в английской версии).
Нажмите Импорт и выберите файл
client.p12.Введите пароль, который вы указали при создании файла в формате PKCS#12.
Сертификат будет добавлен в хранилище браузера.
Откройте настройки браузера.
Перейдите в раздел .
Нажмите Просмотр сертификатов.
На вкладке Ваши сертификаты нажмите Импортировать.
Выберите файл
client.p12и введите пароль.
Дважды щёлкните на файле
client.p12в Finder.Введите пароль для импорта в «Связку ключей».
Сертификат будет добавлен и готов к использованию.
Использование двухфакторной аутентификации¶
Доступ через веб-интерфейс¶
При включённой двухфакторной аутентификации процесс входа в Horizon или AdminUI происходит следующим образом:
При переходе по адресу
https://<REGION FQDN>браузер отобразит системное окно выбора сертификата.Выберите ранее импортированный клиентский сертификат. В списке отобразится информация:
Тема (Subject): должна содержать
client.<REGION FQDN>.Издатель: KeyStack Root CA.
Срок действия: даты начала и окончания действия сертификата.
После выбора сертификата нажмите OK.
На странице аутентификации введите имя пользователя и пароль вашей учётной записи KeyStack.
После успешной проверки обоих факторов (сертификат + пароль) вы получите доступ к системе.
Примечание
Браузер может запомнить выбор сертификата для данного сайта. При последующих входах окно выбора сертификата может не появляться автоматически.
Доступ через OpenStack CLI¶
Для работы с командной строкой OpenStack (CLI) при включённой двухфакторной аутентификации необходимо явно указывать пути к сертификатам. Используйте следующий синтаксис:
$ openstack --os-cacert <CA_CERT> --os-cert <CLIENT_CERT> --os-key <CLIENT_KEY> <команда>
Параметры команды:
[--os-cacert <ca-cert>]— путь к файлу корневого сертификата или цепочке сертификатов (CA).
[--os-cert <client-cert>]— путь к файлу клиентского сертификата (PEM).
[--os-key <client-key>]— путь к файлу приватного ключа клиента.
Пример использования:
$ openstack --os-cacert /path/to/ca.crt \
--os-cert /path/to/cert.pem \
--os-key /path/to/key.pem \
server list
Для удобства повседневной работы пути к сертификатам можно экспортировать в переменные окружения, чтобы не указывать их в каждой команде:
$ export OS_CACERT=/path/to/ca.crt
$ export OS_CERT=/path/to/cert.pem
$ export OS_KEY=/path/to/key.pem
$ openstack server list
Требования к клиентскому сертификату¶
Клиентский сертификат для корректной работы с двухфакторной аутентификацией должен соответствовать следующим техническим требованиям:
Центр сертификации (Issuer): сертификат должен быть подписан корневым CA региона KeyStack.
Common Name (CN): поле CN в Subject должно строго соответствовать формату
client.<REGION FQDN>(где<REGION FQDN>— основной домен региона).Расширения использования ключа (Key Usage):
Цифровая подпись (Digital Signature).
Шифрование ключей (Key Encipherment).
Расширенное использование ключа (Extended Key Usage):
Проверка подлинности сервера (Server Authentication, OID:
1.3.6.1.5.5.7.3.1).Проверка подлинности клиента (Client Authentication, OID:
1.3.6.1.5.5.7.3.2).
Срок действия: сертификат должен быть валидным на момент проверки (дата
Not Afterне наступила).
Устранение проблем¶
Браузер не предлагает выбрать сертификат:
Убедитесь, что сертификат корректно импортирован в «Личное» хранилище сертификатов браузера.
Проверьте срок действия сертификата.
Попробуйте очистить кеш SSL в браузере или использовать режим «Инкогнито».
Убедитесь, что в конфигурации региона действительно применён параметр
kolla_enable_mtls_external: yes.
Ошибка «Сертификат не подходит» или 400 Bad Request:
Проверьте, что CN сертификата точно соответствует формату
client.<REGION FQDN>.Убедитесь, что сертификат подписан именно тем CA, который установлен в KeyStack.
OpenStack CLI возвращает ошибку SSL:
Убедитесь, что указаны правильные абсолютные пути к файлам сертификатов.
Проверьте права доступа: текущий пользователь ОС должен иметь права на чтение файлов
key.pemиcert.pem.Убедитесь, что
OS_CACERTуказывает на актуальный корневой сертификат региона.