Skip to content
IRC-CodingIRC-Coding
API KeysУправление ключамиБезопасность APIKey RotationSecret ManagementLeast Privilege

Управление API ключами: генерация, хранение и ротация

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

S

schutzgeist

5 min read
Управление API ключами: генерация, хранение и ротация

Управление API ключами

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

Краткое описание

Управление API ключами охватывает весь жизненный цикл: от генерации и хранения до использования, ротации и отзыва. API ключи представляют собой секретные строки, которые клиенты используют для идентификации и частичной авторизации при работе с API. Они просты в реализации, но несут риски при утечке, копировании или длительном неизменном использовании. Правильное управление включает генерацию надёжных уникальных ключей, хранение только их хешей, передачу по TLS, ограничение срока действия и прав, удобную ротацию и немедленный отзыв. Кроме того, ключи должны работать с минимально необходимыми правами, а их использование требует логирования и мониторинга.

Ключевые компоненты

Генерация API ключей

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

Хранение API ключей

На сервере API ключи никогда не должны храниться в открытом виде. Вместо этого сохраняйте хеш ключа, например с использованием SHA-256 или bcrypt, вместе со ссылкой для связи с пользователем. Открытый ключ показывается пользователю только один раз при создании. На клиенте ключи не должны попадать в репозитории, логи или открытые конфигурации.

Передача и транспорт

API ключи всегда должны передаваться по HTTPS. Избегайте передачи в URL, так как они могут появиться в истории браузера, логах и заголовке Referrer. Предпочтительнее использовать заголовок Authorization или специальный заголовок вроде X-API-Key.

Scope и разрешения

API ключам следует предоставлять минимально необходимые разрешения. Ключ только для чтения не должен позволять операции записи. Scope вроде read:users или write:orders помогают ограничить права и снизить риск при компрометации ключа.

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

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

Отзыв и деактивация

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

Логирование и мониторинг

Использование API ключей должно логироваться. Важная информация включает временную метку, IP адрес, используемый ключ, endpoint и результат. Мониторинг выявляет необычные паттерны: скачки трафика, географические аномалии или доступ к неожиданным endpoint-ам.

Secret Management

Для приложений, работающих с API ключами, следует использовать решения Secret Management вроде HashiCorp Vault, AWS Secrets Manager или Azure Key Vault. Эти инструменты хранят секреты в зашифрованном виде, обеспечивают ротацию и предотвращают попадание ключей в исходный код или конфигурации.

Уведомление об утечках

Если API ключ скомпрометирован, его необходимо немедленно отозвать. Также нужно проверить, произошёл ли несанкционированный доступ. Клиентов и внутренние команды необходимо уведомить, а ключ заменить.

Документация и политики

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

Практический пример

SaaS-поставщик предоставляет API ключи клиентам для доступа к API заказов.

Создание нового ключа:

POST /api/v1/api-keys
Authorization: Bearer USER_TOKEN
Content-Type: application/json

{
  "name": "Integration Warehouse",
  "scopes": ["read:orders", "write:shipments"]
}

Ответ:

HTTP/1.1 201 Created
Content-Type: application/json

{
  "keyId": "key-abc-123",
  "key": "sk_live_51H8x...9zA2",
  "scopes": ["read:orders", "write:shipments"],
  "createdAt": "2026-07-01T10:00:00Z",
  "expiresAt": "2027-07-01T10:00:00Z"
}

Открытый ключ показывается только один раз. На сервере сохраняется только его хеш. Клиент использует ключ следующим образом:

GET /api/v1/orders
Authorization: Bearer sk_live_51H8x...9zA2

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

FAQ: управление API ключами

1. Что такое API ключ?

API ключ это секретная строка, которую клиент использует для идентификации и частичной авторизации при работе с API. API ключи просты в реализации, но менее безопасны, чем методы на основе token.

2. Как должен быть сгенерирован API ключ?

API ключ должен быть сгенерирован криптографически стойким генератором случайных чисел, быть длинным и уникальным, не основываться на предсказуемых паттернах. Рекомендуется минимальная длина 32 байта.

3. Должен ли API ключ храниться в открытом виде?

Нет, на сервере должен храниться только хеш ключа. Открытый ключ показывается пользователю только один раз при создании.

4. Что такое ротация API ключа?

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

5. Почему важно иметь возможность отозвать API ключ?

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

6. Что такое scope API ключей?

Scope ограничивают разрешения API ключа. Например, ключ может разрешать только чтение заказов, но не запись. Scope снижают риск при компрометации.

7. Где нужно хранить API ключи на клиенте?

API ключи никогда не должны находиться в открытых репозиториях, клиентском коде или браузерном LocalStorage. Серверные приложения должны использовать инструменты Secret Management.

8. Что такое Secret Management инструмент?

Secret Management инструмент хранит секреты вроде API ключей в зашифрованном виде и управляет доступом, ротацией и мониторингом. Примеры: HashiCorp Vault, AWS Secrets Manager и Azure Key Vault.

9. Как выявить необычное использование API ключа?

Необычное использование выявляется логированием и мониторингом. Подозрительны скачки трафика, географические аномалии, доступ вне обычного времени или к неожиданным endpoint-ам.

10. Что делать при утечке API ключа?

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

11. Стоит ли устанавливать срок действия для API ключей?

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

12. В чём различие между API ключом и OAuth2 token?

API ключ прост и обычно имеет длительный срок действия. OAuth2 token краткосрочный, выдаётся authorization server и поддерживает детализированные разрешения и доступ на основе пользователя.

13. Что такое Key Prefix?

Key Prefix это узнаваемое начало API ключа, вроде sk_live_ или sk_test_. Помогает визуально различать ключи и предотвращает случайное использование в неправильном окружении.

14. Что такое хеш в контексте API ключей?

Хеш это односторонняя функция, преобразующая API ключ в необратимое значение. Сервер сравнивает хеш входящего ключа с сохранённым хешем, не храня сам ключ.

15. Почему API ключи не должны передаваться в URL?

API ключи в URL могут появиться в логах сервера, истории браузера и заголовке Referrer. Лучше передавать их в заголовке Authorization или специальном заголовке по HTTPS.

Источники

  1. https://owasp.org/API-Security/editions/2023/en/0x11-t10/
  2. https://cheatsheetseries.owasp.org/cheatsheets/Key_Management_Cheat_Sheet.html
  3. https://www.vaultproject.io/

Рекомендуемые книги по безопасности API

Если ты хочешь глубже погрузиться в управление API ключами, Secret Management и безопасность API, то мы рекомендуем тебе следующие книги:

Keine Bücher für Kategorie "security" gefunden.

Назад к блогу
Share:

Похожие статьи