Как настроить ключ AWS, связанный с IAM, чтобы ограничить разрешения, доступные клиенту aws-sdk?

#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 по мере необходимости.