Рекомендации по безопасности AppSync для 100% общедоступных, не прошедших проверку подлинности API - PullRequest
1 голос
/ 31 октября 2019

В настоящее время мы выполняем развертывание в AppSync с помощью плагина serverless-appsync и framework-serverless (естественно).

Наш API на 100% открыт и не аутентифицирован. Все запросы и мутации в основном общедоступны, поскольку на данный момент у нас нет нужды в пользователях (например, через пул Cognito).

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

Несколько вещей приходят на ум:

  1. ограничение скорости (в настоящее время не поддерживается AppSyncно я читал это, видимо, в работах). Я не хочу делать это, используя заказное решение в Lambda, например.
  2. , чтобы убедиться, что только трафик с веб-сайта может использовать наш API, в дополнение к нашим собственным разработчикам ... Я мог бы, вероятно,сделать это с помощью преобразователей конвейера, но я не слишком заинтересован в том, чтобы делать это на этом непонятном и громоздком языке VTL.
  3. cors, ...

Я подумываю перейти на Apollo Serverпоскольку это решение кажется более открытым и настраиваемым ...

1 Ответ

0 голосов
/ 05 ноября 2019

Я бы порекомендовал использовать опцию аутентификации IAM в AppSync, а затем использовать Amazon Cognito Identity Pools для предоставления временных учетных данных AWS вашим клиентским приложениям. Пулы удостоверений (в отличие от пулов пользователей) предоставляют временные учетные данные AWS, которые предполагают доступ к роли по вашему выбору. При настройке пула удостоверений вы можете определить роль с полным доступом к API AppSync или можете выборочно предоставлять доступ. В клиентских приложениях вы используете временные учетные данные для подписания запросов к AppSync, используя SigV4 , а AppSync разрешает выполнение только запросов с действительной подписью. Временные учетные данные также обеспечивают дополнительный уровень безопасности, так как даже если они скомпрометированы, каждый учетный учет будет предоставлять доступ только в течение максимально допустимого времени.

Я также добавлю, что вы можете использовать несколько режимов аутентификации одновременнос API AppSync. Это позволяет защитить все поля, как указано выше, а затем выборочно пометить определенные другие поля, чтобы они были авторизованы с помощью какого-либо другого механизма, такого как пулы пользователей или OIDC.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...