Стратегия использования Kong API
Я хочу использовать Kong в качестве API-шлюза для всех моих вышестоящих сервисов. И я хочу использовать API-ключи, чтобы мои клиенты могли использовать их для использования некоторых API-интерфейсов, которые им разрешено использовать.
Существует плагин для управления ключами API: https://docs.konghq.com/hub/kong-inc/key-auth/
Но мне интересно, могу ли я добавить свойства к некоторому ключу API или связать его с какой-то конфигурацией.
Позвольте мне объяснить на примере:
У меня 3 apis
- API 1
- API 2
- API 3
На Kong API Gateway я хочу использовать ограничение скорости. Поэтому я хочу сгенерировать ключи API для 2 клиентов с некоторыми свойствами
- customer X: базовая подписка с ограничением скорости 10 запросов в минуту для API 1 и 20 запросов в минуту для API 2
- customer Y: премиум-подписка на API 2 с ограничением скорости 5000 запросов в минуту и 1000 запросов в минуту для API 3
Поэтому в Конге я создаю 3 сервиса для этих 3 API и добавляю к этому плагин ограничения скорости. Есть ли способ сообщить плагину ограничения скорости (основываясь на ключе API, отправляемом в запросе), какой лимит он должен использовать для только что введенного запроса?
Мне кажется, что мне нужно каждый раз создавать новые сервисы для одних и тех же API с определенным ограничением скорости и определенным значением. Это кажется немного неуправляемым, когда имеешь дело с большим количеством клиентов и API.
Можно ли получить значение ограничения скорости на основе ключа API, который был передан?
Или есть какое-то решение для этого? Или это фактическое поведение, которое мы хотим в шлюзе API, если да, то почему?
0 ответов
Kong Enterprise Edition имеет плагин под названием " Ограничение скорости", который решает эту проблему. Он позволяет вам указать "идентификатор" для каждого плагина ограничения скорости, а для этого конкретного случая вы будете использовать "идентификатор: потребитель". Если вы хотите два разных ограничения скорости для одного и того же API и разных потребителей, например,
- API2: потребитель X имеет 20 об / мин
- API2: потребительский имеет 5000 оборотов в минуту
тогда вы должны настроить ограничение скорости на потребителя, а не на API. Кроме того, в своем вопросе вы имеете в виду apis
; FYI api
начиная с версии v0.13.0, объекты устарели, и вам следует перейти к route/service
объекты.
Вы также можете настраивать плагины на уровне потребителя. Это эффективно применяет правильную ограниченную скорость для каждого потребителя (ключ api).
Пример кода из документации:
$ curl -X POST http://kong:8001/consumers/{consumer}/plugins \
--data "name=rate-limiting" \
\
--data "config.second=5" \
--data "config.hour=10000"
Документация: https://docs.konghq.com/hub/kong-inc/rate-limiting/