Ротация ключей
Ротируйте API keys и секреты OAuth client по расписанию или после подозрения на утечку. mxHeadless хранит только хеши. Старый secret из базы не восстановить.
API keys (mxh_*)
Формат: mxh_{lookupId}_{secret}. В базе: lookup_id, secret_hash, scopes и опциональные rate limits.
- Создайте новый ключ с теми же или более узкими scopes (API keys или Manager).
- Разверните новый secret во всех consumer (CI, frontend server, интеграции).
- Убедитесь, что трафик идёт с нового ключа (
last_used_onили audit log). - Отзовите старый ключ (
revoked = 1).
Не отзывайте ключ, пока все caller не перешли.
После revoke Bearer со старым secret вернёт 401. Кэшированные anonymous GET могут жить до mxheadless_cache_ttl. На время ротации снизьте TTL или выключите cache.
OAuth clients (mxt_*)
При mxheadless_oauth_enabled=true:
- Создайте нового client через OAuth.
- Обновите сервисы, которые вызывают
POST /api/v1/auth/token. - Отзовите старую строку client.
Access tokens истекают через mxheadless_oauth_token_ttl (default 3600 с). Смена client secret блокирует новые обмены. Уже выданные tokens живут до expiry.
Секреты webhook
Секреты лежат в mxheadless_webhook_subscriptions.secret.
- Обновите secret в subscription.
- Обновите env на subscriber (например
MXHEADLESS_WEBHOOK_SECRET). - Сделайте тестовую мутацию и проверьте подпись.
Pending outbox хранит snapshot secret на момент enqueue.
