Нюансы и пределы¶
Что механизм не обещает и где он ведёт себя не так, как кажется на первый взгляд. Для запуска читать необязательно — но лучше прочитать до того, как это выяснится на работающем сервере.
Вход зависит от доступности Alatyr — но только для ключей из реестра¶
Ваш сервер спрашивает Alatyr на каждый вход. Если сервер Alatyr недоступен, вход по ключу из реестра не пройдёт.
Именно поэтому обзор советует включать оба механизма: сертификат проверяется по подписи, без обращения к Alatyr, и продолжает пускать сотрудников, пока сервер Alatyr недоступен.
Если вы решили обойтись только реестром, предусмотрите две вещи:
- кеш последнего успешного ответа в скрипте
AuthorizedKeysCommand, чтобы короткая недоступность не закрывала вход; - аварийный ключ администратора в обычном
authorized_keys— он не зависит ни от чего.
Разрешённая сеть ограничивает, откуда спрашивают, но не о ком¶
Список подсетей в настройках Keyholder говорит, каким адресам можно обращаться. О ком спрашивать, он не ограничивает: любой хост из разрешённой сети может запросить ключи любого сотрудника, а не только «своего».
Это осознанный предел, а не недосмотр. Если такой границы вам мало, включите серверный токен: настройка, шаг 4.
Одна директива AuthorizedKeysCommand на область¶
У sshd одна такая директива на весь файл настроек плюс по одной внутри
каждого блока Match. Вторую в той же области он молча пропускает — не
ругается, не пишет в журнал, просто не выполняет.
Если на вашем сервере уже настроен другой источник ключей, читайте
«Совмещение с FreeIPA»: там разобран блок Match, и тем же
приёмом подключается любой другой источник ключей.
principal — это имя учётной записи, а не личность человека¶
Сервер сверяет имя, которое прислал агент, со списком разрешённых. Само по себе оно ничего не доказывает: это логин на машине сотрудника.
Привязать имя к подтверждённой личности помогает настройка «Требовать подтверждение identity у SSH-ключей» в разделе Настройки → SSH-ключи. У неё три значения: «Выключено», «Наблюдение» и «Обязательно». На «Наблюдении» вердикт записывается и виден в списке ключей, но регистрация проходит — это способ узнать, сколько устройств отсечёт строгое правило, до того как оно начнёт отказывать.
Если выбрано «Обязательно», сервер откажет в регистрации ключа, пока на том же
устройстве нет одобренного сертификата user_mtls, ad_logon или k8s — то
есть пока личность не подтверждена тем, что уже проверил человек.
У этого есть цена: на устройстве, где таких сертификатов нет и не будет, ключ не зарегистрируется никогда. Окно агента в этом случае покажет «Сервер отказал в регистрации ключа» и причину.
Каждый вход подтверждает сам сотрудник — и у подтверждения есть срок¶
Ключ ничего не подпишет, пока сотрудник не подтвердит присутствие: на его
рабочем столе появляется окно запроса, и ssh ждёт ответа. Пока окно висит,
вход не завершается — это не зависание, а ожидание человека.
У ожидания есть предел: около минуты. Если за это время подтверждения нет,
подпись отменяется, и ssh завершается ошибкой. Это выглядит так, будто вход
«долго думал и не пустил», хотя причина простая — окно осталось без ответа.
Подтвердил вовремя — вход проходит за секунды.
Отсюда практическое: ssh с этим ключом имеет смысл запускать там, где виден
рабочий стол сотрудника. В сценариях без экрана (задание по расписанию,
конвейер) подтвердить присутствие некому, и подпись не состоится по замыслу, а
не по ошибке.
Это про ОДНО подтверждение: сколько сотрудник ждёт ответа на один запрос.
Отдельно от этого — сколько последующих входов подряд обходятся без нового
запроса: это окно разблокировки,
своё на Windows (командой alatyr-agent ssh-grant-window, до 1440 минут) и на
macOS (кнопкой на уведомлении, не больше 5 минут — предел Touch ID), и его
общий потолок для парка задаётся в Настройки → Безопасность по умолчанию.
Отзыв не дотягивается до открытых сессий¶
Отзыв означает одно: Alatyr больше не ручается за ключ. Уже открытые соединения он не разрывает и ключ с устройства не стирает. Подробности и сроки — «Отзыв доступа».
Ключ живёт в чипе — и остаётся на той машине¶
Закрытая часть не извлекается, значит её нельзя ни украсть файлом, ни перенести на другую машину. Обратная сторона: сотруднику, сменившему устройство, нужен новый ключ — с новой регистрацией и новым одобрением. Переносить старый некуда.
Что дальше¶
- Настройка — вернуться к пошаговому порядку: что нажать в админке и что положить на ваш сервер.
- Отзыв доступа — забрать доступ и понять, когда это подействует.
- Реестр ключей и Keyholder API — разобраться в устройстве: эндпоинты, форматы, токены.