Безопасность API-ключей биржи
API-ключ — это пара учётных данных (ключ + секрет), выдаваемая биржей, которая позволяет внешней программе действовать на биржевом счёте владельца. В контексте автоматической торговли (см. Что такое автоматическая торговля криптовалютой?) платформа держит ключ и использует его для подачи ордеров от имени оператора.
Ключ — самый опасный объект во всём стеке. Средства никогда не покидают биржу и не попадают на платформу, но ключ всё равно может нанести реальный ущерб при неверной настройке прав. Правильная настройка прав — обязательный первый шаг каждой биржевой интеграции.
Единственное правило
Право на вывод НЕ ДОЛЖНО быть включено на API-ключе.
Это правило абсолютно. Каждая крупная биржа разделяет права минимум на три класса — Чтение, Торговля, Вывод — и платформе нужны только Чтение и Торговля. Нет законной причины для торгового бота иметь право Вывода; платформе не нужно перемещать средства с биржи для выполнения своей работы.
При выключенном Выводе самое худшее, что может сделать скомпрометированный ключ, — торговать против счёта (потеря денег заранее организованному маркет-мейкеру-контрботу — классическая атака). Это реальный ущерб, но основная сумма счёта по-прежнему на бирже и восстановима через поддержку биржи и окна ликвидации по срабатыванию лимита скорости.
При включённом Выводе атакующий может опустошить счёт одной транзакцией. Потеря необратима.
Минимальный набор прав
Точные названия различаются по биржам, но каждая платформа должна запрашивать только эти классы:
| Право | Типичное название | Обязательно? |
|---|---|---|
| Чтение балансов счёта | "Read Info" / "Account" / "Query" | Да |
| Чтение истории ордеров | "Read Orders" / "History" | Да |
| Размещение и отмена ордеров | "Trade" / "Spot Trading" / "Margin Trading" | Да |
| Вывод средств | "Withdraw" / "Transfer" | НЕТ |
| Включить маржу | "Margin" / "Futures" | Только если нужно стратегии |
| Включить фьючерсы | "Derivatives" / "Perpetual" | Только если нужно стратегии |
| Внутренний субперевод | "Universal Transfer" | НЕТ (почти всегда) |
Оператор должен проверять галочки прав в UI биржи по этому списку каждый раз при создании или ротации ключа.
IP-allowlist
Большинство крупных бирж позволяют оператору привязать API-ключ к фиксированному IP-allowlist. Ордер, поданный с IP вне списка, отклоняется.
Pulsar.INK, как и большинство платформ, публикует исходящие IP торговых серверов, чтобы операторы могли внести именно эти IP в allowlist. Если allowlist оператора пуст [], ключ используется с любого места, и эффективная безопасность учётных данных вдвое ниже, чем должна быть.
Компромиссы:
- Фиксированный allowlist + оператор вставляет ключ. Наилучшая безопасность; платформа должна публиковать и поддерживать исходящие IP; оператор повторно вставляет ключ при изменении списка.
- Без allowlist. Легко настроить; взрывной радиус кражи ключа — весь интернет; абсолютно избегать, если биржа не поддерживает allowlist'ы.
Для арбитражных стратегий, работающих на нескольких площадках, см. Арбитражные боты — поток межбиржевых переводов — место, где операторов иногда соблазняет включить Вывод «для удобства». Не нужно. Используйте ручные переводы или внутренний субаккаунт при необходимости ребалансировки между площадками.
Периодичность ротации
API-ключи следует ротировать по расписанию. Минимально разумная периодичность:
- Каждые 90 дней для ключей на торговых счетах.
- Немедленно, если произошло одно из следующих событий:
- Оператор подозревает, что ключ утёк. - Оператор сменил аккаунт Telegram (см. UX торговли на базе Telegram, почему это важно). - Платформа раскрыла инцидент безопасности. - Биржа уведомила о необычной активности.
Ротация — низкозатратная операция в Pulsar.INK: новый ключ выпускается на бирже, вставляется в интерфейс Telegram, старый ключ отзывается на бирже. Платформа не кэширует старые ключи.
Обработка секрета на стороне платформы
Ключ и секрет оператора зашифрованы в хранилище на платформе и используются только конкретным сервисом подачи ордеров. Они никогда не записываются в логи, никогда не отображаются в сообщениях UI после ввода и никогда не передаются третьим сторонам.
С точки зрения оператора защитные меры:
- Никогда не копируйте секрет в чат, тикет или письмо — включая поддержку платформы. Поддержка никогда не спрашивает секрет.
- Никогда не вставляйте секрет в форму, обслуживаемую по HTTP (а не HTTPS). Telegram Mini App работает только по HTTPS.
- Отзовите ключ, если он когда-либо был скопирован-вставлен куда-либо, кроме экрана ввода ключа платформы. Стоимость ротации низка; стоимость утёкшего ключа высока.
Что делать при компрометации ключа
Компрометация — это не только «я потерял ключ». Это также:
- Устройство с ключом было утеряно или украдено.
- Менеджер паролей с ключом был доступен кому-то другому.
- Ключ появился в любом логе, сообщении или файле, переданном другой стороне.
Действия:
- Отозвать ключ на бирже (самый быстрый путь — обычно один клик).
- Приостановить все стратегии в Pulsar.INK (аварийный выключатель в Telegram).
- Проверить открытые ордера и позиции на входы, которые оператор не размещал.
- Связаться с поддержкой биржи, если есть свидетельства несанкционированных сделок.
- Ротировать любые общие учётные данные (пароль Telegram, PIN устройства), если путь компрометации ещё не известен.
- Выпустить новый ключ с новым IP-allowlist; повторно активировать стратегии только после подтверждения, что предыдущая компрометация локализована.
Фреймворк Управление рисками в автоматической торговле применяется и здесь: дневной лимит потерь на счёт обычно срабатывает задолго до того, как атакующий успевает кросстрейдом уничтожить счёт. Этот лимит — запасной рубеж, когда все остальные меры не сработали.
Дополнительное чтение в этой базе знаний
- Что такое автоматическая торговля криптовалютой? — более широкий контекст.
- UX торговли на базе Telegram — Telegram-половина периметра безопасности.
- Управление рисками в автоматической торговле — лимиты потерь, выживающие при компрометации учётных данных.
- Арбитражные боты — стратегия, наиболее склонная соблазнить операторов к неверной настройке прав.