Web应用程序通常如何与Amazon S3交互?

问题描述 投票:1回答:1

我是S3的新手,我想知道现实世界的Web应用程序通常如何与它交互,特别是如何处理用户访问权限。

比如说,我设计了一个基本的项目管理Web应用程序,除其他功能外,它允许用户将项目文件上传到其他项目成员可以访问的共享空间。

因此,用户文件上载/读取访问权限将由项目成员资格确定,但也由项目角色确定。

使用S3,只需为具有所有权限的单个S3用户创建整个应用程序的Bucket,并将用户权限的处理留给应用程序?或者我错过了什么?我无法在网上找到许多实际S3使用的例子,特别是在涉及访问权限的情况下。

amazon-web-services amazon-s3 authorization
1个回答
2
投票

典型的架构是将Amazon S3存储桶完全保密。

当您的应用程序确定允许用户上载或下载文件时,它可以生成Presigned URL。这是一个限时URL,允许上传或下载对象。

上传时,Create a POST Policy也可以对上传强制执行某些限制,例如长度,类型和存储位置。如果上传符合要求,则接受该文件。

您应该维护一个数据库,该数据库标识已上载的所有对象并将其映射到“所有者”,权限组,共享等。所有这些都是特定于应用程序的。稍后,当用户请求下载特定对象时,您的应用程序可以生成预先签名的URL,该URL允许用户下载该对象,即使它是私有对象。

始终让您的应用程序确定访问对象的权限。不要将应用程序用户定义为IAM用户。

如果存在直接的权限模型(例如,一个用户的所有文件都位于S3存储桶中的一个路径/文件夹中),则可以使用AWS Security Token Service生成临时凭证,该服务授予给定路径上的List和Get权限。这对于可以直接调用Amazon S3 API以检索对象的移动应用程序非常有用。但是,它不适合基于Web的应用程序。

© www.soinside.com 2019 - 2024. All rights reserved.