Безопасность ключей
Ключ — это доступ к балансу аккаунта. Скоупы, потолки трат и быстрый отзыв ограничивают ущерб, если ключ всё-таки утёк.
Где держать ключ
Только на сервере. Ключ, попавший в браузерный бандл, мобильное приложение или публичный репозиторий, следует считать скомпрометированным — даже если код приватный, сборка уезжает к пользователю. Если API нужен фронтенду, проксируйте запросы через свой бэкенд, чтобы ключ никогда не покидал ваш периметр.
Скоупы
Ключ можно ограничить поверхностями chat, images и videos — сервису, который только генерирует картинки, незачем иметь доступ к чату. Запрос к поверхности вне скоупа возвращает 403 permission_error с кодом insufficient_scope. Ключ без выбранных скоупов имеет доступ ко всем поверхностям.
Потолки трат вместо IP-списков
IP-allowlist мы не поддерживаем: он ломается на любой динамической инфраструктуре и создаёт ложное чувство защиты — украденный ключ всё ещё работает с разрешённого хоста. Вместо этого каждому ключу можно задать собственный потолок трат за период и лимит запросов в минуту.
- Потолок трат за
day·week·month·total. При исчерпании — 402spend_limit_exceeded. - Свой лимит запросов в минуту, независимый от лимита аккаунта.
Подробности — в разделе Лимиты и кредиты. Практика: отдельный ключ на каждый сервис и окружение, у каждого — свой потолок.
Ротация и отзыв
Полный секрет показывается один раз при создании. Чтобы ротировать ключ, выпустите новый, переключите на него сервис и только затем отзовите старый — так не будет окна отказа. Отзыв применяется немедленно: результат проверки ключа кэшируется на минуту, но отзыв сбрасывает кэш явно.
ДалееЛоги и наблюдаемость →