
Торговые API-ключи: почему ваш бот не может вывести ваши средства
API-ключ — это не пароль, а ограниченные учетные данные, и разрешения на сделки и вывод средств разделены на каждой бирже. В этой статье рассказывается, что именно позволяет ключ только для сделок, как реализуется это ограничение и как проверить экран разрешений перед подключением.
API-ключ — это не пароль. Это ограниченные учетные данные — набор конкретных разрешений, которые биржа предоставляет подключённому приложению, и эти разрешения могут включать одни действия с аккаунтом, полностью исключая другие. API-ключ только для сделок не позволяет вывод средств: он может размещать ордера, проверять балансы и получать историю сделок, но сама биржа блокирует любые попытки вывода через такой ключ, независимо от запросов подключённого приложения.
Это различие отвечает на главный вопрос, который возникает каждый раз в разных формулировках: может ли бот перевести мои средства куда-либо? При правильно настроенном ключе — нет, и дело не в том, что бот сам этого не делает, а в том, что биржа просто не позволит ему этого сделать.
Краткий обзор
- Доступ к сделкам включает размещение, изменение и отмену ордеров, а также просмотр балансов и истории сделок
- Доступ Withdraw позволяет полностью вывести средства с биржи — это отдельное разрешение, которое по умолчанию отключено для корректно настроенного ключа
- Разделение реализует сама биржа, а не подключённое приложение — запрос на вывод средств, отправленный через ключ только для торговли, будет отклонён на стороне биржи
- Ключи, предоставленные с уже включённым разрешением на вывод средств, автоматически отклоняются при подключении в качестве меры предосторожности.
- Такое же разделение между сделками и выводом средств действует на всех поддерживаемых биржах — названия переключателей могут отличаться, но само разделение остаётся неизменным.
Что на самом деле включает доступ уровня "сделка"
Торговому боту необходимо видеть балансы аккаунта, просматривать историю сделок, а также размещать, изменять или отменять ордера — это полный перечень того, что требуется для автоматизированной торговли. Доступ только для чтения позволяет узнать, что находится в аккаунте и что уже произошло; торговый доступ дает боту возможность действовать на основе этой информации. Ни один из этих видов доступа не затрагивает место фактического хранения средств.
Что означает доступ «withdraw» и почему он исключён
Вывод средств — это отдельное разрешение, которое охватывает перевод средств с биржи на другой кошелёк или адрес. Оно никак не связано со сделками — биржа может разрешить приложению совершать сделки, не предоставляя ему возможности выводить средства, и именно этим ограничивается ключ, предназначенный только для сделок.
Это соответствует стандартному принципу безопасности: предоставлять только тот доступ, который действительно необходим для выполнения задачи, и ничего сверх этого. Работа бота — размещать и управлять ордерами. Ему никогда не требуется переводить средства куда-либо, поэтому нет никаких законных оснований запрашивать такое разрешение изначально — область доступа не сокращается из вежливости, она просто никогда не запрашивается.
Как это ограничение фактически применяется
Разделение прав на сделки и вывод средств — это не обещание со стороны подключённого приложения, а настройка, которую контролирует сама биржа. При создании API-ключа разрешение на вывод средств имеет отдельный переключатель, независимый от доступа к сделкам и балансу, и обычно он выключен по умолчанию. Если через ключ поступает запрос на вывод средств без соответствующего разрешения, сама биржа отклоняет его. Подключённому приложению не нужно доверять в том, что оно не попытается сделать такой запрос; просто отсутствует разрешение на успешное выполнение этой операции.
В качестве второго уровня защиты, ключи с уже включённым доступом к выводу средств автоматически отклоняются на этапе подключения, ещё до того, как бот сможет их использовать для каких-либо действий. Только корректно настроенный ключ вообще может быть подключён.
Правильная настройка: пример с Binance
На Binance при создании API-ключа появляется экран с настройками разрешений и отдельными переключателями, включая Enable Reading, Enable Spot & Margin Trading и Enable Withdrawals. Для торговли с помощью бота необходимо активировать первые два параметра, а третий оставить в исходном положении — выключенным.
Binance также привязывает API-ключ без IP-белого списка к 90-дневному сроку действия торгового разрешения. Добавьте соответствующие IP-адреса в список разрешённых для ключа — и этот срок исчезает; пропустите этот шаг — и торговое разрешение потребуется подтверждать на стороне Binance каждые 90 дней, иначе оно автоматически аннулируется. Как работает IP-белый список подробно объясняет этот механизм.
На других биржах эти переключатели называются по-разному, и сами экраны выглядят иначе, но основное разделение сохраняется везде: разрешение на просмотр, разрешение на торговлю и разрешение на вывод средств, каждое из которых управляется отдельно. Для подключения бота нужно включить первые два разрешения и оставить третье выключенным.
Проверка занимает меньше минуты — делайте это при каждом подключении, а не только в первый раз. Биржи время от времени обновляют свои экраны разрешений, и настройка, которая по умолчанию была верной в прошлом году, после обновления может измениться.
Слои, наложенные друг на друга
Ограничение доступа только к сделкам устраняет главный риск — физический вывод средств с биржи, — но это не единственная мера защиты. Белый список IP-адресов ограничивает, с каких серверов можно использовать ключ, даже если его права настроены корректно. Защита от встречных сделок отслеживает специфический сценарий манипуляции, когда скомпрометированный ключ используется для изменения Цены на малоликвидном Market вместо прямого вывода средств. На большинстве платформ также запрещено добавлять один и тот же API-ключ в несколько аккаунтов, что предотвращает другой тип злоупотреблений. Ни одна из этих мер не заменяет разделение прав на сделки и вывод — они дополняют его, покрывая те риски, которые оно не охватывает.
Сравнение разрешений
| Разрешение | Что это позволяет | Необходимо для торговли с помощью бота? |
|---|---|---|
| Просмотр (баланс и история) | Просматривайте балансы, открытые ордера и историю сделок | Да |
| сделка | Размещайте, изменяйте и отменяйте ордера | Да |
| Вывести | Переведите средства на внешний кошелек или адрес | Нет — исключено по замыслу |
Распространённые ошибки
Предположение, что доступ через API — это всё или ничего. Это не так. На всех крупных биржах права на чтение, торговлю и вывод средств управляются отдельно, и ключ может быть ограничен любой их комбинацией.
Оставлять разрешение на вывод средств по привычке. Пользователь, настраивающий сразу несколько интеграций, может скопировать Настройки разрешений из другого инструмента, не проверяя каждый переключатель отдельно.
Пропуск добавления IP-адресов в белый список, а затем неожиданная потеря доступа к торговле. На биржах, где неограниченные ключи привязаны к сроку действия, это проявляется как бот, который загадочно прекращает торговать через несколько недель после настройки — это не баг, а просто истекшее разрешение.
Повторное использование одного API-ключа в нескольких инструментах или аккаунтах. Ряд бирж полностью блокирует такую возможность, а даже если этого не происходит, использование одного ключа в разных системах увеличивает риск: при компрометации хотя бы одной из них под угрозой окажутся все.
Часто задаваемые вопросы
Может ли торговый бот вывести мои средства? Нет, если API-ключ настроен правильно. Разрешение на вывод средств отличается от разрешения на торговлю, по умолчанию оно отключено, и если ключ с включённой этой опцией будет отправлен, соединение будет отклонено, а не разрешено.
Что произойдет, если я случайно включу разрешение на вывод средств для своего API-ключа? Подключение будет отклонено. Ключи с разрешением на вывод средств автоматически отвергаются и не подключаются, поэтому решение — сгенерировать новый ключ без этой опции.
Означает ли API-ключ только для торговли, что ваши средства полностью защищены от риска? Такой ключ действительно исключает самый крупный риск — вывод средств с биржи, — однако скомпрометированный ключ всё равно может быть использован в рамках разрешённых торговых операций, например, для манипуляций на малоликвидном Market. Именно для этого существуют дополнительные уровни защиты, такие как привязка к IP-адресу и защита от встречных сделок; ограничение только торговыми операциями и эти дополнительные меры работают совместно, а не являются универсальным решением.
Одинаково ли разделение между сделками и выводом средств на всех биржах? Основное разделение стандартно для большинства крупных бирж — это связано с особенностями работы разрешений API на стороне биржи, а не с какой-то конкретной торговой платформой. Названия переключателей и интерфейсы могут отличаться, но само разделение остается неизменным.
Нужно ли мне что-то дополнительно настраивать, чтобы мой ключ был только для торговли? Просто оставьте вывод средств отключённым — на большинстве бирж эта опция выключена по умолчанию. В качестве дополнительной защиты ключ с включённой возможностью вывода всё равно не сможет успешно подключиться.