Перейти к основному содержанию
Когда ключ утёк, подрядчик завершает работу или токен просто устаревает, вам нужно сменить учётные данные на зарегистрированном MCP-сервере без сноса записи сервера, переписывания его правил firewall или прерывания агентов, уже подключённых через шлюз. Именно это и есть ротация: вы обновляете аутентификацию на существующем сервере, и MCP-шлюз начинает внедрять новый секрет уже на следующем tools/call, который он диспетчит. Аутентификация каждого сервера шифруется в покое и маскируется при чтении, так что открытый токен никогда не возвращается в вашу консоль, к вашим агентам или к модели. Ротация — это обновление одного поля через консоль рабочего пространства.

1. Почему ротация секрета MCP — отдельное действие

Зарегистрированный MCP-сервер хранит три вещи, которые вы не хотите терять при смене учётных данных: уникальное в рамках рабочего пространства name (пространство имён <server>.<tool>, против которого ваши правила работают по глобу), endpoint и его обнаруженный набор инструментов. Удаление и пересоздание сервера ради смены токена осиротило бы каждое правило, ограниченное <server>.*, и потребовало бы свежего зондирования (probe). Ротация обходит всё это. Вы делаете PUT той же записи сервера с новым auth_json; всё остальное — имя, правила, обнаруженные инструменты — остаётся на месте.
Шлюз внедряет учётные данные во время диспетча, расшифровывая их только для выполнения upstream-вызова. Ротированный секрет вступает в силу на следующем подключении — OrcaRouter инвалидирует per-workspace кэш инструментов при каждом изменении сервера, так что ждать истечения TTL не нужно.

2. Один конкретный пример ротации

Допустим, вы зарегистрировали MCP-сервер с именем github и bearer-токеном, и этот токен нужно сменить. Сначала прочитайте текущую запись — ответ маскирует секрет, так что вы никогда не работаете со старым открытым текстом:
# Настройте из консольной сессии (UserAuth), а не из relay-ключа.
curl https://api.orcarouter.ai/api/workspace/firewall/mcp_servers/42 \
  -H "Authorization: Bearer <your console access token>"
Затем сделайте PUT той же записи с только новыми учётными данными. Отправьте id в теле и свежий auth_json; шлюз перешифрует его, прежде чем он коснётся базы данных:
curl -X PUT https://api.orcarouter.ai/api/workspace/firewall/mcp_servers \
  -H "Authorization: Bearer <your console access token>" \
  -H "Content-Type: application/json" \
  -d '{
    "id": 42,
    "auth_json": "{\"token\":\"ghp_NEW_token\"}"
  }'
Поля, которые вы опускаете, остаются нетронутыми — name, endpoint, auth_mode и enabled сохраняют свои хранимые значения. Новый токен активен на следующем tools/call.
Верните маску, чтобы сохранить секрет; отправьте реальное значение, чтобы его изменить. Если вы прочитали запись и сделали PUT обратно дословно, маскированный плейсхолдер в auth_json распознаётся как «сохранить то, что хранится» — секрет не перезаписывается маской. Только действительно новый auth_json ротирует учётные данные.

3. Смена режима аутентификации, а не только секрета

Ротация также покрывает перевод сервера между схемами аутентификации. Закрытый набор значений auth_mode:
Без учётных данных. auth_json пуст. Используйте для публичных или доверенных в сети MCP-серверов.
{ "token": "…" } — отправляется как заголовок Authorization: Bearer.
{ "client_id": "…", "client_secret": "…", "token_url": "…" }. Если вы храните статический access_token в JSON, шлюз отправляет его как bearer-токен; сам обмен client-credentials пока не выполняется, так что сервер, которому нужен живой обмен, будет давать сбой, пока вы не предоставите токен.
{ "username": "…", "password": "…" } — HTTP basic auth.
Переключение между двумя режимами с учётными данными (например, bearerbasic) требует отправки свежего auth_json в том же запросе. Хранимый шифротекст привязан к своему исходному режиму, так что старый секрет нельзя переинтерпретировать под новой формой — предоставьте новые учётные данные, иначе обновление будет отклонено.

4. После ротации: повторное зондирование

Ротированные учётные данные меняют то, какие инструменты вам доступны, если старый токен был отозван. Зондируйте (probe) сервер, чтобы подтвердить, что новая аутентификация работает, и обновить его status достижимости:
curl -X POST \
  https://api.orcarouter.ai/api/workspace/firewall/mcp_servers/42/probe \
  -H "Authorization: Bearer <your console access token>"
Зонд выполняет MCP-рукопожатие с новыми расшифрованными учётными данными и сообщает ok, degraded или down. Сбой аутентификации всплывает здесь, а не как сбивающая с толку ошибка инструмента посреди прогона.

5. Роли и что остаётся замаскированным

Каждое действие на этой странице — это консольный вызов в рамках рабочего пространства (/api/workspace/firewall/mcp_servers, UserAuth) с ограничением по роли:
ДействиеМинимальная роль
Чтение сервера (секрет замаскирован)Member
Ротация / обновление / регистрацияDeveloper+
УдалениеDeveloper+
Открытый текст никогда не возвращается в вашу консоль. Чтение маскирует секрет и редактирует эндпоинт; шлюз — единственное, что расшифровывает учётные данные, и только в момент, когда он дозванивается до upstream-сервера. Модель и ваши агенты не видят ни старого, ни нового токена.

6. Куда это вписывается

Ротация — это одна операция в более широкой плоскости доверия MCP. Как только ваши серверы подключены и аутентифицированы, тот же шлюз оценивает каждый tools/call по вашей политике firewall, прежде чем он запустится, накладывает сверху карантин навыков и управляет исходящим охватом.

Подключить сервер

Зарегистрируйте MCP-сервер и зондируйте его инструменты.

Аутентификация

Выберите правильный режим аутентификации для каждого сервера.

Список разрешённых MCP-инструментов

Ограничьте, какие инструменты может выставлять каждый сервер.

Лимиты egress

Управляйте тем, куда могут обращаться вызовы инструментов.
См. Firewall: MCP Servers для полного жизненного цикла сервера и чек-лист доверия MCP для сквозного прохода по усилению защиты. Ротация — это также постоянный пункт против отравления MCP-инструментов и эксфильтрации данных: учётные данные, которые можно быстро сменить, — это учётные данные, на которых утечка не сможет засидеться.

FAQ

Нет. Ротация меняет только учётные данные. Сервер сохраняет своё name, так что каждое правило, ограниченное <server>.* — и любой список разрешённых — остаётся привязанным.
Новый секрет внедряется на следующем диспетчированном tools/call. Ждать истечения TTL кэша не нужно — OrcaRouter инвалидирует кэш инструментов рабочего пространства при каждом изменении сервера.
Нет — и в этом весь смысл. Чтение возвращает замаскированный секрет; открытый текст расшифровывается только шлюзом при диспетче. Ротируйте, отправив новое значение, затем зондируйте, чтобы убедиться, что оно работает.