amazon-web-services - 如何在不使用 IAM 的情况下允许第三方文件上传到私有(

我能否在不使用 IAM 的情况下允许第 3 方文件上传到 S3 存储桶?我想避免向他们发送 AWS 账户凭证的麻烦,但仍然利用 S3 UI。我只找到了一个或另一个的解决方案。

pre-signed url这个选项听起来不错,但似乎只适用于他们的 SDK,我不会告诉我的客户在他们的计算机上安装 python 来上传文件。

browser based upload要求我制作自己的前端 html 表单并在服务器上运行以上传(笑)。

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

最佳答案

管理控制台

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

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

预签名 URL

您的用户要求 AWS 开发工具包使用预签名 URL。相反,您必须运行您自己的系统来生成预签名 URL 并使其可供用户使用(例如通过网页或 API 调用)。

网页

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

生成...

您问:“我不能简单地创建一个预签名的 url,将用户导航到 S3 控制台并允许他们在到期时间之前上传吗?”

是也不是。是的,您可以生成预签名 URL。但是,它不能与 S3 控制台一起使用(见上文)。

为什么这么复杂?

因为安全很重要。

那么,该怎么办?

几个选项:

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

底线:安全很重要。然而,您希望“避免向他们发送凭据的麻烦”,也不希望运行系统来执行身份验证检查。不做一些工作就无法获得安全性,安全性差的成本将远远高于实现良好安全性的成本。

关于amazon-web-services - 如何在不使用 IAM 的情况下允许第三方文件上传到私有(private) S3 存储桶?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50354904/

相关文章:

ansible - 例如,如何限制 Ansible 的设置模块 (gather_facts) 仅检索

reactjs - 无法使用 axios 和 ReactJS 执行获取请求

python - 使用 bigquery tables GET api 获取表的最后修改日期

android - 使用限制查询 Firebase 数据库

java - Spring boot ConditionalOnBean 注解

python - 如何永远运行异步函数(Python)

typescript - 在 Typescript 中构建 const 键的类型

apache-spark - Spark UI 中的 "red"executors 是什么意思?

wordpress - 使用 AWS RDS 和我自己的数据库哪个最便宜?

intellij-idea - IntelliJ IDEA - 在路径中查找被锁定在另一个窗口监视器