Настройка инструментов

Защитите свой ключ Claude API

Безопасность ключа Claude API — это в основном скучная дисциплина: держите ключ вне системы контроля версий, ограничьте, сколько он может потратить, и отрепетируйте отзыв до того, как он понадобится. Разбираем конкретные настройки apiToken.sale — лимит расходов за всё время, дату истечения, именованные ключи под каждый инструмент — плюс схему хранения и план действий при утечке, который можно просто скопировать.

·

Что на самом деле может украденный ключ

Ваш ключ apiToken.sale (выглядит как sk-pool-•••) — это bearer-креденшел: любой, кто его предъявит, может запускать запросы к Claude, GPT, Gemini и Kimi за счёт вашего предоплаченного баланса. Второго фактора при запросе нет — владение ключом и есть доступ. Поэтому задача не в том, чтобы сделать утечки невозможными, а в том, чтобы сделать их дешёвыми, заметными и обратимыми.

Предоплата уже ограничивает худший сценарий текущим балансом, а лимит расходов за всё время сужает его ещё сильнее. Остаются неудобства и сюрпризы: атакующий, сливающий кредит в три часа ночи, или ключ, месяцами лежащий в публичном репозитории, потому что никто не заметил. И то и другое решается теми же тремя настройками и короткой отработкой ротации.

Читайте также: Лучшие практики Claude API

Три настройки, которые нужно задать до первого запроса

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

НастройкаЧто она делаетКогда использовать
Лимит расходов за всё времяЖёстко останавливает ключ, как только суммарные траты достигают заданной суммы, независимо от того, кто им пользуетсяКаждый ключ, всегда — задайте сумму, которую проект вообще может стоить
Дневной period spend capОстанавливает ключ, когда списания за текущий UTC-день достигают capАвтономные агенты и CI, которые должны снова заработать завтра
Месячный period spend capОстанавливает ключ, когда списания за текущий UTC-месяц достигают capМесячный бюджет на один клиентский ключ
Model allowlistОтклоняет любую модель каталога, которой нет в спискеКлюч только для Haiku или Luna, который не должен вызывать Opus или Sol
Дата истеченияАвтоматически отключает ключ в выбранную вами датуПодрядчики, триалы, демо — любой временный доступ
Говорящее имя ключаЧерез месяцы подскажет, какому инструменту и окружению служит ключКаждый ключ — скажете себе спасибо при отзыве в два часа ночи

Выпускайте отдельный ключ на каждый инструмент и окружение вместо одного общего. Отзыв утёкшего ключа Cursor не должен ронять продакшн-бэкенд, а дашборд, полный ключей с именами prod-backend, cursor-laptop и ci-staging, с первого взгляда показывает радиус поражения.

Не знаете, какой лимит задать? Сначала прикиньте стоимость нагрузки в калькуляторе стоимости Claude API.

Правила хранения, которые выдерживают встречу с реальностью

Одно правило покрывает почти всё: ключ живёт в переменной окружения или менеджере секретов, никогда — в исходном коде. На практике это .env-файл, добавленный в .gitignore до первого коммита, или менеджер вроде 1Password CLI, Doppler или AWS Secrets Manager, подставляющий переменную при запуске.

# .env — commit .env.example without values, never this file
ANTHROPIC_BASE_URL=https://router.apitoken.sale
ANTHROPIC_API_KEY=sk-pool-•••

# .gitignore — add this before the first commit, not after
.env
  • История git — удаление файла следующим коммитом ключ не убирает; считайте его скомпрометированным и ротируйте.
  • Клиентский JavaScript — всё, что попадает в бандл браузерного приложения, публично по определению; вызывайте API со своего бэкенда.
  • Логи CI — вывод переменных окружения в шаге пайплайна печатает ключ в логи сборки; маскируйте секреты и никогда их не выводите.
  • История shell — сырая команда curl -H "x-api-key: sk-pool-…" сохраняет ключ в файле истории; сначала экспортируйте его в переменную.
  • Чаты и тикеты — вставленный в Slack, Telegram или баг-трекер ключ остаётся там навсегда и находится поиском.

Скриншоты и демонстрации экрана тоже считаются. Если ключ попал в запись звонка или на расшаренный скриншот — ротируйте его: десять минут стоят дешевле альтернативы.

