- Коннектор → BusinessProxy API: исходящий TCP 443 для HTTPS, WebSocket upgrade и raw tunnel upgrade. Публичная копия описывает production как HTTPS/TLS.
- Коннектор → internal upstream: внутренний TCP к каждому upstream URL приложения, обычно 80/443, но зависит от upstream.
- Внешний пользователь → alias: HTTPS 443 к alias host.
- Нет inbound connector port: не открывайте публичный порт к коннектору.
- DNS: хост коннектора должен резолвить и домен BusinessProxy API, и внутренние upstream hostnames.
Connector Бета
Исходящий коннектор, который работает внутри вашей сети
Коннектор — небольшой Go runtime, который вы запускаете рядом с внутренним веб-приложением. Он аутентифицируется workspace-scoped runtime-токеном, сам дозванивается до BusinessProxy по TLS, держит постоянный туннель и передаёт alias-запросы к реальному upstream. Входящие порты под него открывать не нужно.
Private App Access находится в Бета. Это ранний доступ с поддержкой продаж, пока мы завершаем production hardening и evidence на реальных upstream-приложениях. Мы не включаем пилот, пока connector, alias, diagnostics и revoke-проверки не пройдут для вашего целевого приложения.
Runbook
Runbook коннектора кратко
| Тема | Описание |
|---|---|
| Что вы запускаете | Один Go-процесс коннектора, как container или static binary, внутри вашей сети или VPC. |
| Сеть | Исходящий HTTPS/TLS к BusinessProxy API. Входящий listener для коннектора не нужен. Коннектору также нужен внутренний DNS/TCP/TLS-доступ к upstream-приложениям, которые он обслуживает. |
| Привязка приложений в V1 | Каждому private app назначается один primary connector. Переназначение явное и ограничено workspace. |
| Модель токена | Runtime token показывается один раз, хранится на сервере как hash и действителен только для точной пары workspace + connector. |
| Туннель | Коннектор открывает исходящий туннель через WebSocket или raw upgrade. HTTP streams и WebSocket-трафик используют этот туннель, когда он подключён. |
| Fallback | Если tunnel не обязателен, обычный HTTP может использовать bounded relay fallback. Upgrade-трафик всё равно требует живой tunnel. |
| Здоровье | Ready означает status online и свежий heartbeat. Draining/offline/stale/missing fail-closed. |
| Drain | Используйте draining перед maintenance. Drain не отзывает активные сессии без явного session revoke. |
| Diagnostics | Кнопка Check в кабинете ставит connector-side diagnostic для DNS, TCP, TLS и HTTP. Вывод санитизирован. |
Окружение
Необходимое окружение
Не печатайте реальные токены в документации, скриншотах или тикетах. Используйте placeholder’ы.
BUSINESSPROXY_API_URL=https://<businessproxy-site>/api CONNECTOR_WORKSPACE_ID=<workspace id> CONNECTOR_ID=<connector id> CONNECTOR_TOKEN=<one-time runtime token from cabinet> CONNECTOR_VERSION=0.1.0 CONNECTOR_STATUS=online CONNECTOR_HEARTBEAT_INTERVAL=30s CONNECTOR_DRAIN_ON_EXIT=true CONNECTOR_HTTP_TIMEOUT=5s CONNECTOR_RELAY_POLL_TIMEOUT=25s CONNECTOR_RELAY_MAX_BODY_BYTES=5242880 CONNECTOR_TUNNEL_ENABLED=true CONNECTOR_TUNNEL_CONNECTIONS=1 CONNECTOR_TUNNEL_PING_INTERVAL=30s CONNECTOR_TUNNEL_MAX_STREAMS=128 CONNECTOR_TUNNEL_MAX_CHUNK_BYTES=65536
Создайте или поверните token коннектора в кабинете workspace, сразу сохраните его в secret manager и перезапустите коннектор с новым значением. Кабинет больше не покажет этот token.
Сеть
Порты и сеть
Готовность
Состояния здоровья и drain
Ротация
Ротация и обслуживание
Поверните token в кабинете или API.
Сохраните новый token в secret store хоста коннектора.
Перезапустите коннектор с новым CONNECTOR_TOKEN.
Убедитесь, что readiness = Ready и heartbeat свежий.
Если maintenance требует обрыва доступа, включите revoke_active_sessions при смене статуса connector или update приложения. Drain сам по себе не отзывает активные alias sessions.
Отказ
Когда коннектор отказывает
Не обходите ошибки коннектора, открывая internal upstream напрямую. Private App Access должен оставаться fail-closed через alias и connector path. Если ошибка блокирует пилот, соберите санитизированный connector status, readiness, diagnostic result и timestamp. Не добавляйте runtime tokens, token hashes, internal upstream, private IP или custom CA material в тикеты.
