Security API Keys 16 мая 2026 · 7 мин

Безопасность API-ключей биржи: как не потерять средства

Что ставить в права доступа, зачем нужен IP-вайтлист и как хранить секреты — чтобы даже при утечке ключа ваши деньги остались в сохранности.

Почему это критично

API-ключ — это цифровая подпись, дающая право управлять вашим аккаунтом на бирже без пароля и 2FA. Если он утечёт — злоумышленник может торговать и, если вы не настроили ограничения правильно, вывести все средства.

Хорошая новость: даже при компрометации ключа правильная конфигурация делает ущерб минимальным или нулевым.

Шаг 1: права доступа — принцип минимальных привилегий

При создании API-ключа биржа предлагает набор разрешений. Правило простое: давайте только то, что нужно боту прямо сейчас.

РазрешениеКогда нужноКогда НЕ нужно
Чтение (Read)Всегда
Спот-торговляСпот-ботФьючерсный бот
Фьючерсная торговляФьючерсный ботСпот-бот
Маржинальная торговляМаржин-ботОбычный бот
Вывод средствНикогда для ботаВсегда
Никогда не включайте «Вывод средств» в ключе, который используется ботом или передаётся разработчикам. Это единственное разрешение, которое позволяет безвозвратно вывести деньги.

Шаг 2: IP-вайтлист

Привяжите API-ключ к конкретным IP-адресам. Тогда даже если ключ похитят — с чужого IP он не сработает.

На Binance: создание ключа → «Restrict access to trusted IPs only» → ввести IP сервера, где работает бот.

Если бот работает на вашем компьютере с динамическим IP — это проблема. Решения:

Шаг 3: хранение секретов

Самое частое место утечки — это исходный код. Ключи в коде видны всем, у кого есть доступ к репозиторию.

Переменные окружения (.env)

# .env — добавьте в .gitignore немедленно!
BINANCE_API_KEY=abc123...
BINANCE_SECRET=xyz789...
import os
from dotenv import load_dotenv

load_dotenv()  # читает .env в переменные окружения
api_key = os.environ["BINANCE_API_KEY"]
secret  = os.environ["BINANCE_SECRET"]
Правило: файл .env должен быть в .gitignore до первого коммита. Если он уже попал в Git — немедленно отзовите ключ на бирже и создайте новый.

Системные переменные (production)

На сервере лучше задавать переменные окружения через systemd, Docker secrets или платформу (например GitHub Actions Secrets, Vault):

# systemd service
[Service]
Environment=BINANCE_API_KEY=abc123...
Environment=BINANCE_SECRET=xyz789...
ExecStart=/usr/bin/python3 /opt/bot/main.py

Шифрованное хранилище (продвинутый уровень)

Для командной разработки используйте HashiCorp Vault или AWS Secrets Manager. Бот получает секрет по токену доступа, и сам секрет никогда не оказывается в переменных окружения на диске.

Шаг 4: архитектура «без доступа к выводу»

Когда вы нанимаете разработчика для создания бота — возникает закономерный вопрос: как убедиться, что он не украдёт средства?

Правильная схема работы:

  1. Разработчик пишет и тестирует бота на своей инфраструктуре с тестовыми ключами или testnet.
  2. Готовый бот устанавливается на ваш сервер (не разработчика).
  3. Вы сами создаёте API-ключ с разрешением только «Торговля», без «Вывода средств».
  4. IP-вайтлист прописан на IP вашего сервера.
  5. Разработчик получает ключ только после подписания NDA.

При такой схеме разработчик физически не может вывести ваши средства — даже если захочет. Он может совершать ордера (в рамках стратегии бота), но не переводить деньги.

Шаг 5: мониторинг и ротация

Чеклист перед запуском бота

Итог: безопасность API — это не параноя, а базовая гигиена. Правильная настройка занимает 10 минут, но защищает от большинства векторов атаки.

Если вам нужен бот, спроектированный с учётом всех этих требований — обсудим архитектуру. Работаем под NDA, ключи на ваш сервер.

Все статьи Обсудить проект