Подключение к инструментам без хардкода

Все основные клиенты читают учётные данные из окружения, так что в коде ничего хранить не нужно:

# Anthropic SDK and Claude Code
export ANTHROPIC_BASE_URL=https://router.apitoken.sale
export ANTHROPIC_API_KEY=sk-pool-•••

# OpenAI-compatible clients (GPT models, and Claude via the same lane)
export OPENAI_BASE_URL=https://router.apitoken.sale/v1
export OPENAI_API_KEY=sk-pool-•••

SDK Anthropic и OpenAI подхватывают эти переменные автоматически — если вы передаёте ключ строковым литералом в конструктор, это тот самый запашок, который надо устранить. На серверах подставляйте переменную из хранилища секретов вашей платформы (настройки env у хостинга, Docker secrets, EnvironmentFile в systemd), а не запекайте её в образ или конфиг.

Ротация в четыре шага

Ротация обходится дёшево, если вы один раз её отрепетировали. Такой порядок держит все клиенты авторизованными на всём пути:

  1. 01Создайте заменяющий ключ в дашборде. Задайте тот же лимит расходов за всё время, что и у старого, дату истечения, если доступ временный, и имя с датой, например prod-backend-2026-08.
  2. 02Обновите клиент: поменяйте значение переменной окружения или секрета, затем перезапустите или передеплойте, чтобы процесс действительно перечитал её.
  3. 03Следите за использованием в дашборде, пока запросы не пойдут по новому ключу, а старый не затихнет.
  4. 04Отзовите старый ключ. Только теперь — отозвать его первым шагом значит своими руками устроить избежимый простой с 401.

Как часто ротировать? По фиксированному расписанию — только если этого требует ваша политика безопасности. Иначе ротируйте, когда инструмент выводится из эксплуатации, подрядчик уходит с проекта, ноутбук потерян или вы просто не можете вспомнить все места, куда вставляли ключ. Неуверенность — сама по себе повод для ротации.

Первые десять минут после утечки

  1. 01Немедленно отзовите раскрытый ключ в дашборде. Это решает всё: новые запросы прекращаются мгновенно, а лимит расходов за всё время ограничивает то, что успело произойти до этого.
  2. 02Откройте статистику использования и поищите траты или модели, которых вы не узнаёте, — так вы поймёте, когда ключом начали пользоваться.
  3. 03Выпустите замену и обновите клиенты в порядке ротации, описанном выше.
  4. 04Устраните источник: вычистите ключ из истории git, отредактируйте логи CI и ротируйте все остальные секреты, которые жили в том же файле или сообщении.

Если ключ хоть ненадолго попал в публичный репозиторий на GitHub, считайте, что его уже собрали, — автоматические сканеры подбирают новые коммиты за считаные минуты. «Я быстро удалил» — не защита; защита — отзыв ключа.

Частые вопросы

Что будет, если мой ключ Claude API украдут?

Тот, кто им завладел, сможет тратить ваш предоплаченный баланс на модели Claude, GPT, Gemini и Kimi, пока вы не отзовёте ключ или он не упрётся в лимит расходов за всё время. Сначала отзовите ключ в дашборде, разбирательство — потом.

Лимит расходов — за день, за месяц или за всё время?

Все три. Общий лимит расходов ограничивает сумму за всё время жизни ключа. Необязательные period spend cap сбрасываются с UTC-днём или UTC-месяцем. Можно задать model allowlist. Предоплаченный баланс по-прежнему ограничивает весь аккаунт, а дата истечения по-прежнему завершает временный доступ.

Стоит ли использовать один API-ключ для всех инструментов?

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

Как ротировать ключ Claude API, не сломав приложение?

Сначала создайте заменяющий ключ, обновите клиент и убедитесь по дашборду, что трафик пошёл по новому ключу, и только потом отзовите старый. Отзыв до обновления клиентов просто превращает ротацию в простой.

Я закоммитил свой API-ключ на GitHub. Достаточно ли удалить файл?

Нет — ключ остаётся в истории git, а публичные репозитории сканируются за считаные минуты. Отзовите и ротируйте ключ, затем вычистите историю; одно удаление не защищает вообще ничего.

Войдите через Google или GitHub и получите приветственный бонус $5 на баланс платформы — без карты.