Доступ по VPN¶
Что это такое и что вам даёт¶
Alatyr выдаёт сотруднику клиентский сертификат для OpenVPN — цель vpn.
Закрытый ключ создаётся в чипе устройства и оттуда не извлекается, а клиент
OpenVPN берёт личность прямо из чипа.
Заменяется этим одна практика: выгружаемый .p12 или пара «ключ + сертификат»
файлами, отправленная сотруднику.
| Ключ-файл, розданный руками | Цель vpn в Alatyr |
|
|---|---|---|
| Где лежит закрытый ключ | файлом у сотрудника — его копирует каждая резервная копия и каждый клон образа | в чипе устройства: TPM на Windows и Linux, Secure Enclave на Mac |
| Можно ли перенести доступ на другую машину | да, копированием файла | нет: ключ не покидает чип |
| Кто разрешил доступ | тот, кто отправил файл | администратор, одобривший заявку в админке |
| Как забрать доступ | собрать файлы обратно, что невозможно | отзыв сертификата у УЦ Alatyr |
Почему это отдельная цель, а не user_mtls¶
Заявка и запрос на сертификат у них одинаковой формы, и соблазн выдать один сертификат на обе цели есть. Разведены они намеренно:
- Разные приёмники и разная цена ошибки. Приёмник mTLS — веб-приложение за обратным прокси, приёмник VPN — сервер доступа в сеть.
- Отзыв не должен задевать соседа. Один сертификат на две цели означал бы, что отзыв доступа к внутреннему сайту отбирает и доступ в сеть, и наоборот.
- Лицензия считает места по цели. Объединение спрятало бы половину использования.
- Ключ тоже не делится. Два сертификата на одном ключе неразличимы для
того, кто ключ открывает; этот отказ уже случался на смарт-карте, причём
молча с обеих сторон. У цели
vpnсвой ключ и свой ярлык.
Как это работает¶
flowchart LR
A["Агент Alatyr<br/>ключ в чипе"] --> S["Сервер Alatyr<br/>выдача и отзыв"]
S -- "сертификат цели vpn" --> A
A -. "личность из чипа" .-> C["Клиент OpenVPN<br/>на машине сотрудника"]
C -- "TLS-рукопожатие" --> V["Ваш сервер OpenVPN<br/>ca + crl-verify"]
Личность человека, а не машины: сертификат выдаётся тому, кто подключается, и
сервер сверяет заявку с ним, а не с учётной записью устройства. Поэтому заявка
на vpn — всегда решение человека: сервисному аккаунту цель vpn не разрешена
по умолчанию, её приходится выдавать токену явным списком.
Способ, которым клиент берёт личность, у платформ разный — и это не настройка, а разные механизмы:
| Linux | Windows | macOS | |
|---|---|---|---|
| Где ключ | токен PKCS#11 поверх TPM (tpm2-pkcs11) |
контейнер CNG alatyr-agent-vpn, Microsoft Platform Crypto Provider |
Secure Enclave |
| Как клиент его находит | pkcs11-providers + pkcs11-id |
cryptoapicert "THUMB:<отпечаток>" из CurrentUser\My |
интерфейс управления openvpn: хэш рукопожатия подписывает агент (alatyr-agent vpn serve-key) |
| Клиент | openvpn 2.6 из пакетов |
community OpenVPN GUI | openvpn 2.5+ из командной строки (homebrew или сборка из Tunnelblick) |
| Спрашивается ли PIN | да, PIN токена | нет | нет |
Отчёт alatyr-agent vpn |
есть | есть | есть |
На Windows цели vpn не нужны ни считыватель, ни смарт-карта: ключ — это
ключ TPM в контейнере CNG, а не карта. Поэтому всё, что касается драйвера
считывателя и входа по карте, на VPN не влияет.
Сертификат адресуется отпечатком, а не субъектом: у целей user_mtls,
k8s и vpn субъект — один и тот же корпоративный адрес, и поиск по субъекту
нашёл бы первый попавшийся сертификат, то есть чужой цели.
Что делает Alatyr и что остаётся вам¶
| Половина | Кто делает |
|---|---|
| Ключ в чипе, заявка, одобрение, выдача, отзыв, журнал | Alatyr |
| Отчёт о готовности и строки для профиля клиента | Alatyr (команда alatyr-agent vpn) |
Сам профиль клиента: remote, ca, маршруты, политика |
Вы |
Сервер OpenVPN, включая crl-verify со свежим списком отзыва |
Вы |
Профиль клиента продукт не пишет и не переписывает: у вас свой сервер
доступа, свои сети и своя политика, и сочинять за вас remote и ca значило
бы выдавать догадку за настройку. Команда печатает ровно те строки, которые
описывают ключ Alatyr, — их вы добавляете в свой профиль сами.
Ключ не спрашивает подтверждения человеком¶
Туннель поднимается службой или вручную, и запрос биометрии на каждое
рукопожатие сделал бы необслуживаемый режим невозможным. Поэтому ключ цели
vpn не закрыт подтверждением присутствия ни на одной платформе — намеренно и
одинаково везде.
Куда идти дальше¶
| Если вам нужно | Читайте |
|---|---|
| Настроить цель с нуля: что нажать в админке и что сделать на машине | Настройка |
| Настроить серверную сторону OpenVPN | Приёмники сертификатов |
| Узнать, где путь упирается в клиента, а не в Alatyr | Нюансы и пределы |