Ограничение доступа к API Gateway (и AWS Lambda) в пакете

У нас есть пакет, которым мы делимся с нашими клиентами. В пакете у нас есть фрагмент кода, который выполняет вызовы HTTP-запросов к нашему центральному шлюзу API. На данный момент наш API-шлюз открыт и принимает запросы отовсюду, что не очень хорошо. Я хочу ограничить доступ для наших пользователей, которые будут использовать наше программное обеспечение. Единственное решение, которое я нашел, - это использование IAM и предоставление авторизации, которая потребует от нас включения наших ключей доступа в пакет. Наши пользователи могут установить наш пакет в любой среде, которую они хотят, и мы не можем контролировать эту среду. Поэтому я думаю, что жизнеспособным вариантом является создание общей пользовательской политики с минимальным доступом, чтобы наши пользователи могли вызывать наш API-шлюз. Однако вставка ключа доступа в код не кажется хорошей идеей. Другой вариант - предоставить нашим клиентам ключи доступа, но это также связано с накладными расходами. Какая альтернатива является более безопасной и простой в обслуживании?


person Jorjani    schedule 06.02.2018    source источник
comment
Взгляните на ключи API на экране консоли Amazon API Gateway.   -  person Zaxxon    schedule 07.02.2018


Ответы (1)


Вы можете использовать встроенные функции API Gateway API Key, когда политики IAM невозможны.

Пока ваши клиенты могут находиться в любой инфраструктуре, а не только в AWS, служба API Gateway предоставляет универсальное решение для ключей API, которое позволяет вам ограничивать клиентский трафик на свой шлюз API, заставляя запросы клиентов включать ключи API. Этот интерфейс ключа API является частью их "План использования API ".

В этом документе объясняется, как использовать консоль для настройки шлюза API для принудительного использования клиентского трафика с ключом API:

Чтобы настроить ключи API, сделайте следующее:

  • Настройте методы API для запроса ключа API.

  • Создайте или импортируйте ключ API для API в регионе.

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

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

В этой статье описывается пример решения для безопасного хранилища секретов (например, безопасного хранилища ключей API), которое предоставляет приложению доступ к секрету приложения, не помещая незашифрованный секрет в исходный код. Он использует Amazon KMS + Cryptex, но тот же принцип может применяться с другими технологиями: http://technologyadvice.github.io/lock-up-your-customer-accounts-give-away-the-key/

person Daniel B.    schedule 07.02.2018