Как хранить API-ключи безопасно

API-ключ подтверждает запросы проекта, поэтому обращаться с ним нужно как с паролем. Главный принцип прост: секрет никогда не должен попадать к посетителю, в публичный код или обычную переписку.

Безопасность
API-ключи
безопасность
разработка
Редакция DonPay5 мин чтенияОпубликовано: Обновлено:
Как хранить API-ключи безопасно — иллюстрация DonPay

Почему ключ нельзя отправлять в чат

Переписка не является хранилищем секретов

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

Не отправляйте ключ целиком в поддержку. Для диагностики достаточно идентификатора проекта, времени события и безопасного описания ошибки. Снимки экрана также проверяйте на наличие секретных строк.

Если ключ уже отправлен туда, где его могли увидеть посторонние, рассматривайте это как возможную утечку. Удаление сообщения не гарантирует, что копий не осталось.

Проверьте перед следующим шагом

  • Ключ не находится в переписке.
  • Скриншоты не содержат секретов.
  • Поддержке передаются только безопасные данные.

Почему нельзя хранить секреты во frontend-коде

Браузерный код доступен пользователю

Всё, что загружается в браузер или Mini App, можно просмотреть. Скрытая переменная сборки, минификация и необычное имя не превращают секрет в безопасное значение.

Frontend должен обращаться к вашей серверной части. Сервер проверяет пользователя и входные данные, добавляет API-ключ и выполняет запрос. Посетитель получает только результат, необходимый интерфейсу.

Не помещайте секрет в URL: адреса попадают в историю, журналы и аналитику. Не возвращайте его в ответах сервера и не сохраняйте в localStorage.

  • Нет ключа в клиентских файлах.
  • Нет секрета в URL.
  • Сервер не возвращает его браузеру.
  • Локальное хранилище не используется для ключа.

Серверные секреты и переменные окружения

Разделяйте код и конфигурацию

Секрет хранится в защищённой настройке серверного окружения, а код обращается к ней по имени. Значение не записывается в репозиторий и не дублируется в документации проекта.

Ограничьте доступ к настройкам только участникам, которым он нужен. Для разных сред используйте отдельные значения, если такой порядок предусмотрен инфраструктурой.

Журналы должны маскировать чувствительные данные. Не записывайте целиком заголовки авторизации, тела запросов с ключами и содержимое переменных окружения.

  1. 1Поместить ключ в серверное хранилище секретов.
  2. 2Убрать значение из кода и истории изменений.
  3. 3Проверить логи и сообщения об ошибках.
  4. 4Ограничить доступ команды.

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

Когда и зачем заменять секрет

Ротация — это замена действующего ключа новым. Она нужна при изменении состава команды, переносе инфраструктуры, подозрении на раскрытие или в соответствии с внутренней политикой проекта.

До замены найдите все законные места использования. Обновите серверную конфигурацию, проверьте интеграцию и прекратите использование старого ключа доступным способом. Не держите две копии дольше необходимого.

После ротации контролируйте ошибки запросов и статусы операций. Так можно быстро заметить забытый обработчик или задачу, где осталась старая конфигурация.

Проверьте перед следующим шагом

  • Список мест использования составлен.
  • Новый ключ установлен на сервере.
  • Интеграция проверена.
  • Старый ключ больше не используется.

Что делать при подозрении на утечку

Действуйте как при реальном раскрытии

Не тратьте время на попытку доказать, что секрет никто не скопировал. Ограничьте его использование или замените через доступный процесс, затем обновите приложение.

Проверьте журнал событий за период возможного раскрытия и ищите необычные запросы. Не публикуйте чувствительные детали расследования в общих каналах.

Найдите первопричину: открытый репозиторий, лог, скриншот, чат или клиентский код. Исправьте сам канал утечки, иначе новый ключ окажется под тем же риском.

  1. 1Ограничить или заменить ключ.
  2. 2Обновить серверную конфигурацию.
  3. 3Проверить события и ошибки.
  4. 4Удалить секрет из небезопасного места.
  5. 5Зафиксировать безопасный порядок на будущее.

Правила для команды

Минимальный доступ и понятная ответственность

Назначьте ответственного за секреты и документируйте процесс без записи самих значений. Участник должен понимать, где запросить доступ, как использовать ключ и кому сообщить о проблеме.

Регулярно удаляйте доступ у людей, которым он больше не нужен. Не создавайте общую учётную запись только ради удобства.

Безопасная интеграция складывается из небольших привычек: не копировать лишнее, не логировать секреты, проверять изменения и быстро реагировать на подозрения.

Проверьте перед следующим шагом

  • Доступ выдан по необходимости.
  • Есть ответственный.
  • Участники знают порядок сообщения об утечке.
  • Проверка проводится после изменений.