Я разработчик, довольно плохо знакомый с подробным использованием AWS. В AWS я реализовал пример потока / приложения без серверной архитектуры. Для уровней используются следующие сервисы: Dynamodb (DB) -Lamda (DAO) -API Gateway (API) -S3 Bucket (Presentation.)
Мне нужно защитить шлюз API.
Как я могу:
- Как вывести файл учетных данных пользователя IAM с помощью Javascript SDK вместо ввода пользовательских данных IAM в коде: a) в локальных окнах b) для S3 Bucket.
- Если я использую файл учетных данных, как код JavaScript SDK узнает об использовании моей учетной записи AWS? Из учетных данных пользователя IAM?
- Есть ли способ создать файл учетных данных с помощью Консоли 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, т. е. есть ли путь вперед без аутентификации только с использованием авторизации?