Онбординг участника
Содержание
Подключение нового участника начинается с решения администратора и одноразового join-токена. Всё остальное — генерация ключей, выпуск сертификата, регистрация в сети — выполняется автоматически на стороне участника.
Принципы #
- Решение администратора — единственный критерий допуска. Технических ограничений на онбординг нет.
- Ключ не покидает сервер — приватный ключ генерируется локально и никогда не передаётся наружу.
- Токен одноразовый — использован один раз и немедленно сгорает.
- Минимум действий от участника — установить Docker, запустить контейнер с токеном.
Жизненный цикл join-токена #
sequenceDiagram
participant Admin as Администратор
participant Bot as Telegram-бот
participant Part as Участник
participant Srv as Сервер участника
participant M as Управляющий кластер
Admin->>Bot: Выдать join-токен для участника X
Bot->>M: Сгенерировать токен (24ч, одноразовый)
M-->>Bot: Токен
Bot-->>Admin: Токен
Admin->>Part: Передача токена (личный канал)
Part->>Srv: docker run ... --join-token=
Srv->>Srv: Генерация ключевой пары
Srv->>M: CSR + токен
M->>M: Проверка токена
M->>M: Подпись CSR
M->>M: Токен сожжён
M-->>Srv: mTLS-сертификат
Srv->>M: Регистрация адреса в etcd
Безопасность первого соединения #
До получения mTLS-сертификата контейнер не имеет внутреннего сертификата. Первое соединение с управляющим кластером (передача CSR + токена) защищено:
- TLS с пиннингом — публичный ключ управляющего кластера зашит в образ контейнера. Контейнер не примет сертификат от неизвестного сервера.
- Токен как аутентификатор — сам токен является достаточным секретом: знание токена подтверждает легитимность запроса.
Срок действия токена #
| Параметр | Значение |
|---|---|
| Время жизни | 24 часа с момента генерации |
| Использований | 1 (сгорает немедленно после применения) |
| Привязка | К конкретному участнику (фиксируется в etcd) |
Если токен не был использован в течение 24 часов — он автоматически аннулируется. Администратор генерирует новый.
Что происходит после регистрации #
После успешного получения сертификата:
- Core-нода регистрирует свой IP-адрес и параметры в etcd через phone-home соединение.
- Управляющий кластер назначает ноду в ячейку.
- Администратор привязывает клиентские устройства участника к его Core-ноде.
- Entry-поды начинают маршрутизировать трафик этих клиентов.
Ротация сертификатов #
За 7 дней до истечения срока действия сертификата phone-home агент автоматически запрашивает продление:
- Генерирует новый CSR с тем же приватным ключом.
- Отправляет на управляющий кластер через действующее mTLS-соединение.
- Получает новый сертификат.
- Старый сертификат заменяется без перезапуска сервисов.
Join-токен при продлении не требуется — соединение уже аутентифицировано действующим сертификатом.
Отзыв и выход #
| Событие | Действие |
|---|---|
| Участник выходит из сети | Администратор отзывает сертификаты через управляющий кластер |
| Компрометация сервера | Немедленный отзыв; участник перезапускает процедуру с новым токеном |
| Истечение срока (без продления) | Сертификат аннулируется, Entry-поды перестают принимать соединение |