Перейти к основному содержимому

Сервис API-ключей

Этот сервис позволяет выпускать API-ключи и управлять ими через веб-интерфейс администратора. Конечные пользователи сервисов программного комплекса 2ГИС затем используют предоставленные ключи для получения доступа к установленным сервисам.

Администратор выпускает один или несколько API-ключей для партнёра. Это именованная сущность, которая хранит в себе сгруппированный набор API-ключей. Например, вы можете создать отдельных партнёров для команд разработки на Android и на iOS, независимо управляя ключами для обеих команд. Подробнее см. в разделе Управление доступом к API.

Сервисы программного комплекса 2ГИС, для работы с которыми конечному пользователю необходимы API-ключи:

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

Архитектура

Архитектура сервиса API-ключей

Сервис ключей состоит из двух сервисов: веб-сервиса администратора для выпуска и управления API-ключами и бэкенд-сервиса для взаимодействия с другими сервисами через RESTful API.

Каждый сервис программного комплекса 2ГИС перед выполнением запроса от конечного пользователя отправляет метаданные этого запроса в сервис ключей (включая API-ключ, с которым пришёл запрос). Сервис ключей читает события, связанные с API-ключами, из хранилища Apache Kafka. Дополнительно ведутся счетчики использования ключей, соответствующие данные хранятся в Redis.

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

Примечание:

Поддержка хранилища данных Apache Kafka находится в стадии разработки и будет добавлена в будущих релизах.

Существующая версия работает без Apache Kafka. Таким образом, нельзя настраивать квоты, так как соответствующие метрики не собираются.

Детали архитектуры программного комплекса 2ГИС приведены в документе Архитектура.

Зависимости

Общая инфраструктура:

  • Сервер LDAP для аутентификации пользователей панели администратора. Например, Microsoft Active Directory может выступать в роли сервера LDAP.
  • Хранилище Apache Kafka для чтения событий, связанных с API-ключами. Установка этого хранилища необязательна, если не требуется аудит изменений в сервисе.
  • Хранилище Redis для ведения статистики использования ключей.
  • Хранилище PostgreSQL для хранения ключей и связанных с ними данных.

Подробнее см. в разделе Системные требования.

Что дальше?