Справочник

Безопасность и приватность

Хранение ключей в Redis с шифрованием, что логируется (только метаданные биллинга) и что не логируется, ротация, отдельные ключи под CI и действия при утечке.

Обновлено 20 июл. 2026 г.7 мин
#безопасность#приватность#ключи#redis#логи#ротация

Приватность заложена в архитектуру: тело запросов не сохраняется, ключи шифруются, а в логах — только то, что нужно для биллинга. Ниже — что именно хранится и как обращаться с ключами.

#Хранение ключей

  • Ключи cr_… и ro_… хранятся в Redis в зашифрованном виде.
  • В открытом виде значение ключа нигде не пишется — ни в логи, ни в метрики.
  • В биллинге фигурирует только идентификатор ключа (имя/метка), но не сам секрет.
Ключ — это доступ к деньгам
Любой, у кого есть ваш cr_…, может тратить баланс. Обращайтесь с ним как с паролем: не коммитьте в git, не шлите в чатах, не кладите в клиентский код.

#Что логируется

ДанныеЛогируется?
ID запроса✓ метаданные
Модель и вендор
Число токенов (in / out / cache)
HTTP-статус и время ответа
Метка ключа (без значения)
Тело запроса (prompt)✗ никогда
Ответ модели✗ никогда
Значение ключа cr_…✗ хранится зашифрованным

#Что НЕ логируется

  • Текст промпта и любые данные, которые вы отправляете модели.
  • Ответ модели — контент генерации нигде не сохраняется.
  • Вложения и системные инструкции в теле запроса.
Только метаданные
Для выставления счёта достаточно знать модель и число токенов. Содержимое диалога шлюзу не нужно — поэтому оно и не хранится.

#Ротация ключей

  1. 1
    Регулярный график

    Меняйте боевые ключи по расписанию (например, раз в квартал) и всегда — при смене команды.

  2. 2
    Выпуск нового

    Запросите новый ключ у @nukind, выкатите его в секреты окружения.

  3. 3
    Отзыв старого

    После проверки, что всё работает, попросите отозвать прежний ключ.

#Отдельные ключи под CI

Для CI/CD и ботов заведите отдельный ключ и храните его в секретах пайплайна, а не в репозитории. Так утечку легко локализовать и отозвать без остановки остальной работы.

GitHub Actions — секрет, а не хардкод
# .github/workflows/ci.yml
env:
  TKBK_KEY: ${{ secrets.TKBK_API_KEY }}   # ключ хранится в Secrets репозитория
# в коде читайте из окружения: process.env.TKBK_KEY / os.environ["TKBK_KEY"]
Никогда не коммитьте ключ
Добавьте .env в .gitignore. Если ключ случайно попал в историю git — считайте его скомпрометированным и отзывайте, даже если коммит удалён.

#Действия при утечке

  1. 1
    Отзовите ключ

    Сразу напишите @nukind — скомпрометированный ключ отзывается, выпускается новый.

  2. 2
    Проверьте расход

    Через Usage Query API и кабинет сверьте баланс и активность за период.

  3. 3
    Замените в окружении

    Обновите секреты во всех сервисах и CI, удалите старый ключ из истории и переменных.

ro-токен для мониторинга
Для дашбордов и алертов используйте read-only токен ro_…: он не может тратить баланс, поэтому его утечка не приводит к расходу средств.
Не помогло?

Напишите в Telegram — поможем с настройкой и подберём тариф. Или вернитесь ко всем разделам документации.