如何仅允许特定用户访问Amazon S3上的内容

时间:2017-09-27 07:54:58

标签: angular amazon-web-services amazon-s3 amazon-ec2 elastic-beanstalk

我是Amazon S3的新手。我需要一些S3存储解决方案的帮助。这是我的问题。

我在Amazon S3中创建了一个存储桶。现在每个人都可以访问我的存储桶网址(例如https://BUCKET_NAME.s3.amazonaws.com),他们可以看到存储桶中的所有文件。我只希望我的移动应用用户能够查看/查看/下载存储桶中的文件。但是如果我阻止文件/将存储桶中的文件设置为私有,我的移动应用程序用户将无法查看他/她的文件。

所以问题是:

  • 有没有办法保护对AWS S3的访问?或者我如何只允许特定用户访问Amazon S3上的内容?它是服务器端身份验证还是别的什么?

如果你知道怎么做,你能告诉我一个例子吗?谢谢:))

注意:我正在使用Parse JavaScript SDK,AWS S3,AWS EC2,Elastic beanstalk和Ionic 2与Angular 2。

如果您认为我错过了任何细节,请告诉我,以便我可以添加:)

2 个答案:

答案 0 :(得分:5)

有多种选项可用于保护特定用户的访问权限。

  • 如果您使用的是AWS Cognito,则可以使用AWS JavaScript SDK通过IAM策略授予对S3中特定存储桶和对象的访问权限,并在使用Angular应用程序直接从AWS Cognito(或通过Cognito联合)进行身份验证后临时访问您收到的凭据
  • 您还可以使用AWS CloudFront Signed UrlsSigned Cookies来保护对S3对象的访问。要使用后端端点(对于经过身份验证的用户)访问内容,您可以生成签名URL或签名Cookie,Angular应用程序将使用它来通过CloudFront访问S3。
  • 另一种选择是从服务器端访问S3并返回文件(与其他方法相比,这将大大增加服务器的开销,因此除非您有特定方案动态修改文件或内容,否则不建议这样做在检索之前)
  • 您还可以使用AWS API Gateway作为S3的代理来提供文件。此处适用10MB文件大小限制,因为API网关最多可以传输10MB文件。

答案 1 :(得分:1)

您可以通过S3桶访问特定的IAM角色。因此,创建一个新用户并将IAM策略附加到该用户。使用该角色配置Lambda。如果需要,您可以创建多个角色,具体取决于每种用户类型(例如: - 移动用户的唯一角色,桌面用户的另一个角色等)

请详细了解如何限制Amazon S3 Bucket访问特定IAM角色here