如何在不使用IAM的情况下将第三方文件上传到私有S3存储桶?

apd*_*pdm 1 amazon-s3 amazon-web-services

是否可以在不使用IAM的情况下将第三方文件上传到S3存储桶?我想避免为AWS账户发送凭证的麻烦,但仍然可以利用S3 UI。我只找到一种解决方案。

该预标识的URL选项响起了巨大,但似乎只与他们的软件开发工具包的工作,我不是要告诉我的客户在他们的计算机上安装Python来上传文件。

基于浏览器的上载要求我制作自己的前端html表单并在服务器上运行以进行上载(大声笑)。

我是否可以简单地创建一个预签名的URL,该URL将用户导航到S3控制台并允许他们在到期时间之前上传?当然,公开存储桶也不是一种选择。为什么这么复杂!

Joh*_*ein 5

管理控制台

Amazon S3管理控制台将仅显示与用户的AWS账户关联的S3存储桶。此外,也无法限制显示的存储桶(即使用户无法访问,存储桶也会显示帐户中的所有存储桶)。

因此,您当然不想让他们访问您的AWS管理控制台。

预先签署的网址

您的用户也不会要求AWS SDK使用预签名URL。相反,您必须运行自己的系统,该系统会生成预签名的URL并将其提供给用户(例如,通过网页或API调用)。

网页

您可以在Amazon S3上托管静态上传页面,但是它将无法对用户进行身份验证。由于您只希望提供对特定人员的访问权限,因此您需要在后端运行一些代码以对他们进行身份验证。

生成...

您问:“我是否可以简单地创建一个预签名的URL,该URL将用户导航到S3控制台并允许他们在到期之前上传?”

是的,没有。是的,您可以生成一个预签名的URL。但是,它不能与S3控制台一起使用(请参阅上文)。

为什么这么复杂?

因为安全很重要。

那么该怎么办?

一些选择:

  • 使存储桶公开可写,但不公开可读。告诉您的客户如何上传。缺点是任何人都可以上传到存储桶(如果他们知道的话),所以这只是出于默默无闻的安全性。但是,这可能对您来说是一个简单的解决方案。
  • 生成一个寿命很长的预签名URL。您可以创建一个可以使用数月或数年的URL。提供给他们,他们可以上传(例如,通过您给他们的静态HTML页面)。
  • 为它们生成一些IAM用户凭证,然后让它们使用AWS命令行界面(CLI)或Cloudberry之类的实用程序。给他们足够的凭据来进行上传访问。假设您只有几个需要访问的客户。

底线:安全很重要。但是,您不想“避免发送凭据的麻烦”,也不希望运行系统来执行身份验证检查。不做一些工作就无法拥有安全性,而安全性差的代价将比实现良好安全性的代价高得多。