Безопасность шлюза API AWS: вывод учетных данных пользователя IAM - PullRequest
0 голосов
/ 16 ноября 2018

Я разработчик, довольно плохо знакомый с подробным использованием AWS. В AWS я реализовал пример потока / приложения без серверной архитектуры. Для уровней используются следующие сервисы: Dynamodb (DB) -Lamda (DAO) -API Gateway (API) -S3 Bucket (Presentation.)

Мне нужно защитить шлюз API.

Как я могу:

  1. Как вывести файл учетных данных пользователя IAM с помощью Javascript SDK вместо ввода пользовательских данных IAM в коде: a) в локальных окнах b) для S3 Bucket.
  2. Если я использую файл учетных данных, как код JavaScript SDK узнает об использовании моей учетной записи AWS? Из учетных данных пользователя IAM?
  3. Есть ли способ создать файл учетных данных с помощью Консоли AWS, я еще не знаю, как использовать CLI AWS?

Я проверил, внедрил и реализовал 3 способа отсюда для безопасности API: https://docs.aws.amazon.com/apigateway/latest/developerguide/apigateway-control-access-to-api.html

1) Пул пользователей Cognito 2) План использования + ключ API 3) Аутентификация пользователя IAM: я устанавливаю AWS_IAM в качестве Типа авторизации для шлюза API. Я создал пользователя IAM, прикрепил политику IAM с разрешением вызывать API. Я последовал за этим: https://docs.aws.amazon.com/apigateway/latest/developerguide/permissions.html и https://docs.aws.amazon.com/apigateway/latest/developerguide/api-gateway-control-access-using-iam-policies-to-invoke-api.html

Мне кажется, что аутентификация пользователя IAM наиболее безопасна, поскольку мы делаем подписанный запрос SigV4. Мой конкретный вопрос здесь касается размещения и получения учетных данных пользователя IAM во внешнем файле, упомянутом в документации как ~ / .aws / credentials. В общем, пожалуйста, ведите меня дальше .

В настоящее время я использую JavaScript SDK, загружается в браузер. В моей локальной системе Windows я создал файл учетных данных в C: \ Users \ USERNAME.aws \ credentials в формате, указанном здесь: https://docs.aws.amazon.com/sdk-for-java/v1/developer-guide/setup-credentials.html

Я пытался использовать Javascript SDK CredentialProviderChain https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/CredentialProviderChain.html#constructor-property

Мой код

var chain = new AWS.CredentialProviderChain();
            chain.resolve(function(err, credentials)
            {
                console.log(err);
                console.log(credentials);
            });

Я получаю ошибку «Нет провайдеров». Я прочитал в комментарии к аналогичному вопросу, что при использовании загрузки Javascript SDK в браузере мы не можем получить учетные данные из файла C: \ Users \ USERNAME .aws \ credentials.

Я прочитал соответствующую документацию AWS, не упоминая здесь.

Примечание. Позже мне нужно реализовать код, который будет использоваться в мобильном приложении. Если я реализую пример с использованием JavaScript, мне нужно направлять разработчика приложений. Я сам не знаю Android.

Обновление В качестве шага вперед в использовании Javascript SDK я нашел эти 2 ссылки, которые я изучаю: https://docs.aws.amazon.com/sdk-for-javascript/v2/developer-guide/setting-credentials-browser.html https://docs.aws.amazon.com/sdk-for-javascript/v2/developer-guide/loading-browser-credentials-cognito.html Обратите внимание, что я хочу использовать аутентификацию IAM, а не аутентификацию Cognito. Нужно ли использовать аутентификацию Cognito, если конечной целью являются мобильные приложения? Пожалуйста, руководство.

Обновление Используя Javascript SDK, я реализовал это: a) Использовал пул идентификаторов b) Использовал Cognito User Pool в качестве провайдера идентификации. в) Написал код для входа в пул пользователей, полученный идентификатор токена. d) Получены временные учетные данные AWS с использованием пула удостоверений.

Таким образом, вопрос заключается в следующем: a) Является ли аутентификация + авторизация с использованием Identity Provider + Identity Pool, единственным способом реализации IAM Security для API Gateway? б) Как реализовать защиту только с использованием учетных данных IAM, т. е. есть ли путь вперед без аутентификации только с использованием авторизации?

...