Три боли без шлюза
- Секреты на N Mac — утечки в логах.
- Частичные статусы — нет
mesh_node_idи фазы. - GraphQL — дубли без backoff и ротации.
Матрица «кто держит доверие»
Где живут секрет webhook и API токен до прода.
| Вариант | Плюсы | Минусы |
|---|---|---|
| Шлюз OpenClaw | Один URL для Monday один аудит подписи и ротации | Нужна очередь и согласованный деплой мультиузла |
| Webhook на каждом Mac | Меньше сервисов в центре | N поверхностей утечки сложный firewall и ротация |
Конфигурация исходящей подписи и аутентификации Monday.com
Monday зовёт ваш URL из облака это недоверенный ingress. Нужны секрет подписи и при необходимости URL challenge до потока событий.
- Канареечная доска webhook или call URL на
https://gateway.example/monday/openclawchallenge ответьте минимальным JSON. - Верификатор OpenClaw заголовок
X-Meshmac-Monday-Secretили HMAC сырого тела файл0440сравнение за постоянное время иначе401. - Предикаты по колонке статусу лог
event.userIdpulse board без секретов. - Ротация секрета dual-read на шлюзе окно обслуживания смена в Monday снятие старого как в CI.
Не кладите GraphQL токен в URL webhook. Входящий секрет отдельно от API токена сводок.
Для приёмки включите канареечный item и снимите tcpdump только на тестовом стенде либо используйте зеркальный ingress с synthetic event прежде чем подключать продовую доску. Любой лог должен хранить board id pulse id и digest подписи без значения секрета.
Маршрутизация приёма на шлюзе
Один маршрут OpenClaw TLS на edge сырое тело для подписи. POST /monday/openclaw Mac без публичных URL в Monday.
- Doctor и health
openclaw gateway doctorна ingress. - Нормализация
pulse_idboard_idrefcorrelation_idнеизвестное200no-op. - Очередь idempotency pulse плюс тип плюс короткое окно
200после commit. - Метаданные listener version policy
mesh_node_idпосле claim.
LB перед hostname синхронный конфиг шлюзов см. деплой мультиузла. Если стоит корпоративный MITM выпустите доверенный корень только на сегменте шлюза иначе проверка цепочки TLS для исходящих вызовов Monday сломается отдельно от входящего webhook.
Политика fail-closed validate должна отклонять расширение allowlist без review чтобы случайный патч прокси не отключил проверку подписи на одном из узлов кластера ingress.
Шаблон слияния статусов мультиузла
Одно сообщение на pulse с тем же окном idempotency. Таблица mesh_node_id фазы queued running passed failed SHA очередь.
## Сборка {{ pulse_name }} ({{ correlation_id }})
| Узел | Фаза | Коммит | С момента enqueue |
|------|------|--------|-------------------|
{{#rows}}
| {{ mesh_node_id }} | {{ phase }} | {{ short_sha }} | {{ wait_ms }} ms |
{{/rows}}
Обновлено {{ utc_ts }}Z — шлюз {{ policy_revision }}
Одна мутация Monday колонка CI или заметка воркеры JSON наружу только шлюз. Все зелёные свернуть строку при fail развернуть сводку.
Добавьте в шаблон policy_revision и версию форматтера чтобы саппорт видел какой код рендерил карточку когда пользователь присылает скриншот из Monday спустя сутки после инцидента.
Backoff при отказах и принцип минимальных привилегий
GraphQL backoff джиттер 429 401 5xx уважать Retry-After на 401 сначала ротация.
monday_graphql_retry:
max_attempts: 6
base_delay_ms: 500
max_delay_ms: 45000
jitter_ratio: 0.3
retry_on_status: [408, 409, 425, 429, 500, 502, 503, 504]
no_retry_on_status: [400, 401, 403, 404]
respect_retry_after: true
Сводка цель хвост логов без секретов commit mesh_node_id ссылка на run viewer. Токен на шлюзе 0440 scopes доски сборщики без Monday API.
Если Monday возвращает GraphQL userRateLimit уменьшите частоту обновлений колонки и включите локальный кеш последнего успешного состояния чтобы не дергать API на каждый микрошаг раннера.
Ротация новый personal token dual-write файл dry-run revoke старый документируйте окно в тикете вместе с владельцем секрета webhook чтобы два разных человека не отозвали друг друга в пятницу вечером.
Чеклист воспроизведения и заметки по безопасности
- Канареечная доска TLS извне challenge секрет
0440verify до parse. POST /monday/openclawdurable enqueue idempotency200после commit.- Merge один форматтер сбой GraphQL backoff пейдж людей при двойном фейле.
- Runbook ротации revoke тикет стабильность Mac drain перед macOS.
- Снимите метрику задержки от webhook ingress до enqueue и от enqueue до первого heartbeat воркера чтобы отличить сетевой лаг Monday от заторов очереди MeshMac.
- Проведите game day отключив секрет Monday на пять минут и убедитесь что алерт уходит в чат а очередь не теряет задачи благодаря DLQ.
Безопасность
- Лимит тела строгая schema неизвестное режется.
- Секреты constant-time отдельные пути webhook vs API WAF не режет заголовки тест извне.
- Логи без секретов не admin token для автоматизации.
- Запретите редакторам досок менять URL webhook без тикета инфраструктуры иначе подпись начнёт расходиться с прод шлюзом незаметно для CI.
FAQ
Подпись только в проде — сырое тело без re-encode отключить pretty-print на пути сравнить content-length.
429 — меньше параллелизма больше джиттер одна мутация на pulse пейдж при шторме.
Краткое резюме
Monday.com подпись один OpenClaw на MeshMac merge мультиузла сводки backoff ротация least privilege. Без входа главная блог тарифы справка хаб OpenClaw.