Фон
Я создал несколько микросервисов с облачными функциями и запуском в облаке. Прямо сейчас, используя Cloud Endpoints, я могу безопасно запускать все свои службы с помощью ключа API. Однако я хотел бы иметь возможность контролировать, к какой микросервисе разрешен доступ каждому ключу API. Я хочу использовать только один ключ API для пользователя .
Пример
Допустим, я создаю торговый API, в целях безопасности, когда клиент создает ключ API, он может выбрать, разрешено ли ключу API только читать данные (например: смотреть рыночные цены) или читать и записывать данные (например: смотреть рыночные цены и затем размещать заказы). Пользователь может легко изменить свои права доступа к ключу API.
Я не создаю ничего более чувствительного, чем торговый API, но это очень хороший пример того, что я пытаюсь сделать.
Исследование
Я видел похожий пост . В принятом ответе предлагалось два решения:
Использование Auth0 и программная проверка авторизации пользователя Мне нужно отслеживать использование моих конечных точек API для каждого ключа API. Более того, безопасности ключей API для моего случая достаточно.
Ключи API Мне удалось ограничить свои ключи API для доступа к API Cloud Endpoints, однако я не вижу возможности разрешить только доступ к моему ключу некоторые пути API Cloud Endpoints.
Я также считаю, что такая услуга, как Apigee , может делать то, что мне нужно, но у меня небольшой бюджет (PO C), поэтому я не думаю, что это услуга для меня, и я бы предпочел использовать только продукты GCP.
Вопрос
Предлагает ли Cloud Endpoints готовое решение для моего использования кейс ? Если да, что мне делать?
Если нет, можно ли:
создать другой прокси-сервер с помощью облачных функций, который будет проверять по базе данных Firestore, ключу API разрешен доступ к запрошенному методу? Лог c будет выглядеть следующим образом: Пользовательский запрос с предоставленным Google ключом API -> Утверждение конечных точек облака -> Утверждение настраиваемой функции прокси -> выполнение микросервиса
Настройте ESP в соответствии с моими вариант использования
Самостоятельно управлять всей аутентификацией API (кажется, много работы)