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

Онбординг участника

·2 минуты·
Подключение нового участника начинается с решения администратора и одноразового 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 часов — он автоматически аннулируется. Администратор генерирует новый.

Что происходит после регистрации #

После успешного получения сертификата:

  1. Core-нода регистрирует свой IP-адрес и параметры в etcd через phone-home соединение.
  2. Управляющий кластер назначает ноду в ячейку.
  3. Администратор привязывает клиентские устройства участника к его Core-ноде.
  4. Entry-поды начинают маршрутизировать трафик этих клиентов.

Ротация сертификатов #

За 7 дней до истечения срока действия сертификата phone-home агент автоматически запрашивает продление:

  1. Генерирует новый CSR с тем же приватным ключом.
  2. Отправляет на управляющий кластер через действующее mTLS-соединение.
  3. Получает новый сертификат.
  4. Старый сертификат заменяется без перезапуска сервисов.

Join-токен при продлении не требуется — соединение уже аутентифицировано действующим сертификатом.

Отзыв и выход #

СобытиеДействие
Участник выходит из сетиАдминистратор отзывает сертификаты через управляющий кластер
Компрометация сервераНемедленный отзыв; участник перезапускает процедуру с новым токеном
Истечение срока (без продления)Сертификат аннулируется, Entry-поды перестают принимать соединение