Как безопасно хранить API-ключ, когда сайт и CRM подключены к сервису звонков
Команда Sado AI · · 4 мин чтения
Коротко
API-ключ — это пароль, которым ваша система входит в сервис звонков. Главные правила: заведите отдельный ключ на каждую систему, дайте ему только нужные права, храните ключ в настройках сервера — не в коде сайта, не в Telegram и не в Excel. Ушёл разработчик или агентство — замените ключ. Проверяйте подпись вебхуков. Если ключ утёк, выпустите новый, отзовите старый и проверьте лиды и звонки за это время.
Что такое API-ключ и почему он равен паролю
Когда форма на сайте, CRM или 1С передают данные в сервис звонков, они предъявляют ключ. Тот, кто знает ключ, может отправлять лиды от вашего имени, а голосовой оператор будет звонить по ним с вашего номера. Ключ с правом читать расшифровки открывает всё, что говорили ваши клиенты.
Поэтому утечка ключа — не только техническая проблема: звонки уходят чужим людям, данные клиентов открыты, а неловкие разговоры идут от имени вашего бренда.
7 правил хранения API-ключа
- Отдельный ключ на каждую систему. Для формы сайта, CRM и 1С — три разных ключа. Утёк один — меняете только его, остальные работают.
- Только нужные права. Форма сайта лишь отправляет лиды — ей хватает права на запись лидов. Расшифровки читает только та система, которой они действительно нужны.
- Ключ живёт на сервере. Храните его в переменных окружения (environment variables) или в хранилище секретов. Никогда не вставляйте его в код, который выполняется в браузере, или в мобильное приложение: оттуда ключ увидит любой.
- Не в чатах и файлах. Не пересылайте ключ в Telegram, по почте, в таблице Excel и не кладите в Git-репозиторий. Разработчику нужен доступ — выпустите ему отдельный ключ.
- Ведите список: какой ключ где стоит, кто и когда его поставил. Например: «форма сайта — 3 ноября — разработчик Анвар».
- Человек ушёл — ключ меняется. В день ухода разработчика, агентства или IT-сотрудника замените все ключи, которые он видел.
- Меняйте ключи и без повода: например, раз в полгода.
Какой системе какие права нужны
| Система | Что делает | Права |
|---|---|---|
| Форма сайта | Отправляет новую заявку на звонок | leads:write |
| CRM | Отправляет лиды и читает их статус | leads:write, leads:read |
| Таблица отчётов | Число звонков и их итог | calls:read |
| Контроль качества | Резюме и текст разговора | calls:content |
| Интернет-магазин | Обновляет цены и остатки | catalog:write |
Названия прав взяты из API Sado. В других сервисах они называются иначе, но правило то же: система получает только то, что нужно для её работы.
Вебхук: точно ли запрос пришёл от сервиса
Вебхук — это когда сервис сам отправляет итог звонка на ваш адрес. Адрес могут узнать и другие, поэтому проверяйте каждый запрос:
- Используйте только адрес с HTTPS.
- Проверяйте подпись. Sado подписывает каждый запрос: заголовок X-Sado-Signature — HMAC-SHA256 с вашим секретом. Подпись не сошлась — отклоняйте запрос.
- Не принимайте запросы старше 5 минут: так старый запрос нельзя отправить повторно, чтобы обмануть систему.
- Секрет вебхука храните на сервере, как и API-ключ.
Если ключ утёк: 5 шагов
- Выпустите новый ключ и поставьте его в систему.
- Сразу отзовите старый — не завтра, а сейчас.
- Проверьте лиды и звонки с момента утечки: незнакомые номера, странное время, повторяющиеся имена.
- Если звонки уходят по чужим лидам, остановите все звонки одной кнопкой и включите снова после проверки.
- Найдите, откуда утёк ключ (чат, файл, код сайта), уберите его оттуда и напишите команде Sado.
Как устроены API-ключи в Sado
Ключ создаётся в портале: Настройки → API-ключи. Он показывается один раз, поэтому сразу перенесите его в настройки сервера. У каждого ключа свои права: leads:write, leads:read, calls:read, calls:content (резюме и текст), catalog:write. На один ключ — 600 запросов в минуту. Если вдруг пошли ошибки 429, проверьте: это может быть сбой в вашей системе или чужое использование ключа.
В каждом лиде, отправленном по API, указывается основание для звонка: человек оставил заявку, дал согласие или уже ваш клиент. Как только лид пришёл, ИИ-оператор звонит, а итог возвращается через вебхук или ленту событий. Примеры кода — на странице для разработчиков, о связке с CRM — звонки и CRM, короткие ответы — в частых вопросах.
Вопросы
Опасно ли давать API-ключ внешнему разработчику?
Если выпустить ему отдельный ключ, риск небольшой: после работы или его ухода вы отзываете только этот ключ. Ключи других систем не передавайте.
Можно ли вписать API-ключ в код сайта?
В код, который выполняется в браузере, — нет: код страницы может открыть любой. Пусть форма отправляет данные на ваш сервер, а ключ добавляет сервер.
Как часто менять API-ключ?
Сразу, если ушёл человек с доступом или есть подозрение на утечку. В остальное время — например, раз в полгода.
