Безопасность и приватность
Хранение ключей в Redis с шифрованием, что логируется (только метаданные биллинга) и что не логируется, ротация, отдельные ключи под CI и действия при утечке.
Приватность заложена в архитектуру: тело запросов не сохраняется, ключи шифруются, а в логах — только то, что нужно для биллинга. Ниже — что именно хранится и как обращаться с ключами.
#Хранение ключей
- Ключи
cr_…иro_…хранятся в Redis в зашифрованном виде. - В открытом виде значение ключа нигде не пишется — ни в логи, ни в метрики.
- В биллинге фигурирует только идентификатор ключа (имя/метка), но не сам секрет.
cr_…, может тратить баланс. Обращайтесь с ним как с паролем: не коммитьте в git, не шлите в чатах, не кладите в клиентский код.#Что логируется
| Данные | Логируется? |
|---|---|
| ID запроса | ✓ метаданные |
| Модель и вендор | ✓ |
| Число токенов (in / out / cache) | ✓ |
| HTTP-статус и время ответа | ✓ |
| Метка ключа (без значения) | ✓ |
| Тело запроса (prompt) | ✗ никогда |
| Ответ модели | ✗ никогда |
Значение ключа cr_… | ✗ хранится зашифрованным |
#Что НЕ логируется
- Текст промпта и любые данные, которые вы отправляете модели.
- Ответ модели — контент генерации нигде не сохраняется.
- Вложения и системные инструкции в теле запроса.
#Ротация ключей
- 1Регулярный график
Меняйте боевые ключи по расписанию (например, раз в квартал) и всегда — при смене команды.
- 2Выпуск нового
Запросите новый ключ у @nukind, выкатите его в секреты окружения.
- 3Отзыв старого
После проверки, что всё работает, попросите отозвать прежний ключ.
#Отдельные ключи под CI
Для CI/CD и ботов заведите отдельный ключ и храните его в секретах пайплайна, а не в репозитории. Так утечку легко локализовать и отозвать без остановки остальной работы.
# .github/workflows/ci.yml
env:
TKBK_KEY: ${{ secrets.TKBK_API_KEY }} # ключ хранится в Secrets репозитория
# в коде читайте из окружения: process.env.TKBK_KEY / os.environ["TKBK_KEY"].env в .gitignore. Если ключ случайно попал в историю git — считайте его скомпрометированным и отзывайте, даже если коммит удалён.#Действия при утечке
- 1Отзовите ключ
Сразу напишите @nukind — скомпрометированный ключ отзывается, выпускается новый.
- 2Проверьте расход
Через Usage Query API и кабинет сверьте баланс и активность за период.
- 3Замените в окружении
Обновите секреты во всех сервисах и CI, удалите старый ключ из истории и переменных.
ro_…: он не может тратить баланс, поэтому его утечка не приводит к расходу средств.