#javascript #amazon-web-services #amazon-s3
#javascript #amazon-веб-сервисы #amazon-s3
Вопрос:
Мы хотели бы ограничить воздействие / риск экземпляра ec2 в случае его взлома. Единственные функции, которые экземпляр должен выполнять, требуя привилегий AWS, — это загрузка в S3. В частности, мы используем aws-sdk
библиотеку в javascript
следующим образом:
let s3 = new AWS.S3({
accessKeyId: ID,
secretAccessKey: SECRET,
region: REGION
});
Затем мы загружаем :
s3.upload(params, function(err, data) {
if (err) {
throw `S3 uploading failed on ${fname} : ${err}`;
}
console.log(`Uploaded ${msgIn.length} bytes to ${fname} successfully at S3 ${data.Location}`);
});
Но этот aws
ключ имеет полные разрешения практически на все в AWS. Мы не можем этого допустить.. Итак, я изучил IAM
— у которого есть правильные ограничения:
Я надеялся создать из этого AWS
ключи доступа IAM role
. Можно ли это сделать? Или есть другой способ использовать aws-sdk
, чтобы получить ограниченные разрешения только для s3 ?
Ответ №1:
См. Использование роли IAM для предоставления разрешений приложениям, работающим в инстансах Amazon EC2.
По сути:
- создайте роль IAM с соответствующими разрешениями
- запустите EC2 (или измените существующий EC2) с этой ролью
- не предоставляйте никаких учетных данных AWS SDK (учетные данные будут получены автоматически)
Комментарии:
1. Спасибо, это полезно, особенно последнее: я не смог найти, как передать временные кредиты: поскольку на самом деле этого не происходит!
2. И эти учетные данные ограничены по времени и будут автоматически меняться, что обеспечивает лучшую безопасность, чем постоянные учетные данные. SDK позаботится об обновлении своей копии creds по мере необходимости.