Ключ заменяет логин и пароль: сервис по нему понимает, чей это запрос и с какого баланса списывать деньги. Никакой дополнительной проверки нет, поэтому ключ равен доступу к вашему счёту.
Отсюда правила обращения. Ключ не кладут в код, который уходит в репозиторий, и не вставляют в страницу сайта — оттуда его заберёт любой желающий. Хранят его в переменных окружения на сервере и меняют по расписанию, чтобы старая утечка перестала работать.
Кто им владеет, тот и тратит ваш баланс.
Переменные окружения сервера, не код и не браузер.
Ключ, случайно закоммиченный в публичный репозиторий, находят автоматические сканеры за минуты. Единственное лечение — отозвать его и выпустить новый.
Хранят ключ в переменных окружения или в отдельном хранилище секретов, а в коде оставляют только имя переменной. Файл с секретами добавляют в список исключений системы контроля версий до первого коммита. Отдельная опасность — фронтенд: ключ, отданный в браузер, виден любому посетителю через инструменты разработчика, поэтому обращения к платным интерфейсам делают с сервера.
Если ключ утёк, порядок действий короткий: выпустить новый, заменить его в приложениях, отозвать старый и проверить историю расходов за последние дни. Регулярная замена раз в несколько месяцев и отдельные ключи под каждое приложение сокращают ущерб: скомпрометированный ключ отзывается без остановки остальных сервисов. Расход по каждому ключу удобно ограничивать лимитом и следить за пределами частоты.
Частые вопросы
Где хранить ключ доступа?
В переменных окружения или в хранилище секретов, с исключением файла настроек из системы контроля версий. В коде остаётся только имя переменной. В браузер ключ платного сервиса не отдают: оттуда его заберёт любой посетитель.
Что делать, если ключ утёк?
Выпустить новый, заменить его во всех приложениях, отозвать старый и проверить расход за последние дни. Если ключ попал в публичный репозиторий, считайте его скомпрометированным сразу: такие ключи находят автоматические сканеры за минуты.
Нужно ли заводить отдельные ключи под проекты?
Да. Отдельный ключ для каждого приложения позволяет отозвать один, не останавливая остальные, и показывает расход по каждому направлению. Заодно проще ограничить права и лимиты под конкретную задачу.
Как часто менять ключи?
Раз в несколько месяцев по расписанию и немедленно при подозрении на утечку или уходе сотрудника с доступом. Плановая замена проверяет заодно, что процесс обновления работает и приложение не завязано на один жёстко прописанный ключ.
Права ключа ограничивают до необходимого минимума: только те методы и те модели, которыми пользуется приложение. Расход полезно накрыть двумя рубежами: месячный лимит на стороне поставщика и оповещение при превышении дневной нормы. Так утечка или ошибка в коде с бесконечным циклом обойдётся в известную сумму вместо всего остатка на счёте.