Перейти к содержанию

Отзыв доступа

Забрать у сотрудника SSH-доступ — одно действие в админке. Но подействует оно по-разному: смотря чем сотрудник входит. Это главное, что здесь нужно понимать.

Два действия, а не одно

Ключ из реестра и сертификат — разные сущности, и отзываются они разными действиями в разных разделах. Отозвать одно и считать, что доступ забран, — самая частая ошибка.

Что отзываете Где Что происходит
Ключ из реестра SSH-ключи → «Отозвать» Alatyr перестаёт отдавать его вашему серверу немедленно
Сертификат Сертификаты → «Отозвать» серийный номер попадает в список отзыва (KRL)

Список отзыва наполняется только отзывом сертификата. Кнопка в разделе «SSH-ключи» туда ничего не кладёт — ей это и не нужно, потому что ваш сервер спрашивает Alatyr о ключах на каждый вход.

Чтобы забрать доступ целиком, сделайте оба — иначе останется та половина, которую вы не тронули.

Если сотрудник уходит из компании, отзовите ещё и цель ssh у его устройства (Устройства → строка машины) либо отозвите устройство целиком. Пока цель назначена, машина вправе просить новые сертификаты.

Отозванный ключ обратно не включается

Повторно одобрить отозванный ключ нельзя — сервер ответит отказом. Сотруднику, которому доступ вернули, агент заведёт новый ключ, и его снова нужно будет одобрить.

Сам агент замену после отзыва не заводит: отзыв — решение администратора, и молча подсовывать взамен новый ключ значило бы превратить отказ в неудобство.

Когда это подействует

Чем входит сотрудник Когда перестанет пускать
Ключ из реестра немедленно — ваш сервер спрашивает Alatyr на каждый вход
Сертификат когда ваш сервер обновит список отзыва
Сертификат, если список не обновлять когда сертификат истечёт сам, не дольше 24 часов

Окно, в котором отозванный сертификат ещё пускает, равно интервалу обновления списка отзыва. Задание раз в час — окно до часа, раз в 15 минут — до 15 минут. Настройка ставит расписание на час: сертификат живёт сутки, и час в этот срок укладывается.

Доверяете сертификатам — настройте и список отзыва

Если на вашем сервере есть TrustedUserCAKeys, но нет RevokedKeys, забрать доступ вы не можете: отзовёте ключ, а впустит сертификат.

Выглядит это так:

Accepted publickey ... ECDSA SHA256:7wf4…       ← до отзыва: ключ из реестра
Accepted publickey ... ECDSA-CERT ... serial 19206…  ← после: сертификат

Ключ из реестра и сертификат — два разных механизма, и отзываются они по-разному.

Чем вошли на самом деле

sudo journalctl -u ssh | grep "Accepted publickey"   # RHEL и SUSE: -u sshd
# ECDSA       — ключ из реестра, отзывается мгновенно
# ECDSA-CERT  — сертификат, отзывается через список отзыва

Это первое, что стоит посмотреть, если отзыв «не сработал».

Чего отзыв не делает

  • Не разрывает открытые сессии. Кто уже вошёл, останется внутри до конца сессии. Если это неприемлемо, завершайте сессии на сервере отдельно.
  • Не стирает ключ с устройства. Закрытая часть остаётся в чипе рабочей машины. Она просто больше никому не нужна: Alatyr за неё уже не ручается.
  • Не отменяет доступ, выданный в обход Alatyr. Ключ, который кто-то руками дописал в authorized_keys, живёт своей жизнью. Если доступ сохраняется вопреки отзыву — проверьте этот файл.

Что дальше

  • Настройка — поставить обновление списка отзыва по расписанию, чтобы отзыв сертификата доходил до вашего сервера.
  • Нюансы и пределы — чего механизм не обещает, кроме описанного здесь.
  • Реестр ключей и Keyholder API — разобраться, какие бывают статусы ключа и как устроен реестр.